<?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>128681</bug_id>
          
          <creation_ts>2014-02-12 12:39:52 -0800</creation_ts>
          <short_desc>Replace uses of PassOwnPtr/OwnPtr with std::unique_ptr in WebCore/inspector</short_desc>
          <delta_ts>2014-02-17 12:29:55 -0800</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>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>
          
          <blocked>128007</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sergio Correia (qrwteyrutiyoup)">sergio</reporter>
          <assigned_to name="Sergio Correia (qrwteyrutiyoup)">sergio</assigned_to>
          <cc>bunhere</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>979973</commentid>
    <comment_count>0</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-02-12 12:39:52 -0800</bug_when>
    <thetext>Replace uses of PassOwnPtr/OwnPtr with std::unique_ptr in WebCore/inspector</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979974</commentid>
    <comment_count>1</comment_count>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-02-12 12:42:21 -0800</bug_when>
    <thetext>Another step towards getting rid of PassOwnPtr/OwnPtr, now targeting
WebCore/inspector/*. Besides files in there, a few other files in
JavaScriptCore/inspector, WebKit2/WebProcess/WebCoreSupport/ and
WebCore/testing were touched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>979975</commentid>
    <comment_count>2</comment_count>
      <attachid>223995</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-02-12 12:43:40 -0800</bug_when>
    <thetext>Created attachment 223995
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980335</commentid>
    <comment_count>3</comment_count>
      <attachid>224081</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-02-13 09:51:11 -0800</bug_when>
    <thetext>Created attachment 224081
v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980367</commentid>
    <comment_count>4</comment_count>
      <attachid>224087</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-02-13 10:52:58 -0800</bug_when>
    <thetext>Created attachment 224087
v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>980504</commentid>
    <comment_count>5</comment_count>
      <attachid>224122</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-02-13 15:37:11 -0800</bug_when>
    <thetext>Created attachment 224122
v4...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981460</commentid>
    <comment_count>6</comment_count>
      <attachid>224369</attachid>
    <who name="Sergio Correia (qrwteyrutiyoup)">sergio</who>
    <bug_when>2014-02-17 08:13:23 -0800</bug_when>
    <thetext>Created attachment 224369
v6 - this might build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981617</commentid>
    <comment_count>7</comment_count>
      <attachid>224369</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 12:29:53 -0800</bug_when>
    <thetext>Comment on attachment 224369
v6 - this might build

Clearing flags on attachment: 224369

Committed r164245: &lt;http://trac.webkit.org/changeset/164245&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>981618</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-02-17 12:29:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>223995</attachid>
            <date>2014-02-12 12:43:40 -0800</date>
            <delta_ts>2014-02-13 09:51:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-128681-20140212174348.patch</filename>
            <type>text/plain</type>
            <size>71918</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTYzOTY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NmNjOGIzZDQwODM2ZDI5YzE1NTEwOWJjMTdhMjU0Y2NjNTM5YTQxLi4xNzJhNDBlNDdjZWJkMTMy
MmZlYWYzNGI5YWNkMzIyOTllMTU1OWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAxNC0wMi0xMiAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMg
Z2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAg
V2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIg
ZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvIGFuZAorICAgICAgICBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0
b3VjaGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg6CisKIDIwMTQtMDItMTIg
IFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2luZG93cyBidWls
ZCBmaXggYXR0ZW1wdCBhZnRlciByMTYzOTYwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDVjZjczODg0OGVhYjYx
OWI4NWNkNzUxMTZmZWY5ODQ5NTZlMTkxNWUuLjlkM2I2Y2NhMjZlNWUwYjE2ZWRlZTZjODEyNDM4
ZTU2N2M4MzRmNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NyBAQAorMjAxNC0wMi0xMiAgU2Vy
Z2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJl
cGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBX
ZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9P
d25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRl
cyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvIGFuZAor
ICAgICAgICBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0czsgbm8gbmV3IGJlaGF2aW9yLgorCisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9E
T01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQu
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxl
ckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5Lmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
cklucHV0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VS
dW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuY3BwOgorCiAyMDE0LTAyLTEyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNv
cmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW9kZXJuaXplIG1pc3Nl
ZCBpbnNwZWN0b3IgZmlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBiZTg1M2IzMWQ4ZjViNzc0MDdiY2U1ODk3
NDdjYjVlZmQwNDY0NDhkLi45MmUzYTVjMTQ0MWI3ODFhYjYzMzEwMzk4ZGYwNzQ1OGU0YTVjNjVm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDItMTIgIFNlcmdpbyBDb3JyZWlh
ICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXBsYWNlIHVzZXMg
b2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNw
ZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
ODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFu
b3RoZXIgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBub3cg
dGFyZ2V0aW5nCisgICAgICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMgaW4g
dGhlcmUsIGEgZmV3IG90aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2luc3Bl
Y3RvciwgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LyBhbmQKKyAgICAgICAgV2Vi
Q29yZS90ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOgorCiAyMDE0LTAyLTEyICBE
YW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgU3RvcCB1c2luZyBQTEFU
Rk9STShNQUMpIGluIFdlYktpdDIve0RhdGFiYXNlLE5ldHdvcmt9UHJvY2VzcyBleGNlcHQgd2hl
cmUgaXQgbWVhbnMg4oCcT1MgWCBidXQgbm90IGlPU+KAnQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKaW5k
ZXggOGYxZjkxY2YxYzc1MWQxMTViNTdjM2Q5MTgzNjRmZTdiMzZhNDFjMi4uZjE1OTlmNzdhYzMx
OTkwNTE5MjQwN2FmODRjMTY5M2I5ODA5MDg1YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwCkBAIC04
Miw3ICs4Miw3IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj4gZ2V0UmVn
dWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKCiAgICAgaWYgKHRleHQuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+
PiBlbmRpbmdzKGxpbmVFbmRpbmdzKHRleHQpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PHNpemVfdD4+IGVuZGluZ3MobGluZUVuZGluZ3ModGV4dCkpOwogICAgIHNpemVfdCBzaXplID0g
ZW5kaW5ncy0+c2l6ZSgpOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICBmb3IgKHNpemVf
dCBsaW5lTnVtYmVyID0gMDsgbGluZU51bWJlciA8IHNpemU7ICsrbGluZU51bWJlcikgewpAQCAt
MTAwLDkgKzEwMCw5IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj4gZ2V0
UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3Ry
aW5nJiB0ZXh0KQorc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhj
b25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+PiByZXN1bHQo
YWRvcHRQdHIobmV3IFZlY3RvcjxzaXplX3Q+KCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IHN0ZDo6
bWFrZV91bmlxdWU8VmVjdG9yPHNpemVfdD4+KCk7CiAKICAgICB1bnNpZ25lZCBzdGFydCA9IDA7
CiAgICAgd2hpbGUgKHN0YXJ0IDwgdGV4dC5sZW5ndGgoKSkgewpAQCAtMTE1LDcgKzExNSw3IEBA
IFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYgdGV4
dCkKICAgICB9CiAgICAgcmVzdWx0LT5hcHBlbmQodGV4dC5sZW5ndGgoKSk7CiAKLSAgICByZXR1
cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNo
PiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcm
IGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaAppbmRleCAzZWFhMDY2NDFjM2RhNTQxYjc5ZGI0
YmU0OWQ1N2QyMjA3ZDI3Mzg3Li4yYmMyZDNjN2MwZGQyZGUyZjFjMjJhM2MyZGI2ZmExMWE2YjMy
MmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuaApAQCAtNDgsNyArNDgsNyBAQCBKU19FWFBPUlRfUFJJVkFU
RSBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KGNvbnN0IFN0
cmluZyYgcQogSlNfRVhQT1JUX1BSSVZBVEUgaW50IGNvdW50UmVndWxhckV4cHJlc3Npb25NYXRj
aGVzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBjb25zdCBTdHJpbmcmKTsK
IEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+IHNl
YXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcmIHF1ZXJ5
LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CiBKU19FWFBP
UlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChzaXplX3Qgb2Zm
c2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwotSlNfRVhQT1JUX1BSSVZB
VEUgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJik7
CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVF
bmRpbmdzKGNvbnN0IFN0cmluZyYpOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZmluZFNj
cmlwdFNvdXJjZVVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogSlNfRVhQT1JUX1BSSVZBVEUg
U3RyaW5nIGZpbmRTY3JpcHRTb3VyY2VNYXBVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IGRiNmY5MTA2Y2RlNmRhMTZhOGVlY2U5
NDViN2Q5YjJlYTQ4OWU3ZWEuLjcyZjYwYzFmMjQyOTc1OGU1ZjczMWY0MjM0MTgzNzlhYjk1ZmZi
ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtMzYsOCArMzYsNiBAQAog
I2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3JpcHRPYmpl
Y3QuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRy
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTEzMCw3
ICsxMjgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29s
ZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cAogICAgICAgICBjbGVhck1lc3NhZ2Vz
KCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2UoYWRvcHRQdHIobmV3IENv
bnNvbGVNZXNzYWdlKCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3Nh
Z2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50aWZpZXIpKSk7CisgICAgYWRkQ29uc29sZU1lc3Nh
Z2Uoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oIWlzV29ya2VyQWdlbnQoKSwgc291
cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRpZmllcikp
OwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShN
ZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVs
LCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUGFzc1JlZlB0
cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRp
ZmllcikKQEAgLTE0Myw3ICsxNDEsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRk
TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cAogICAgICAg
ICBjbGVhck1lc3NhZ2VzKCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2Uo
YWRvcHRQdHIobmV3IENvbnNvbGVNZXNzYWdlKCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKSkp
OworICAgIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+
KCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50
cywgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29uc29s
ZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdl
VHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwgY29u
c3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVzdElkZW50
aWZpZXIpCkBAIC0xNTcsNyArMTU1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFk
ZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXAKICAgICB9
CiAKICAgICBib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrID0gIWlzV29ya2VyQWdlbnQoKSAmJiBt
X2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBhZGRDb25zb2xlTWVzc2FnZShhZG9wdFB0cihuZXcg
Q29uc29sZU1lc3NhZ2UoY2FuR2VuZXJhdGVDYWxsU3RhY2ssIHNvdXJjZSwgdHlwZSwgbGV2ZWws
IG1lc3NhZ2UsIHNjcmlwdElELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRlLCByZXF1
ZXN0SWRlbnRpZmllcikpKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVl
PENvbnNvbGVNZXNzYWdlPihjYW5HZW5lcmF0ZUNhbGxTdGFjaywgc291cmNlLCB0eXBlLCBsZXZl
bCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJl
cXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIFZlY3Rvcjx1bnNpZ25lZD4gSW5zcGVjdG9yQ29uc29s
ZUFnZW50Ojpjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzKCkgY29uc3QKQEAgLTIyOSw3ICsy
MjcsNyBAQCBzdGF0aWMgYm9vbCBpc0dyb3VwTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBlKQogICAg
ICAgICB8fCB0eXBlID09IE1lc3NhZ2VUeXBlOjpFbmRHcm91cDsKIH0KIAotdm9pZCBJbnNwZWN0
b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3Nh
Z2U+IGNvbnNvbGVNZXNzYWdlKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNv
bGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2Up
CiB7CiAgICAgQVNTRVJUKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JFbnZpcm9u
bWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUX0FSRyhjb25zb2xl
TWVzc2FnZSwgY29uc29sZU1lc3NhZ2UpOwpAQCAtMjQwLDcgKzIzOCw3IEBAIHZvaWQgSW5zcGVj
dG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNz
YWdlPiBjb25zb2xlCiAgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+dXBkYXRlUmVwZWF0
Q291bnRJbkNvbnNvbGUobV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCkpOwogICAgIH0gZWxzZSB7
CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29sZU1lc3NhZ2UuZ2V0KCk7Ci0gICAg
ICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7CisgICAgICAgIG1f
Y29uc29sZU1lc3NhZ2VzLmFwcGVuZChzdGQ6Om1vdmUoY29uc29sZU1lc3NhZ2UpKTsKICAgICAg
ICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKICAgICAgICAgICAgIG1f
cHJldmlvdXNNZXNzYWdlLT5hZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmREaXNwYXRjaGVyLmdldCgp
LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuaAppbmRleCA0OWE3OWU2M2QzOTk4ZmEzOGEwNDExNWJjYzU4YzdmMTVkMmY4M2Ey
Li5mODU3ZmM3OGE2YmI0NzhlODI2NGVmOGE1ODc3MDBiZDY4YzhjOGI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuaApAQCAtODMsMTMgKzgzLDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
dW50KEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsKIAogcHJv
dGVjdGVkOgotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0cjxDb25zb2xlTWVz
c2FnZT4pOworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPENvbnNv
bGVNZXNzYWdlPik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JDb25zb2xlRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yQ29u
c29sZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIENvbnNvbGVN
ZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKLSAgICBWZWN0b3I8T3duUHRyPENvbnNvbGVNZXNz
YWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxDb25z
b2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOwogICAgIGludCBtX2V4cGlyZWRDb25zb2xl
TWVzc2FnZUNvdW50OwogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9jb3VudHM7CiAg
ICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4gbV90aW1lczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggZjQwNGE1MmZlYmVmMTExZjgy
Nzk3YmMxYWRhMjJhOTE3YjBmNTE1YS4uMWUwZmFkMzdmYTc5OGYyYmFlYjc3MTFiN2Y0MjA2NGM5
M2FlNGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5l
QVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJ
SG9zdC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgQ29tbWFuZExpbmVBUElIb3N0OjpDb21tYW5kTGlu
ZUFQSUhvc3QoKQogICAgICwgbV9kYXRhYmFzZUFnZW50KG51bGxwdHIpCiAjZW5kaWYKIHsKLSAg
ICBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0YWJsZU9i
amVjdCk7CisgICAgbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3QgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RhYmxlT2JqZWN0PigpOwogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6On5Db21tYW5k
TGluZUFQSUhvc3QoKQpAQCAtMTI0LDkgKzEyNCw5IEBAIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVl
IENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4ZWNTdGF0
CiAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiB9OwogCi12b2lkIENvbW1h
bmRMaW5lQVBJSG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8Q29tbWFuZExpbmVB
UElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQordm9pZCBDb21tYW5kTGluZUFQSUhv
c3Q6OmFkZEluc3BlY3RlZE9iamVjdChzdGQ6OnVuaXF1ZV9wdHI8Q29tbWFuZExpbmVBUElIb3N0
OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQogewotICAgIG1faW5zcGVjdGVkT2JqZWN0cy5p
bnNlcnQoMCwgb2JqZWN0KTsKKyAgICBtX2luc3BlY3RlZE9iamVjdHMuaW5zZXJ0KDAsIHN0ZDo6
bW92ZShvYmplY3QpKTsKICAgICB3aGlsZSAobV9pbnNwZWN0ZWRPYmplY3RzLnNpemUoKSA+IDUp
CiAgICAgICAgIG1faW5zcGVjdGVkT2JqZWN0cy5yZW1vdmVMYXN0KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKaW5kZXggMDhmMGMxNWQ2MWVj
MWYwMDE4ZDg4ZWU3NzM4MWFlMGY1ZDhjNzJhYS4uNjE3OGVlZWMyOGU3ZjlkY2Q4MWU1MDI1YjBj
ZGQ4YWM2N2I2ODBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGlu
ZUFQSUhvc3QuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgICAgIHZpcnR1
YWwgfkluc3BlY3RhYmxlT2JqZWN0KCkgeyB9CiAgICAgfTsKLSAgICB2b2lkIGFkZEluc3BlY3Rl
ZE9iamVjdChQYXNzT3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7CisgICAgdm9pZCBhZGRJbnNw
ZWN0ZWRPYmplY3Qoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7CiAgICAgdm9p
ZCBjbGVhckluc3BlY3RlZE9iamVjdHMoKTsKICAgICBJbnNwZWN0YWJsZU9iamVjdCogaW5zcGVj
dGVkT2JqZWN0KHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIGluc3BlY3RJbXBsKFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNzUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKQEAgLTExNSw4ICsxMTUsOCBAQCBw
cml2YXRlOgogICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIG1fZGF0YWJhc2VBZ2VudDsKICNl
bmRpZgogCi0gICAgVmVjdG9yPE93blB0cjxJbnNwZWN0YWJsZU9iamVjdD4+IG1faW5zcGVjdGVk
T2JqZWN0czsKLSAgICBPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+IG1fZGVmYXVsdEluc3BlY3Rh
YmxlT2JqZWN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdGFibGVPYmplY3Q+
PiBtX2luc3BlY3RlZE9iamVjdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RhYmxlT2Jq
ZWN0PiBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXggN2YyZmFiOGJi
NmU3MWFiYjg5ZDMyOTZjZDIwYTIzYmZmODBhZjllMy4uYjkxMmQxNGVmNmQ4Y2Y2ZTI0MmIxOWU1
NjQyOTQ0NmFlOGI5MWIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TUVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAK
QEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2Vw
dGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+cGFyZW50
Tm9kZSgpKSB7Ci0gICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gYWRvcHRQdHIobmV3
IFJlbW92ZUNoaWxkQWN0aW9uKG1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUuZ2V0KCkpKTsK
KyAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFJlbW92
ZUNoaWxkQWN0aW9uPihtX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlLmdldCgpKTsKICAgICAg
ICAgICAgIGlmICghbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVyZm9ybShlYykpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAgcHJpdmF0
ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9wYXJlbnROb2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX25v
ZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1fYW5jaG9yTm9kZTsKLSAgICBPd25QdHI8UmVtb3ZlQ2hp
bGRBY3Rpb24+IG1fcmVtb3ZlQ2hpbGRBY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRyPFJlbW92
ZUNoaWxkQWN0aW9uPiBtX3JlbW92ZUNoaWxkQWN0aW9uOwogfTsKIAogY2xhc3MgRE9NRWRpdG9y
OjpSZW1vdmVBdHRyaWJ1dGVBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9u
IHsKQEAgLTIwOCw4ICsyMDgsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9uZXh0U2libGluZyhu
b2RlLm5leHRTaWJsaW5nKCkpCiAgICAgICAgICwgbV9odG1sKGh0bWwpCiAgICAgICAgICwgbV9u
ZXdOb2RlKG51bGxwdHIpCi0gICAgICAgICwgbV9oaXN0b3J5KGFkb3B0UHRyKG5ldyBJbnNwZWN0
b3JIaXN0b3J5KCkpKQotICAgICAgICAsIG1fZG9tRWRpdG9yKGFkb3B0UHRyKG5ldyBET01FZGl0
b3IobV9oaXN0b3J5LmdldCgpKSkpCisgICAgICAgICwgbV9oaXN0b3J5KHN0ZDo6bWFrZV91bmlx
dWU8SW5zcGVjdG9ySGlzdG9yeT4oKSkKKyAgICAgICAgLCBtX2RvbUVkaXRvcihzdGQ6Om1ha2Vf
dW5pcXVlPERPTUVkaXRvcj4obV9oaXN0b3J5LmdldCgpKSkKICAgICB7CiAgICAgfQogCkBAIC0y
NDIsOCArMjQyLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9odG1sOwogICAgIFN0cmluZyBt
X29sZEhUTUw7CiAgICAgTm9kZSogbV9uZXdOb2RlOwotICAgIE93blB0cjxJbnNwZWN0b3JIaXN0
b3J5PiBtX2hpc3Rvcnk7Ci0gICAgT3duUHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKIH07CiAKIGNsYXNzIERPTUVkaXRvcjo6
UmVwbGFjZVdob2xlVGV4dEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24g
ewpAQCAtMzUyLDI5ICszNTIsMjkgQEAgRE9NRWRpdG9yOjp+RE9NRWRpdG9yKCkgeyB9CiAKIGJv
b2wgRE9NRWRpdG9yOjppbnNlcnRCZWZvcmUoTm9kZSogcGFyZW50Tm9kZSwgUGFzc1JlZlB0cjxO
b2RlPiBub2RlLCBOb2RlKiBhbmNob3JOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBy
ZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBJbnNlcnRCZWZvcmVBY3Rpb24o
cGFyZW50Tm9kZSwgbm9kZSwgYW5jaG9yTm9kZSkpLCBlYyk7CisgICAgcmV0dXJuIG1faGlzdG9y
eS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFyZW50Tm9k
ZSwgbm9kZSwgYW5jaG9yTm9kZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnJlbW92ZUNo
aWxkKE5vZGUqIHBhcmVudE5vZGUsIE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewot
ICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlbW92ZUNoaWxkQWN0
aW9uKHBhcmVudE5vZGUsIG5vZGUpKSwgZWMpOworICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZv
cm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwgbm9kZSks
IGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnNldEF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50
LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldEF0
dHJpYnV0ZUFjdGlvbihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpLCBlYyk7CisgICAgcmV0dXJuIG1f
aGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlvbj4oZWxl
bWVudCwgbmFtZSwgdmFsdWUpLCBlYyk7CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpyZW1vdmVBdHRy
aWJ1dGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZW1v
dmVBdHRyaWJ1dGVBY3Rpb24oZWxlbWVudCwgbmFtZSkpLCBlYyk7CisgICAgcmV0dXJuIG1faGlz
dG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlvbj4oZWxl
bWVudCwgbmFtZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnNldE91dGVySFRNTChOb2Rl
JiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqKiBuZXdOb2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICBPd25QdHI8U2V0T3V0ZXJIVE1MQWN0aW9uPiBhY3Rpb24gPSBhZG9wdFB0
cihuZXcgU2V0T3V0ZXJIVE1MQWN0aW9uKG5vZGUsIGh0bWwpKTsKKyAgICBhdXRvIGFjdGlvbiA9
IHN0ZDo6bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsKICAgICBT
ZXRPdXRlckhUTUxBY3Rpb24qIHJhd0FjdGlvbiA9IGFjdGlvbi5nZXQoKTsKLSAgICBib29sIHJl
c3VsdCA9IG1faGlzdG9yeS0+cGVyZm9ybShhY3Rpb24ucmVsZWFzZSgpLCBlYyk7CisgICAgYm9v
bCByZXN1bHQgPSBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptb3ZlKGFjdGlvbiksIGVjKTsKICAg
ICBpZiAocmVzdWx0KQogICAgICAgICAqbmV3Tm9kZSA9IHJhd0FjdGlvbi0+bmV3Tm9kZSgpOwog
ICAgIHJldHVybiByZXN1bHQ7CkBAIC0zODIsMTcgKzM4MiwxNyBAQCBib29sIERPTUVkaXRvcjo6
c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSoqIG5ld05v
ZGUsIEV4YwogCiBib29sIERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0KiB0ZXh0Tm9k
ZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICByZXR1cm4g
bV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZXBsYWNlV2hvbGVUZXh0QWN0aW9uKHRl
eHROb2RlLCB0ZXh0KSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6
bWFrZV91bmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQpLCBlYyk7
CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSogcGFyZW50Tm9kZSwgUGFz
c1JlZlB0cjxOb2RlPiBuZXdOb2RlLCBOb2RlKiBvbGROb2RlLCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZXBsYWNlQ2hp
bGROb2RlQWN0aW9uKHBhcmVudE5vZGUsIG5ld05vZGUsIG9sZE5vZGUpKSwgZWMpOworICAgIHJl
dHVybiBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hpbGROb2Rl
QWN0aW9uPihwYXJlbnROb2RlLCBuZXdOb2RlLCBvbGROb2RlKSwgZWMpOwogfQogCiBib29sIERP
TUVkaXRvcjo6c2V0Tm9kZVZhbHVlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQ
dHIobmV3IFNldE5vZGVWYWx1ZUFjdGlvbihub2RlLCB2YWx1ZSkpLCBlYyk7CisgICAgcmV0dXJu
IG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldE5vZGVWYWx1ZUFjdGlvbj4o
bm9kZSwgdmFsdWUpLCBlYyk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlRXJyb3JTdHJpbmco
Y29uc3QgRXhjZXB0aW9uQ29kZSYgZWMsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggOTQzZTE4YTFh
M2IzN2NhZTIzOWNlNDBlNmNjZTNkOThmMjcwNzNkYS4uZjZhMzhjNTA5ZDI1OWVjYmRkZmIzYTBm
Y2FlNGQ4YTMyZThlMmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNo
U3VwcG9ydC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IERPTVBhdGNoU3VwcG9ydDo6RGln
ZXN0IHsKICAgICBTdHJpbmcgbV9zaGExOwogICAgIFN0cmluZyBtX2F0dHJzU0hBMTsKICAgICBO
b2RlKiBtX25vZGU7Ci0gICAgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiBtX2NoaWxkcmVuOworICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4gbV9jaGlsZHJlbjsKIH07CiAKIHZvaWQg
RE9NUGF0Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3Qg
U3RyaW5nJiBtYXJrdXApCkBAIC0xMDUsOCArMTA1LDggQEAgdm9pZCBET01QYXRjaFN1cHBvcnQ6
OnBhdGNoRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAgICAgcGFyc2VyLT5maW5pc2go
KTsKICAgICBwYXJzZXItPmRldGFjaCgpOwogCi0gICAgT3duUHRyPERpZ2VzdD4gb2xkSW5mbyA9
IGNyZWF0ZURpZ2VzdChtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgbnVsbHB0cik7Ci0g
ICAgT3duUHRyPERpZ2VzdD4gbmV3SW5mbyA9IGNyZWF0ZURpZ2VzdChuZXdEb2N1bWVudC0+ZG9j
dW1lbnRFbGVtZW50KCksICZtX3VudXNlZE5vZGVzTWFwKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGlnZXN0PiBvbGRJbmZvID0gY3JlYXRlRGlnZXN0KG1fZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpLCBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0PiBuZXdJbmZvID0gY3Jl
YXRlRGlnZXN0KG5ld0RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgJm1fdW51c2VkTm9kZXNN
YXApOwogCiAgICAgaWYgKCFpbm5lclBhdGNoTm9kZShvbGRJbmZvLmdldCgpLCBuZXdJbmZvLmdl
dCgpLCBJR05PUkVfRVhDRVBUSU9OKSkgewogICAgICAgICAvLyBGYWxsIGJhY2sgdG8gcmV3cml0
ZS4KQEAgLTEzMywxMyArMTMzLDEzIEBAIE5vZGUqIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hOb2Rl
KE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2RlCiAKICAgICAv
LyBDb21wb3NlIHRoZSBvbGQgbGlzdC4KICAgICBDb250YWluZXJOb2RlKiBwYXJlbnROb2RlID0g
bm9kZS5wYXJlbnROb2RlKCk7Ci0gICAgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiBvbGRMaXN0Owor
ICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4gb2xkTGlzdDsKICAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGls
ZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgb2xkTGlzdC5hcHBlbmQoY3JlYXRlRGlnZXN0KGNo
aWxkLCBudWxscHRyKSk7CiAKICAgICAvLyBDb21wb3NlIHRoZSBuZXcgbGlzdC4KICAgICBTdHJp
bmcgbWFya3VwQ29weSA9IG1hcmt1cC5sb3dlcigpOwotICAgIFZlY3RvcjxPd25QdHI8RGlnZXN0
Pj4gbmV3TGlzdDsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+IG5ld0xpc3Q7
CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IHBhcmVudE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQg
IT0gJm5vZGU7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG5ld0xpc3Qu
YXBwZW5kKGNyZWF0ZURpZ2VzdChjaGlsZCwgbnVsbHB0cikpOwogICAgIGZvciAoTm9kZSogY2hp
bGQgPSBmcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+bmV4dFNp
YmxpbmcoKSkgewpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgRE9NUGF0Y2hTdXBwb3J0Ojppbm5l
clBhdGNoTm9kZShEaWdlc3QqIG9sZERpZ2VzdCwgRGlnZXN0KiBuZXdEaWdlc3QsIEV4Y2VwCiB9
CiAKIHN0ZDo6cGFpcjxET01QYXRjaFN1cHBvcnQ6OlJlc3VsdE1hcCwgRE9NUGF0Y2hTdXBwb3J0
OjpSZXN1bHRNYXA+Ci1ET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxE
aWdlc3Q+PiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgbmV3TGlzdCkK
K0RPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2Vz
dD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+JiBuZXdM
aXN0KQogewogICAgIFJlc3VsdE1hcCBuZXdNYXAobmV3TGlzdC5zaXplKCkpOwogICAgIFJlc3Vs
dE1hcCBvbGRNYXAob2xkTGlzdC5zaXplKCkpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIERPTVBhdGNo
U3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0LCBjb25z
dCBWZWN0b3I8T3duUHRyCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG9sZE1hcCwgbmV3TWFw
KTsKIH0KIAotYm9vbCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWlu
ZXJOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0
LCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBuZXdMaXN0LCBFeGNlcHRpb25Db2RlJiBl
YykKK2Jvb2wgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4oQ29udGFpbmVyTm9k
ZSogcGFyZW50Tm9kZSwgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiYgb2xk
TGlzdCwgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiYgbmV3TGlzdCwgRXhj
ZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgc3RkOjpwYWlyPFJlc3VsdE1hcCwgUmVzdWx0TWFwPiBy
ZXN1bHRNYXBzID0gZGlmZihvbGRMaXN0LCBuZXdMaXN0KTsKICAgICBSZXN1bHRNYXAmIG9sZE1h
cCA9IHJlc3VsdE1hcHMuZmlyc3Q7CkBAIC00MDcsMTAgKzQwNyw5IEBAIHN0YXRpYyB2b2lkIGFk
ZFN0cmluZ1RvU0hBMShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAgICBzaGEx
LmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNTdHJpbmcuZGF0YSgp
KSwgY1N0cmluZy5sZW5ndGgoKSk7CiB9CiAKLVBhc3NPd25QdHI8RE9NUGF0Y2hTdXBwb3J0OjpE
aWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5vZGUsIFVudXNlZE5v
ZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKK3N0ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1cHBvcnQ6
OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwgVW51c2Vk
Tm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQogewotICAgIERpZ2VzdCogZGlnZXN0ID0gbmV3IERp
Z2VzdChub2RlKTsKLQorICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxEaWdlc3Q+
KG5vZGUpOwogICAgIFNIQTEgc2hhMTsKIAogICAgIE5vZGU6Ok5vZGVUeXBlIG5vZGVUeXBlID0g
bm9kZS0+bm9kZVR5cGUoKTsKQEAgLTQyMSwxMCArNDIwLDEwIEBAIFBhc3NPd25QdHI8RE9NUGF0
Y2hTdXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5v
ZGUsIFVuCiAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9OT0RFKSB7
CiAgICAgICAgIE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwogICAgICAgICB3aGls
ZSAoY2hpbGQpIHsKLSAgICAgICAgICAgIE93blB0cjxEaWdlc3Q+IGNoaWxkSW5mbyA9IGNyZWF0
ZURpZ2VzdChjaGlsZCwgdW51c2VkTm9kZXNNYXApOworICAgICAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPERpZ2VzdD4gY2hpbGRJbmZvID0gY3JlYXRlRGlnZXN0KGNoaWxkLCB1bnVzZWROb2Rlc01h
cCk7CiAgICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoc2hhMSwgY2hpbGRJbmZvLT5tX3NoYTEp
OwogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKLSAgICAgICAgICAg
IGRpZ2VzdC0+bV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRJbmZvLnJlbGVhc2UoKSk7CisgICAgICAg
ICAgICBkaWdlc3QtPm1fY2hpbGRyZW4uYXBwZW5kKHN0ZDo6bW92ZShjaGlsZEluZm8pKTsKICAg
ICAgICAgfQogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUpOwogCkBA
IC00NDUsOCArNDQ0LDkgQEAgUGFzc093blB0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9N
UGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwgVW4KICAgICBzaGExLmNvbXB1
dGVIYXNoKGhhc2gpOwogICAgIGRpZ2VzdC0+bV9zaGExID0gYmFzZTY0RW5jb2RlKGhhc2guZGF0
YSgpLCAxMCk7CiAgICAgaWYgKHVudXNlZE5vZGVzTWFwKQotICAgICAgICB1bnVzZWROb2Rlc01h
cC0+YWRkKGRpZ2VzdC0+bV9zaGExLCBkaWdlc3QpOwotICAgIHJldHVybiBhZG9wdFB0cihkaWdl
c3QpOworICAgICAgICB1bnVzZWROb2Rlc01hcC0+YWRkKGRpZ2VzdC0+bV9zaGExLCBkaWdlc3Qu
Z2V0KCkpOworCisgICAgcmV0dXJuIGRpZ2VzdDsKIH0KIAogYm9vbCBET01QYXRjaFN1cHBvcnQ6
Omluc2VydEJlZm9yZUFuZE1hcmtBc1VzZWQoQ29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSwgRGln
ZXN0KiBkaWdlc3QsIE5vZGUqIGFuY2hvciwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmgKaW5kZXggYWQ1NDQ4NDg3NjRkYjc5YzVi
YjA5MmNlN2QxZmNiNDg3YTExZmI0YS4uNmE5NjBlODVkZWY1NzYyZjFlMjIyZWI2NjdjNjE5MjE0
MzA3MjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaApA
QCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCkBAIC02NSw5ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgdHlwZWRlZiBI
YXNoTWFwPFN0cmluZywgRGlnZXN0Kj4gVW51c2VkTm9kZXNNYXA7CiAKICAgICBib29sIGlubmVy
UGF0Y2hOb2RlKERpZ2VzdCogb2xkTm9kZSwgRGlnZXN0KiBuZXdOb2RlLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgc3RkOjpwYWlyPFJlc3VsdE1hcCwgUmVzdWx0TWFwPiBkaWZmKGNvbnN0IFZlY3Rv
cjxPd25QdHI8RGlnZXN0Pj4mIG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2Vz
dD4+JiBuZXdDaGlsZHJlbik7Ci0gICAgYm9vbCBpbm5lclBhdGNoQ2hpbGRyZW4oQ29udGFpbmVy
Tm9kZSosIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG9sZENoaWxkcmVuLCBjb25zdCBW
ZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBuZXdDaGlsZHJlbiwgRXhjZXB0aW9uQ29kZSYpOwotICAg
IFBhc3NPd25QdHI8RGlnZXN0PiBjcmVhdGVEaWdlc3QoTm9kZSosIFVudXNlZE5vZGVzTWFwKik7
CisgICAgc3RkOjpwYWlyPFJlc3VsdE1hcCwgUmVzdWx0TWFwPiBkaWZmKGNvbnN0IFZlY3Rvcjxz
dGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4mIG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8c3RkOjp1
bmlxdWVfcHRyPERpZ2VzdD4+JiBuZXdDaGlsZHJlbik7CisgICAgYm9vbCBpbm5lclBhdGNoQ2hp
bGRyZW4oQ29udGFpbmVyTm9kZSosIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0
Pj4mIG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+JiBu
ZXdDaGlsZHJlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+
IGNyZWF0ZURpZ2VzdChOb2RlKiwgVW51c2VkTm9kZXNNYXAqKTsKICAgICBib29sIGluc2VydEJl
Zm9yZUFuZE1hcmtBc1VzZWQoQ29udGFpbmVyTm9kZSosIERpZ2VzdCosIE5vZGUqIGFuY2hvciwg
RXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgcmVtb3ZlQ2hpbGRBbmRNb3ZlVG9OZXcoRGlnZXN0
KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgbWFya05vZGVBc1VzZWQoRGlnZXN0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25D
YWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRp
b25DYWNoZUFnZW50LmgKaW5kZXggNTJkOGUwZWRlNWQ1NWM1MjM4YmNkNjI3ZGUxOTVmNjVhNjBl
YWVkYS4uYTljNzY0Mjg4NzEyNWQ3Y2I3MGRhNTBhOTI0NTk3MTYxZjNmOGQxZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tl
bmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hl
cnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0
aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA5MzM5YmJhN2ZmZTBmMDcyYmI3YzBlMzdjYmMx
M2ZmZWY0ODVlODliLi5iZGMyYzljN2Y5OTIwN2UzMTRjMTE5OTRiM2I2M2NlNmYwZjdjZWRhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKQEAg
LTE2NSw3ICsxNjUsNyBAQCB2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnRpbWVyRmlyZWQo
VGltZXI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4mKQogICAgIGlmICghbV9uYW1lZEZsb3dzLmlz
RW1wdHkoKSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25l
U2hvdCgwKTsKIH0KLSAgICAKKwogY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2sgewogcHVi
bGljOgogICAgIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKEluc3BlY3RvckNTU0FnZW50Kik7CkBA
IC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zY2hlZHVsZShXZWJLaXROYW1l
ZEZsb3cqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCB0aW1lckZpcmVkKFRpbWVyPENo
YW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiYpOwotICAgIAorCiBwcml2YXRlOgogICAgIEluc3BlY3Rv
ckNTU0FnZW50KiBtX2Nzc0FnZW50OwogICAgIFRpbWVyPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNr
PiBtX3RpbWVyOwpAQCAtMTg5LDcgKzE4OSw3IEBAIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpD
aGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQpCiB2b2lk
IENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZsb3cqIG5h
bWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQogewogICAgIG1fbmFtZWRGbG93cy5hZGQobmFt
ZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgCisKICAgICBpZiAoIW1fdGltZXIuaXNBY3Rp
dmUoKSkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CkBAIC0yNjYsNyArMjY2
LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlNldFN0eWxlU2hl
ZXRUZXh0ICVzIiwgbV9zdHlsZVNoZWV0LT5pZCgpLnV0ZjgoKS5kYXRhKCkpOwogICAgIH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBtZXJnZShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9uKSBvdmVycmlk
ZQorICAgIHZpcnR1YWwgdm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24p
IG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoYWN0aW9uLT5tZXJnZUlkKCkgPT0gbWVy
Z2VJZCgpKTsKIApAQCAtMzEwLDcgKzMxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0
cmluZzo6Zm9ybWF0KCJTZXRTdHlsZVRleHQgJXM6JXUiLCBtX3N0eWxlU2hlZXQtPmlkKCkudXRm
OCgpLmRhdGEoKSwgbV9jc3NJZC5vcmRpbmFsKCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9p
ZCBtZXJnZShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9uKSBvdmVycmlkZQorICAgIHZpcnR1YWwg
dm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRlCiAgICAg
ewogICAgICAgICBBU1NFUlQoYWN0aW9uLT5tZXJnZUlkKCkgPT0gbWVyZ2VJZCgpKTsKIApAQCAt
MzY5LDcgKzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJT
ZXRQcm9wZXJ0eVRleHQgJXM6JXU6JXMiLCBtX3N0eWxlU2hlZXQtPmlkKCkudXRmOCgpLmRhdGEo
KSwgbV9wcm9wZXJ0eUluZGV4LCBtX292ZXJ3cml0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtZXJnZShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9uKSBv
dmVycmlkZQorICAgIHZpcnR1YWwgdm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBh
Y3Rpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoYWN0aW9uLT5tZXJnZUlkKCkg
PT0gbWVyZ2VJZCgpKTsKIApAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZs
b3cqCiAKICAgICBpZiAobV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQogICAgICAgICBtX3VwZGF0
ZVJlZ2lvbkxheW91dFRhc2stPnVuc2NoZWR1bGUobmFtZWRGbG93KTsKLSAgICAKKwogICAgIGlm
IChtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKQogICAgICAgICBtX2NoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrLT51bnNjaGVkdWxlKG5hbWVkRmxvdyk7CiAKQEAgLTU5Niw3ICs1OTYsNyBAQCB2b2lk
IEluc3BlY3RvckNTU0FnZW50OjpkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBXZWJLaXROYW1lZEZsbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fdXBkYXRl
UmVnaW9uTGF5b3V0VGFzaykKLSAgICAgICAgbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrID0gYWRv
cHRQdHIobmV3IFVwZGF0ZVJlZ2lvbkxheW91dFRhc2sodGhpcykpOworICAgICAgICBtX3VwZGF0
ZVJlZ2lvbkxheW91dFRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVJlZ2lvbkxheW91dFRh
c2s+KHRoaXMpOwogICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzay0+c2NoZWR1bGVGb3IobmFt
ZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7CiB9CiAKQEAgLTYxNiw5ICs2MTYsOSBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50KiBkb2N1bWVu
dCwgV2ViS2l0TmFtZWRGbAogICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50Tm9kZVdp
dGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKICAgICBpZiAoIWRvY3VtZW50Tm9kZUlkKQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIW1fY2hhbmdlUmVnaW9uT3ZlcnNldFRh
c2spCi0gICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2sgPSBhZG9wdFB0cihuZXcgQ2hh
bmdlUmVnaW9uT3ZlcnNldFRhc2sodGhpcykpOworICAgICAgICBtX2NoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFuZ2VSZWdpb25PdmVyc2V0VGFzaz4odGhpcyk7
CiAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzay0+c2NoZWR1bGVGb3IobmFtZWRGbG93LCBk
b2N1bWVudE5vZGVJZCk7CiB9CiAKQEAgLTYyNiwxMCArNjI2LDEwIEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93
LCBpbnQgZG9jCiB7CiAgICAgaWYgKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2ViS2l0TmFt
ZWRGbG93OjpGbG93U3RhdGVOdWxsKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBFcnJv
clN0cmluZyBlcnJvclN0cmluZzsKICAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBwcm90ZWN0KCpu
YW1lZEZsb3cpOwotICAgIAorCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlZ2lvbk92ZXJz
ZXRDaGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFtZWRGbG93
LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBTZXRTdHls
ZVNoZWV0VGV4dEFjdGlvbihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSksIGVjKTsKKyAgICBt
X2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRTdHlsZVNo
ZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCksIGVjKTsKICAgICAqZXJy
b3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKQEAg
LTgxNyw3ICs4MTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcAogICAgICAgICByZXR1cm47
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFn
ZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldFN0eWxlVGV4dEFjdGlvbihp
bnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSksIGVjKTsKKyAgICBib29sIHN1
Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxT
ZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQp
LCBlYyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxl
U2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+c3R5bGVGb3JJ
ZChjb21wb3VuZElkKSk7CiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRv
RXJyb3JTdHJpbmcoZWMpOwpAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJv
b2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcg
U2V0UHJvcGVydHlUZXh0QWN0aW9uKGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHBy
b3BlcnR5SW5kZXgsIHRleHQsIG92ZXJ3cml0ZSkpLCBlYyk7CisgICAgYm9vbCBzdWNjZXNzID0g
bV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0UHJvcGVy
dHlUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBwcm9wZXJ0eUlu
ZGV4LCB0ZXh0LCBvdmVyd3JpdGUpLCBlYyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJl
c3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9y
U3R5bGVTaGVldC0+c3R5bGVGb3JJZChjb21wb3VuZElkKSk7CiAgICAgKmVycm9yU3RyaW5nID0g
SW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwpAQCAtODQ5LDcgKzg0OSw3IEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgUmVmUHRyPEluCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+
cGVyZm9ybShhZG9wdFB0cihuZXcgVG9nZ2xlUHJvcGVydHlBY3Rpb24oaW5zcGVjdG9yU3R5bGVT
aGVldCwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgZGlzYWJsZSkpLCBlYyk7CisgICAgYm9v
bCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlx
dWU8VG9nZ2xlUHJvcGVydHlBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQs
IHByb3BlcnR5SW5kZXgsIGRpc2FibGUpLCBlYyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAg
IHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVj
dG9yU3R5bGVTaGVldC0+c3R5bGVGb3JJZChjb21wb3VuZElkKSk7CiAgICAgKmVycm9yU3RyaW5n
ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwpAQCAtODY1LDcgKzg2NSw3
IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3Rvcnko
KS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0UnVsZVNlbGVjdG9yQWN0aW9uKGluc3BlY3RvclN0
eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSksIGVjKTsKKyAgICBib29sIHN1Y2Nlc3Mg
PSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRSdWxl
U2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9y
KSwgZWMpOwogCiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJlc3VsdCA9IGluc3BlY3RvclN0
eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5ydWxlRm9y
SWQoY29tcG91bmRJZCkpOwpAQCAtODg1LDkgKzg4NSw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29udGV4dE5v
ZGVJCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgT3duUHRyPEFkZFJ1
bGVBY3Rpb24+IGFjdGlvbiA9IGFkb3B0UHRyKG5ldyBBZGRSdWxlQWN0aW9uKGluc3BlY3RvclN0
eWxlU2hlZXQsIHNlbGVjdG9yKSk7CisgICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKICAgICBBZGRS
dWxlQWN0aW9uKiByYXdBY3Rpb24gPSBhY3Rpb24uZ2V0KCk7Ci0gICAgYm9vbCBzdWNjZXNzID0g
bV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFjdGlvbi5yZWxlYXNlKCksIGVjKTsKKyAg
ICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptb3Zl
KGFjdGlvbiksIGVjKTsKICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgKmVycm9yU3RyaW5n
ID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmluZGV4IDEw
YjRmZTkxZjgyOTBhNDczZWU4NDZhNDM5Y2JiNjc4N2RiMTE1YjkuLjIwYjNjMTUwNzU5ODk5Nzg4
MzM5YzkzNjI0OTBmYjUwMjFmOWZkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xODEsOCArMTgxLDggQEAgcHJpdmF0ZToKICAgICBEb2N1
bWVudFRvVmlhSW5zcGVjdG9yU3R5bGVTaGVldCBtX2RvY3VtZW50VG9JbnNwZWN0b3JTdHlsZVNo
ZWV0OwogICAgIE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUgbV9ub2RlSWRUb0ZvcmNlZFBzZXVk
b1N0YXRlOwogICAgIEhhc2hTZXQ8aW50PiBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVxdWVzdGVk
OwotICAgIE93blB0cjxVcGRhdGVSZWdpb25MYXlvdXRUYXNrPiBtX3VwZGF0ZVJlZ2lvbkxheW91
dFRhc2s7Ci0gICAgT3duUHRyPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGVSZWdpb25MYXlvdXRUYXNr
PiBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPENoYW5nZVJl
Z2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogCiAgICAgaW50IG1f
bGFzdFN0eWxlU2hlZXRJZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IGE5YTM4ZTIzN2JmNWIwOGE4YjllOTAwMmI0YzE5YmU2
ZjE5MDgyMDQuLmZiZTMyYzIzZmQ3YzUxYWNkMTUzYTNhNjgzMTg4ZjljZmRjNjgzODMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCkBAIC0z
OSw3ICszOSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5j
bHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOTAzZDdkNWYxMDMyZDM0MDZmNGMyY2ZkZjk2NDdl
MWQzNDQ5Yjc3Yi4uMTFkYzIzOTQyZWM4NzkwYjA0NjY1YzIzNGY3NWU3M2E0ZTExYWMyYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05
Niw3ICs5Niw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5o
PgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0
Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CkBAIC0yMzYsOCArMjM1LDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRl
RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmQKICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJvbnRlbmRE
aXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJ
bnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRjaGVyLCB0
aGlzKTsKIAotICAgIG1faGlzdG9yeSA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JIaXN0b3J5KCkp
OwotICAgIG1fZG9tRWRpdG9yID0gYWRvcHRQdHIobmV3IERPTUVkaXRvcihtX2hpc3RvcnkuZ2V0
KCkpKTsKKyAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+
KCk7CisgICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4obV9oaXN0
b3J5LmdldCgpKTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRE9N
QWdlbnQodGhpcyk7CiAgICAgbV9kb2N1bWVudCA9IG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKS0+
ZG9jdW1lbnQoKTsKQEAgLTI1MSw4ICsyNTAsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojp3
aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKQog
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyLmNsZWFyKCk7CiAKLSAgICBtX2hpc3RvcnkuY2xlYXIoKTsKLSAgICBtX2RvbUVkaXRvci5j
bGVhcigpOworICAgIG1faGlzdG9yeS5yZXNldCgpOworICAgIG1fZG9tRWRpdG9yLnJlc2V0KCk7
CiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBzZXRTZWFyY2hpbmdGb3JOb2RlKCZlcnJv
ciwgZmFsc2UsIDApOwpAQCAtNTg0LDcgKzU4Myw3IEBAIGludCBJbnNwZWN0b3JET01BZ2VudDo6
cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICBOb2RlKiBw
YXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CiAgICAgICAgIGlmICghcGFyZW50KSB7CiAg
ICAgICAgICAgICAvLyBOb2RlIGJlaW5nIHB1c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNoIHN1YnRy
ZWUgcm9vdC4KLSAgICAgICAgICAgIE93blB0cjxOb2RlVG9JZE1hcD4gbmV3TWFwID0gYWRvcHRQ
dHIobmV3IE5vZGVUb0lkTWFwKTsKKyAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gc3RkOjptYWtl
X3VuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0gbmV3TWFw
LmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQobmV3TWFw
LnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4gPSBJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5v
ZGU+OjpjcmVhdGUoKTsKQEAgLTEwMzIsMTQgKzEwMzEsMTQgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGJvb2wg
ZW5hYmwKICAgICBtX292ZXJsYXktPmRpZFNldFNlYXJjaGluZ0Zvck5vZGUobV9zZWFyY2hpbmdG
b3JOb2RlKTsKIH0KIAotUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpCitzdGQ6
OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0
Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEluc3Bl
Y3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewogICAgIGlmICghaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBl
cnJvcjogaGlnaGxpZ2h0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlzIG1pc3NpbmciOwogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmln
PiBoaWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOworICAg
IGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+
KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxzZSAoZG8gbm90
IHNob3cgYSB0b29sdGlwKS4KICAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdldEJvb2xl
YW4oInNob3dJbmZvIiwgJnNob3dJbmZvKTsKICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZv
ID0gc2hvd0luZm87CkBAIC0xMDUxLDcgKzEwNTAsNyBAQCBQYXNzT3duUHRyPEhpZ2hsaWdodENv
bmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmpl
YwogICAgIGhpZ2hsaWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29uZmlnQ29sb3IoInBhZGRp
bmdDb2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGlnaGxpZ2h0Q29uZmln
LT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKCJib3JkZXJDb2xvciIsIGhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJnaW4gPSBwYXJzZUNvbmZpZ0Nv
bG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Ci0gICAgcmV0dXJu
IGhpZ2hsaWdodENvbmZpZy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsK
IH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
T2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKQpAQCAtMTA2MSwyNyArMTA2MCwyNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBib29sIGVuYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRSZWN0
KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewot
ICAgIE93blB0cjxGbG9hdFF1YWQ+IHF1YWQgPSBhZG9wdFB0cihuZXcgRmxvYXRRdWFkKEZsb2F0
UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSkpOwotICAgIGlubmVySGlnaGxpZ2h0UXVhZChxdWFk
LnJlbGVhc2UoKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAg
ICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHks
IHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjptb3ZlKHF1YWQp
LCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCiB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
Y29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcXVhZEFycmF5LCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRs
aW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBPd25QdHI8
RmxvYXRRdWFkPiBxdWFkID0gYWRvcHRQdHIobmV3IEZsb2F0UXVhZCgpKTsKKyAgICBhdXRvIHF1
YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChx
dWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnZhbGlk
IFF1YWQgZm9ybWF0IjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpbm5lckhpZ2hsaWdo
dFF1YWQocXVhZC5yZWxlYXNlKCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGlu
YXRlcyk7CisgICAgaW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6bW92ZShxdWFkKSwgY29sb3IsIG91
dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKK3Zv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8
RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVz
ZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGln
aHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOworICAgIGF1dG8gaGln
aGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAg
aGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgaGlnaGxp
Z2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAg
ICBoaWdobGlnaHRDb25maWctPnVzZVBhZ2VDb29yZGluYXRlcyA9IHVzZVBhZ2VDb29yZGluYXRl
cyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMgOiBmYWxzZTsKLSAgICBtX292ZXJsYXktPmhpZ2hsaWdo
dFF1YWQocXVhZCwgKmhpZ2hsaWdodENvbmZpZyk7CisgICAgbV9vdmVybGF5LT5oaWdobGlnaHRR
dWFkKHN0ZDo6bW92ZShxdWFkKSwgKmhpZ2hsaWdodENvbmZpZyk7CiB9CiAKIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBjb25z
dCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCkKQEAgLTEwOTksNyArMTA5OCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zCiAgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBoaWdo
bGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KGVycm9yU3RyaW5nLCBoaWdobGlnaHRJbnNw
ZWN0b3JPYmplY3QuZ2V0KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+
IGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoZXJy
b3JTdHJpbmcsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC5nZXQoKSk7CiAgICAgaWYgKCFoaWdo
bGlnaHRDb25maWcpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTExNCw3ICsxMTEzLDcgQEAgdm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoCiB7CiAgICAgRnJhbWUqIGZyYW1l
ID0gbV9wYWdlQWdlbnQtPmZyYW1lRm9ySWQoZnJhbWVJZCk7CiAgICAgaWYgKGZyYW1lICYmIGZy
YW1lLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBo
aWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOworICAgICAg
ICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmln
PigpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlz
IHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250
ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVu
dE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CkBAIC0xNjQyLDcgKzE2NDEsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5vZGUqIG5v
ZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFz
aykKLSAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IGFkb3B0UHRyKG5ldyBSZXZh
bGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrKHRoaXMpKTsKKyAgICAgICAgbV9yZXZhbGlkYXRlU3R5
bGVBdHRyVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFz
az4odGhpcyk7CiAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+c2NoZWR1bGVGb3IodG9F
bGVtZW50KG5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuaAppbmRleCBmYTQxYzdmYTU1MjI2OTk4MjAwZTVhMTkxZmRmNTg2YTYyNjBkNGE1
Li43ZDMzYmJlOGFmMzc3ODIyMWYwMzJkNGYwZTRlNTFlNjRmYzE2ZWY5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNDEsOCArNDEsNiBAQAog
I2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Zl
Y3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtMjEzLDcgKzIx
MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldFNlYXJjaGluZ0Zvck5vZGUo
RXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBo
aWdobGlnaHRDb25maWcpOwotICAgIFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGln
aHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgc3RkOjp1bmlxdWVf
cHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChF
cnJvclN0cmluZyosIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0
b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlwZWRlZiBI
YXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKQEAgLTI0MSw3ICsyMzksNyBA
QCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKIAotICAgIHZvaWQgaW5u
ZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5h
dGVzKTsKKyAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRR
dWFkPiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29u
c3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAogICAgIEluc3BlY3RvclBhZ2VBZ2VudCog
bV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyOwpAQCAtMjUzLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgQmFja2VuZE5vZGVJZD4gTm9kZVRvQmFja2VuZElk
TWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBOb2RlVG9CYWNrZW5kSWRNYXA+IG1fbm9kZUdyb3Vw
VG9CYWNrZW5kSWRNYXA7CiAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBkYW5nbGluZyBu
b2Rlcy4KLSAgICBWZWN0b3I8T3duUHRyPE5vZGVUb0lkTWFwPj4gbV9kYW5nbGluZ05vZGVUb0lk
TWFwczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE5vZGVUb0lkTWFwPj4gbV9kYW5nbGlu
Z05vZGVUb0lkTWFwczsKICAgICBIYXNoTWFwPGludCwgTm9kZSo+IG1faWRUb05vZGU7CiAgICAg
SGFzaE1hcDxpbnQsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CiAgICAgSGFzaFNldDxp
bnQ+IG1fY2hpbGRyZW5SZXF1ZXN0ZWQ7CkBAIC0yNjMsMTIgKzI2MSwxMiBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICB0eXBlZGVmIEhhc2hNYXA8U3Ry
aW5nLCBWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gU2VhcmNoUmVzdWx0czsKICAgICBTZWFyY2hSZXN1
bHRzIG1fc2VhcmNoUmVzdWx0czsKLSAgICBPd25QdHI8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRl
VGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmV2
YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKICAg
ICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBib29sIG1fc2VhcmNoaW5nRm9yTm9k
ZTsKLSAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29u
ZmlnOwotICAgIE93blB0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7Ci0gICAgT3duUHRy
PERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENv
bmZpZz4gbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZzsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxET01FZGl0
b3I+IG1fZG9tRWRpdG9yOwogICAgIGJvb2wgbV9zdXBwcmVzc0F0dHJpYnV0ZU1vZGlmaWVkRXZl
bnQ7CiAgICAgYm9vbCBtX2RvY3VtZW50UmVxdWVzdGVkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGViZTI2
NjUwYWRiNmZhY2I4ZGVmMDczNzU5MzRhMmJlOTNlZWQ4MDIuLmZiOGY3OTg2MmRmMDg4NWY0OTM4
NzkzNzU3NTU3NjAwNDRiM2NjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtMzcsNyArMzcsNiBAQAogI2luY2x1
ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRl
ZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXggNWFkMmI3
ZTExZjRkMDk5ZmQyMmVlZjMzZjBmZWM2YjI4M2MwYmU4Ni4uZjdkYWQzMjg0YmI4NGQyNWNhMzRh
OTFkY2JlODZmNGM5NTAyZjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIlN0b3JhZ2VBcmVh
LmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9y
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFz
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5oCmluZGV4IDMyMjk2MDc1N2MzYjQ5Y2E2NDQ0OTNkYzRjOWNhYWIxMzZhN2M3ZWIuLjQ1ZGRk
YzRlODViMDVkZGIxZjhkNWU5NjY2MWI2OTdmZjhkMzk4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtMzUsNyArMzUsNiBA
QAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCmluZGV4
IDRlODViYzUzMjk5NWVkNWRkYTk0OTY4NmM0ZGI2YWQwZGVhOWY4ZDAuLmJmMTc5MTg0OGJiMWJj
NDg4YTYxNzMzNTUzY2RjYjk1NmEyZDEzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTExNiwx
NSArMTE2LDE1IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M6
OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0CiB7CiB9CiAKLUluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9y
Q29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBQYXNz
T3duUHRyPFNldHRpbmdzPiBzZXR0aW5ncykKK0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVj
dG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGlu
Z3M+IHNldHRpbmdzKQogICAgIDogbV9pbnNwZWN0b3JDb250cm9sbGVyKGluc3BlY3RvckNvbnRy
b2xsZXIpCiAgICAgLCBtX2Zyb250ZW5kUGFnZShmcm9udGVuZFBhZ2UpCi0gICAgLCBtX3NldHRp
bmdzKHNldHRpbmdzKQorICAgICwgbV9zZXR0aW5ncyhzdGQ6Om1vdmUoc2V0dGluZ3MpKQogICAg
ICwgbV9mcm9udGVuZExvYWRlZChmYWxzZSkKICAgICAsIG1fZG9ja1NpZGUoVU5ET0NLRUQpCiB7
CiAgICAgbV9mcm9udGVuZFBhZ2UtPnNldHRpbmdzKCkuc2V0QWxsb3dGaWxlQWNjZXNzRnJvbUZp
bGVVUkxzKHRydWUpOwotICAgIG1fZGlzcGF0Y2hUYXNrID0gYWRvcHRQdHIobmV3IEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaFRhc2soaW5zcGVjdG9yQ29udHJvbGxlcikpOworICAgIG1fZGlzcGF0
Y2hUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hUYXNrPihp
bnNwZWN0b3JDb250cm9sbGVyKTsKIH0KIAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6
fkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXggZWQyY2Zi
MTBkMGMwOWEzZjAyNjhjZTE2YzNmYTJmOGZlNzc3OTNhOS4uMmY2MzdiMGYyNjBlNWI4ZDFjZjVl
OTc1YWYwZGY0ZTE3ZTY2YTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC01NSw5ICs1NSw5IEBAIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgfTsKIAotICAgIEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2UqLCBQYXNzT3duUHRyPFNldHRp
bmdzPik7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250cm9s
bGVyKiwgUGFnZSosIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4pOwogICAgIHZpcnR1YWwgfklu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCB3
aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5k
TG9hZGVkKCkgb3ZlcnJpZGU7CiAKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAgIHZvaWQg
c2hvd0NvbnNvbGUoKTsKIAogICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1lKEZyYW1l
Kik7Ci0gICAgCisKICAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKIAogICAgIHZvaWQgc2V0QXR0
YWNoZWRXaW5kb3coRG9ja1NpZGUpOwpAQCAtMTE3LDExICsxMTcsMTEgQEAgcHJpdmF0ZToKICAg
ICBQYWdlKiBtX2Zyb250ZW5kUGFnZTsKICAgICAvLyBUT0RPKHl1cnlzKTogdGhpcyByZWYgc2hv
dWxkbid0IGJlIG5lZWRlZC4KICAgICBSZWZQdHI8SW5zcGVjdG9yRnJvbnRlbmRIb3N0PiBtX2Zy
b250ZW5kSG9zdDsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M+IG1fc2V0dGluZ3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWw6OlNldHRpbmdzPiBtX3NldHRpbmdzOwogICAgIGJvb2wgbV9mcm9udGVuZExv
YWRlZDsKICAgICBEb2NrU2lkZSBtX2RvY2tTaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+IG1fZXZh
bHVhdGVPbkxvYWQ7Ci0gICAgT3duUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaFRhc2s+IG1f
ZGlzcGF0Y2hUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hUYXNrPiBtX2Rpc3BhdGNoVGFzazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFn
ZW50LmgKaW5kZXggZTQxN2MzY2IwYTQzNTg4MzFiZDU3YWU4NzhjZDAyNTlmMDdhNGI2ZC4uZTdk
OWZmZGEyYzhiMzRlZDU4MmViNGU5NjcwMzJlYjJhMDVhNzVhMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKQEAgLTM5
LDcgKzM5LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhp
c3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3Bw
CmluZGV4IGJjZmVmNGE0YjVjNzdjMmQyYTUyZDA2NjIxYzZhZDRlZjA5ZDQ1ZDAuLjg3M2E4Zjk1
YjRmZjYyODMwODY0Y2JlMmViZTA1Njc2ZTBkOTNjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgU3RyaW5nIElu
c3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6bWVyZ2VJZCgpCiAgICAgcmV0dXJuICIiOwogfQogCi12
b2lkIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6bWVyZ2UoUGFzc093blB0cjxBY3Rpb24+KQor
dm9pZCBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb246Om1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rp
b24+KQogewogfQogCkBAIC04NywxNiArODcsMTYgQEAgSW5zcGVjdG9ySGlzdG9yeTo6SW5zcGVj
dG9ySGlzdG9yeSgpIDogbV9hZnRlckxhc3RBY3Rpb25JbmRleCgwKSB7IH0KIAogSW5zcGVjdG9y
SGlzdG9yeTo6fkluc3BlY3Rvckhpc3RvcnkoKSB7IH0KIAotYm9vbCBJbnNwZWN0b3JIaXN0b3J5
OjpwZXJmb3JtKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQor
Ym9vbCBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFj
dGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFhY3Rpb24tPnBlcmZvcm0oZWMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWFjdGlvbi0+bWVyZ2VJZCgpLmlz
RW1wdHkoKSAmJiBtX2FmdGVyTGFzdEFjdGlvbkluZGV4ID4gMCAmJiBhY3Rpb24tPm1lcmdlSWQo
KSA9PSBtX2hpc3RvcnlbbV9hZnRlckxhc3RBY3Rpb25JbmRleCAtIDFdLT5tZXJnZUlkKCkpCi0g
ICAgICAgIG1faGlzdG9yeVttX2FmdGVyTGFzdEFjdGlvbkluZGV4IC0gMV0tPm1lcmdlKGFjdGlv
bik7CisgICAgICAgIG1faGlzdG9yeVttX2FmdGVyTGFzdEFjdGlvbkluZGV4IC0gMV0tPm1lcmdl
KHN0ZDo6bW92ZShhY3Rpb24pKTsKICAgICBlbHNlIHsKICAgICAgICAgbV9oaXN0b3J5LnJlc2l6
ZShtX2FmdGVyTGFzdEFjdGlvbkluZGV4KTsKLSAgICAgICAgbV9oaXN0b3J5LmFwcGVuZChhY3Rp
b24pOworICAgICAgICBtX2hpc3RvcnkuYXBwZW5kKHN0ZDo6bW92ZShhY3Rpb24pKTsKICAgICAg
ICAgKyttX2FmdGVyTGFzdEFjdGlvbkluZGV4OwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAg
LTEwNCw3ICsxMDQsNyBAQCBib29sIEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oUGFzc093blB0
cjxBY3Rpb24+IGFjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgSW5zcGVjdG9ySGlz
dG9yeTo6bWFya1VuZG9hYmxlU3RhdGUoKQogewotICAgIHBlcmZvcm0oYWRvcHRQdHIobmV3IFVu
ZG9hYmxlU3RhdGVNYXJrKCkpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBwZXJmb3JtKHN0ZDo6
bWFrZV91bmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCksIElHTk9SRV9FWENFUFRJT04pOwogfQog
CiBib29sIEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaAppbmRleCA3MjI0YTM5M2VmYmI1
YTlmYWMxZWJhZTk2ZDMxMzE1MjU3YzRkNmQ1Li5hMjJhYmI1MzBjYjRhZjQ0ZDc4Mjk1MDM0Nzdj
YmQyYzJlYzU3YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAot
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU2LDcgKzU1LDcgQEAgcHVibGljOgogICAg
ICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpOwogCiAgICAgICAgIHZpcnR1YWwgU3RyaW5n
IG1lcmdlSWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NPd25QdHI8QWN0aW9u
Pik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPik7
CiAKICAgICAgICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYpID0gMDsKIApA
QCAtNzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9ySGlzdG9yeSgpOwogICAgIHZp
cnR1YWwgfkluc3BlY3Rvckhpc3RvcnkoKTsKIAotICAgIGJvb2wgcGVyZm9ybShQYXNzT3duUHRy
PEFjdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHBlcmZvcm0oc3RkOjp1bmlxdWVf
cHRyPEFjdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG1hcmtVbmRvYWJsZVN0YXRl
KCk7CiAKICAgICBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzksNyArNzgsNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxPd25QdHI8
QWN0aW9uPj4gbV9oaXN0b3J5OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPj4g
bV9oaXN0b3J5OwogICAgIHNpemVfdCBtX2FmdGVyTGFzdEFjdGlvbkluZGV4OwogfTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApp
bmRleCBkMDcxYTAwNGY5NDk2ZGYyOTY1MjAyODkyYTU5Y2QyZjBhZDliMTZkLi5hYWYxZmQ5M2Jj
NDUyNzFmZDg1OWNiN2E0MTJjZjIxMTQ5Yzc1NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtMzUsNyArMzUsNiBAQAog
CiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAppbmRleCBm
MTUyYWY2NDVmZDU4ODk5ZDA2YmRkZDI1YzJhMWE3NTQ0ZjA0Nzc4Li45MDkxZGE3M2E1M2FjYmFl
Zjk2YjFhN2I4ZGUyZjNlNGVkZGU4YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
TGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXll
clRyZWVBZ2VudC5oCmluZGV4IDc1NjFhYzc1NGRkNGEzYzhhOWNjNjg5MDg3N2U3OWUzNDM2NWY4
MGYuLjBhNWI4OGZjZTA3YTVkMjZkYWNhNGMwMjUyYzVmMjAyZjM0YzkwMjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oCkBAIC0z
Niw3ICszNiw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5o
IgogI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUgIlJlbmRl
ckxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVt
b3J5QWdlbnQuY3BwCmluZGV4IDE2NGQ5MTRkNmYzMzVkZmIwMWEyNzU5MWUwNWExZGJhMDFlMmE2
MzQuLjM1ZWUwMWUxMmFhMzNhMjJlYzJmNWEwY2ZlMTY4Y2M4NGNiNjRkNDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApAQCAtNDks
OCArNDksNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNs
dWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDEyZjNhOWM1ZTU1ZjI3MmVi
YzRkZmI4NTRiOGI4NjJlYjI2YjAxNDMuLmIzY2QyZmZlN2E2YzFjNWRiMmE3NmU3MjRmZThhOTY2
MGFmMWRmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JN
ZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1v
cnlBZ2VudC5oCkBAIC0zNSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuY3BwCmluZGV4IDUyNGQ5Mjk3YTAxNWQxOTY4ZDY0ZDA3NWZjODJlM2JhNDdjNzQ2MTgu
LjM0Y2Q1YTRlMzBjOWJhOGY2NjlkNWRkMzM2OWU3NzBmNDQ1OGNmNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTI4MCw3ICsyODAsNyBA
QCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdlKGNvbnN0
IFN0cmluZyogbWVzc2FnZSkKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlkZUhpZ2hsaWdodCgp
CiB7CiAgICAgbV9oaWdobGlnaHROb2RlLmNsZWFyKCk7Ci0gICAgbV9oaWdobGlnaHRRdWFkLmNs
ZWFyKCk7CisgICAgbV9oaWdobGlnaHRRdWFkLnJlc2V0KCk7CiAgICAgdXBkYXRlKCk7CiB9CiAK
QEAgLTI5MSwxMyArMjkxLDEzIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0Tm9k
ZShOb2RlKiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdoCiAgICAgdXBkYXRl
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZChQYXNzT3duUHRy
PEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcp
Cit2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZs
b2F0UXVhZD4gcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25maWcpCiB7
CiAgICAgaWYgKG1fcXVhZEhpZ2hsaWdodENvbmZpZy51c2VQYWdlQ29vcmRpbmF0ZXMpCiAgICAg
ICAgICpxdWFkIC09IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCktPnNjcm9sbE9mZnNldCgpOwog
CiAgICAgbV9xdWFkSGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOwotICAgIG1faGln
aGxpZ2h0UXVhZCA9IHF1YWQ7CisgICAgbV9oaWdobGlnaHRRdWFkID0gc3RkOjptb3ZlKHF1YWQp
OwogICAgIHVwZGF0ZSgpOwogfQogCkBAIC03NDgsNyArNzQ4LDcgQEAgUGFnZSogSW5zcGVjdG9y
T3ZlcmxheTo6b3ZlcmxheVBhZ2UoKQogCiAgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFnZUNsaWVu
dHM7CiAgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMocGFnZUNsaWVudHMpOwotICAgIG1fb3Zlcmxh
eVBhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOworICAgIG1fb3ZlcmxheVBh
Z2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KHBhZ2VDbGllbnRzKTsKIAogICAgIFNldHRpbmdz
JiBzZXR0aW5ncyA9IG1fcGFnZS5zZXR0aW5ncygpOwogICAgIFNldHRpbmdzJiBvdmVybGF5U2V0
dGluZ3MgPSBtX292ZXJsYXlQYWdlLT5zZXR0aW5ncygpOwpAQCAtODE1LDcgKzgxNSw3IEBAIHZv
aWQgSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5nJiBtZXRo
b2QsIFBhc3NSZWZQdHI8SW5zcGVjCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZnJlZVBhZ2Uo
KQogewotICAgIG1fb3ZlcmxheVBhZ2UuY2xlYXIoKTsKKyAgICBtX292ZXJsYXlQYWdlLnJlc2V0
KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IDdlM2QwMTdiMjM1ZmI3NzcyOTFmMjUwZmY0N2Y2
ZjE4OTU3NDI0MzEuLmE3ZTZjNzg0OWIyM2EwMWY2MGE2OTgyNDQxNGIzNWRlNWEyMGM3ODQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAtMzIsOCAr
MzIsNiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTcsNyArMTE1
LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgdm9pZCBoaWdo
bGlnaHROb2RlKE5vZGUqLCBjb25zdCBIaWdobGlnaHRDb25maWcmKTsKLSAgICB2b2lkIGhpZ2hs
aWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBIaWdobGlnaHRDb25maWcmKTsK
KyAgICB2b2lkIGhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIGNvbnN0
IEhpZ2hsaWdodENvbmZpZyYpOwogCiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkgY29uc3Q7
CiAKQEAgLTE0MSw4ICsxMzksOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BhdXNlZEluRGVi
dWdnZXJNZXNzYWdlOwogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodE5vZGU7CiAgICAgSGln
aGxpZ2h0Q29uZmlnIG1fbm9kZUhpZ2hsaWdodENvbmZpZzsKLSAgICBPd25QdHI8RmxvYXRRdWFk
PiBtX2hpZ2hsaWdodFF1YWQ7Ci0gICAgT3duUHRyPFBhZ2U+IG1fb3ZlcmxheVBhZ2U7CisgICAg
c3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4gbV9oaWdobGlnaHRRdWFkOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxQYWdlPiBtX292ZXJsYXlQYWdlOwogICAgIEhpZ2hsaWdodENvbmZpZyBtX3F1YWRI
aWdobGlnaHRDb25maWc7CiAgICAgSW50U2l6ZSBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IGM1MmM2
NmFmNjI0YTQzYjJlOWVkNDM3NDU0ZDk0NmJmMDE2OWI5NWYuLjA5Y2E5MzNjZTEzNzFjZTIwOGY2
NGY5ODYyMGIzYTBlMmQ4YTQ1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNpbmNsdWRl
IDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4K
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0
ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDdkZmUxOGMxNzQ0
Yjc4NTBjNGY1M2E3MzkwZDQ5ODUyNjY3NTE1OTAuLjc0M2NmYmNkNDhlOGFlYzNlOTVhNzIxMTc3
YmEwYTBjODUxZDJjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclByb2ZpbGVyQWdlbnQuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3
YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA0ODBiZGU5MDQ3
MTg3ZjUwOGJlZGQ2OWMxMzBkODYxOTc1MDk3NDY2Li44OWU1Y2Y0OTVlZWFhNzg1MjMzNjRiMTBk
MTQ0YTE4MjU0ZjIxMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC02NDMsNyArNjQzLDcgQEAgSW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW4KICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwoIk5ldHdv
cmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkK
ICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcmVzb3VyY2VzRGF0YShhZG9wdFB0cihu
ZXcgTmV0d29ya1Jlc291cmNlc0RhdGEoKSkpCisgICAgLCBtX3Jlc291cmNlc0RhdGEoc3RkOjpt
YWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKICAgICAsIG1fZW5hYmxlZChmYWxz
ZSkKICAgICAsIG1fY2FjaGVEaXNhYmxlZChmYWxzZSkKICAgICAsIG1fbG9hZGluZ1hIUlN5bmNo
cm9ub3VzbHkoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuaAppbmRleCBkMmNhMmEyOTRlYzljYTYzY2VmODVjZjM3YjFmYTdlNWIz
Y2FlZTBmLi4xMmRhNzc4YzQ4ODNlNjg3ZWJhNDFlMTIyYWI1MDllNDhmNzZiOWI0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAg
LTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE0NSw3ICsxNDQsNyBAQCBwcml2YXRl
OgogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERp
c3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0JhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIE93blB0cjxOZXR3b3JrUmVzb3Vy
Y2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3b3JrUmVz
b3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwogICAgIGJv
b2wgbV9jYWNoZURpc2FibGVkOwogICAgIGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApp
bmRleCBmMjdjM2IxMzdiYmJiNGNkZWFmZWExYTYxOWUyZWI3YjlhNTkyNTc0Li40ODY3MGNkMWRm
Nzg0ZjI4OTAzYTFjN2JiNmM3MTRkZTlkZmQxN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC01OCw4ICs1OCw2IEBACiAjaW5j
bHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVl
cy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWls
ZGVyLmg+CiAjaW5jbHVkZSA8eWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oPgpAQCAtNzcsMTUgKzc1
LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0KTsKICAg
ICBib29sIGhhc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2hhc1RleHQ7IH0KICAgICBSdWxlU291
cmNlRGF0YUxpc3QqIHNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURhdGEuZ2V0
KCk7IH0KLSAgICB2b2lkIHNldFNvdXJjZURhdGEoUGFzc093blB0cjxSdWxlU291cmNlRGF0YUxp
c3Q+KTsKLSAgICBib29sIGhhc1NvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURh
dGE7IH0KKyAgICB2b2lkIHNldFNvdXJjZURhdGEoc3RkOjp1bmlxdWVfcHRyPFJ1bGVTb3VyY2VE
YXRhTGlzdD4pOworICAgIGJvb2wgaGFzU291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc291
cmNlRGF0YSAhPSBudWxscHRyOyB9CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpDU1NSdWxlU291
cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFBdCh1bnNpZ25lZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAK
ICAgICBTdHJpbmcgbV90ZXh0OwogICAgIGJvb2wgbV9oYXNUZXh0OwotICAgIE93blB0cjxSdWxl
U291cmNlRGF0YUxpc3Q+IG1fc291cmNlRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNv
dXJjZURhdGFMaXN0PiBtX3NvdXJjZURhdGE7CiB9OwogCiBQYXJzZWRTdHlsZVNoZWV0OjpQYXJz
ZWRTdHlsZVNoZWV0KCkKQEAgLTExNSwxNCArMTEzLDE0IEBAIHN0YXRpYyB2b2lkIGZsYXR0ZW5T
b3VyY2VEYXRhKFJ1bGVTb3VyY2VEYXRhTGlzdCogZGF0YUxpc3QsIFJ1bGVTb3VyY2VEYXRhTGlz
dCoKICAgICB9CiB9CiAKLXZvaWQgUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0YShQYXNz
T3duUHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gc291cmNlRGF0YSkKK3ZvaWQgUGFyc2VkU3R5bGVT
aGVldDo6c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBz
b3VyY2VEYXRhKQogewogICAgIGlmICghc291cmNlRGF0YSkgewotICAgICAgICBtX3NvdXJjZURh
dGEuY2xlYXIoKTsKKyAgICAgICAgbV9zb3VyY2VEYXRhLnJlc2V0KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBtX3NvdXJjZURhdGEgPSBhZG9wdFB0cihuZXcgUnVsZVNvdXJjZURh
dGFMaXN0KCkpOworICAgIG1fc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJj
ZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkgc29sdXRp
b24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBmbGF0IHNvdXJjZURhdGEgc3RydWN0dXJlCiAgICAg
Ly8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1bGVzLCBldmVuIHRob3VnaCBDU1NQYXJzZXIgbm93
IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291cmNlIGRhdGEgdHJlZS4KQEAgLTI4NCw5ICsyODIs
OSBAQCBzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwgQXJyYXk8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOgogICAgIH0KIH0KIAotc3RhdGljIFBhc3NPd25Q
dHI8Q1NTUGFyc2VyPiBjcmVhdGVDU1NQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQorc3RhdGlj
IHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXI+IGNyZWF0ZUNTU1BhcnNlcihEb2N1bWVudCogZG9j
dW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDU1NQYXJzZXIoZG9jdW1lbnQgPyBD
U1NQYXJzZXJDb250ZXh0KCpkb2N1bWVudCkgOiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkpKTsK
KyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXI+KGRvY3VtZW50ID8gQ1NTUGFy
c2VyQ29udGV4dCgqZG9jdW1lbnQpIDogc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpKTsKIH0KIAog
UGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShjb25zdCBJ
bnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0aW9uPiBz
dHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKQEAgLTUyMSw3ICs1
MTksNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NTU3R5bGU+
IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZQogICAgIEhhc2hTZXQ8U3RyaW5nPiBmb3Vu
ZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHByZXZpb3VzUHJpb3JpdHk7CiAgICAgU3RyaW5nIHBy
ZXZpb3VzU3RhdHVzOwotICAgIE93blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MobV9w
YXJlbnRTdHlsZVNoZWV0ID8gbV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygpIDogUGFz
c093blB0cjxWZWN0b3I8c2l6ZV90Pj4oKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZlY3Rvcjxz
aXplX3Q+PiBsaW5lRW5kaW5ncyhtX3BhcmVudFN0eWxlU2hlZXQgPyBtX3BhcmVudFN0eWxlU2hl
ZXQtPmxpbmVFbmRpbmdzKCkgOiBudWxscHRyKTsKICAgICBSZWZQdHI8Q1NTUnVsZVNvdXJjZURh
dGE+IHNvdXJjZURhdGEgPSBleHRyYWN0U291cmNlRGF0YSgpOwogICAgIHVuc2lnbmVkIHJ1bGVC
b2R5UmFuZ2VTdGFydCA9IHNvdXJjZURhdGEgPyBzb3VyY2VEYXRhLT5ydWxlQm9keVJhbmdlLnN0
YXJ0IDogMDsKIApAQCAtMTIxMSwxMCArMTIwOSwxMCBAQCBSZWZQdHI8Q1NTUnVsZVNvdXJjZURh
dGE+IEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxlRGVjbGFy
YQogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQtPnJ1bGVTb3VyY2VEYXRhQXQocnVsZUlu
ZGV4QnlTdHlsZShzdHlsZSkpOwogfQogCi1QYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBJbnNw
ZWN0b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncygpIGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8VmVj
dG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzKCkgY29uc3QKIHsK
ICAgICBpZiAoIW1fcGFyc2VkU3R5bGVTaGVldC0+aGFzVGV4dCgpKQotICAgICAgICByZXR1cm4g
UGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4oKTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgcmV0dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdzKG1fcGFyc2VkU3R5
bGVTaGVldC0+dGV4dCgpKTsKIH0KIApAQCAtMTI3MCw5ICsxMjY4LDkgQEAgYm9vbCBJbnNwZWN0
b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CiAgICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gbmV3U3R5bGVTaGVldCA9IFN0eWxlU2hl
ZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgT3duUHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gcnVs
ZVNvdXJjZURhdGFSZXN1bHQgPSBhZG9wdFB0cihuZXcgUnVsZVNvdXJjZURhdGFMaXN0KCkpOwor
ICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1bGVTb3Vy
Y2VEYXRhTGlzdD4oKTsKICAgICBjcmVhdGVDU1NQYXJzZXIobV9wYWdlU3R5bGVTaGVldC0+b3du
ZXJEb2N1bWVudCgpKS0+cGFyc2VTaGVldChuZXdTdHlsZVNoZWV0LmdldCgpLCBtX3BhcnNlZFN0
eWxlU2hlZXQtPnRleHQoKSwgMCwgcnVsZVNvdXJjZURhdGFSZXN1bHQuZ2V0KCkpOwotICAgIG1f
cGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0YShydWxlU291cmNlRGF0YVJlc3VsdC5yZWxl
YXNlKCkpOworICAgIG1fcGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0YShzdGQ6Om1vdmUo
cnVsZVNvdXJjZURhdGFSZXN1bHQpKTsKICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5o
YXNTb3VyY2VEYXRhKCk7CiB9CiAKQEAgLTE0NzYsNyArMTQ3NCw3IEBAIGJvb2wgSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUsCiAgICAgcmV0dXJuICFlYzsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8c2l6ZV90
Pj4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpsaW5lRW5kaW5ncygpIGNvbnN0
CitzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJ
bmxpbmVTdHlsZTo6bGluZUVuZGluZ3MoKSBjb25zdAogewogICAgIHJldHVybiBDb250ZW50U2Vh
cmNoVXRpbGl0aWVzOjpsaW5lRW5kaW5ncyhlbGVtZW50U3R5bGVUZXh0KCkpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXggYmMxZjFh
Yzc5Y2IxZDdjMjM0Y2YxNTRhN2EyZmU1ODdjMWU1OTY3Ni4uOGIxOTFmZTA4NDM5YjVmOGU3N2Ey
NzU5NTk3ZTYzM2RhOTllMGY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yU3R5bGVTaGVldC5oCkBAIC0yMjYsNyArMjI2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAg
Ly8gQWxzbyBhY2Nlc3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUuCiAgICAgdmly
dHVhbCBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5n
JiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90
Pj4gbGluZUVuZGluZ3MoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0
b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB0eXBlZGVm
IFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVSdWxlPj4gQ1NTU3R5bGVSdWxlVmVjdG9yOwpAQCAtMjc4
LDcgKzI3OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkgZnJpZW5k
IGNsYXNzIEluc3BlY3RvclN0eWxlLgogICAgIHZpcnR1YWwgYm9vbCBzZXRTdHlsZVRleHQoQ1NT
U3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKCkg
Y29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVf
dD4+IGxpbmVFbmRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5bGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGVmZjYyNWQ0NjVlNWZl
OWJmNGI0YWJjODI3ODgwZjM2YTA3MjA4NjkuLjAwY2E2YWUwYWEyNzFlMjUxYjA4NDY2ZWNmOTNl
MDhlZmE2NjkwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAjaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3Bw
CmluZGV4IGI4MTA4YjU0ZjJjOWNhZjI1ZTJkMGViZmE0ZmMyYjkyZDE3NWMwZWMuLjg1NzNkODZh
YzQ1ZmEzMTRlMWFiMzRkMjg4YTBlYTM3OTMxMGEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtNDAsNyArNDAsNiBAQAog
I2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHkuaCIKICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNw
ZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAK
aW5kZXggNzE1OWNkZDdjMDQxOTgzMDVlMDYwNTNlMTk2ZmQzZGQ1NTdkNzE1Ni4uMzBmNTUyNzk0
MDRiMjc1ODk5ZjMyMjliNDlkOGUxY2I0YjQyMDNmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lkIFBhZ2VD
b25zb2xlQWdlbnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBp
bnQgbm9kZUlkKQogICAgIH0KIAogICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNvbW1hbmRM
aW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFBhZ2VJbmplY3RlZFNjcmlwdE1hbmFnZXIqPihtX2lu
amVjdGVkU2NyaXB0TWFuYWdlciktPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQotICAgICAgICBjb21t
YW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChhZG9wdFB0cihuZXcgSW5zcGVjdGFi
bGVOb2RlKG5vZGUpKSk7CisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVk
T2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRp
bWVBZ2VudC5oCmluZGV4IDAyMDU4ZDZmNDNiNDMyMWNiMzRjNDcyZjI0MWU5ZGYwZDM4NWEwMDku
LmZkNDdjNzQwNzBkZDU0NGJkZGJlMzFiMjZiMWQ3MDg5MjU5ZmYyNWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtMzUsNyArMzUsNiBAQAogCiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oPgogI2lu
Y2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVjU3RhdGU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCmluZGV4IDlk
MjIwZDZjODlmMjBjNDY2NTBhM2Q2ZDg3ZjFjYmI3OWU0NjQ3ZDAuLjc5YjA3NGVhOTA4OGVmMjMw
OTI0NDBhOTUwNGE5MTgyYmZlM2M2ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
ZWJDb25zb2xlQWdlbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKIHZvaWQgV2Vi
Q29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWRIZWFwT2JqZWN0KEVycm9yU3RyaW5nKiwgaW50IGlu
c3BlY3RlZEhlYXBPYmplY3RJZCkKIHsKICAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBjb21t
YW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxQYWdlSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKj4o
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAg
Y29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3QoYWRvcHRQdHIobmV3IEluc3Bl
Y3RhYmxlSGVhcE9iamVjdChpbnNwZWN0ZWRIZWFwT2JqZWN0SWQpKSk7CisgICAgICAgIGNvbW1h
bmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dGFibGVIZWFwT2JqZWN0PihpbnNwZWN0ZWRIZWFwT2JqZWN0SWQpKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
clJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVB
Z2VudC5oCmluZGV4IDk1ZTI1NGRjZDJlZmY2NDY0YjVlNzA3ZmE2NGEzZjRjNWQwOTg2ZGQuLjVj
MmQ4NjE0YjBhYjNkYmU3MmU4NjU4ZDEwY2QxOWY3NDJkZGMzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNp
ZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCA2MmVk
MjRjYjBkNmY0ZjkwOGM1YjhhNDNkYjI4N2JlN2RjN2VmZWNkLi5iOGRkZGQxYzk5MGQ5Y2ZhZTYy
MTgyOGRkNzNhOGUzMGZkYzE4ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3Bw
CkBAIC0xOTQsNyArMTk0LDcgQEAgcHJvdGVjdGVkOgogfTsKIAogSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnREdW1teTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teShJbnNwZWN0b3JDb250cm9s
bGVyKiBjb250cm9sbGVyLCBQYWdlKiBwYWdlKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbChjb250cm9sbGVyLCBwYWdlLCBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6U2V0dGluZ3MoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsKGNvbnRyb2xsZXIsIHBhZ2UsIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6U2V0dGluZ3M+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
Y3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5jcHAKaW5kZXggYjNlNmU0NWY5YjE4YTZlMzI3Nzk2OWU3ZWNhNmZm
YWM0ZTA1MzM5ZS4uYmI0NTljNDI2OTE3MjNiYTFhZWI4NWE4NjQ2M2ViNWJjYmQ5ZDI0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBh
Z2UqIHBhZ2UsIFdlYlBhZ2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKCZwYWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGlu
c3BlY3RvclBhZ2UtPmNvcmVQYWdlKCksIGFkb3B0UHRyKG5ldyBTZXR0aW5ncygpKSkKKyAgICA6
IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJnBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3Rv
ckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1
ZTxTZXR0aW5ncz4oKSkKICAgICAsIG1fcGFnZShwYWdlKQogewogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224081</attachid>
            <date>2014-02-13 09:51:11 -0800</date>
            <delta_ts>2014-02-13 10:52:50 -0800</delta_ts>
            <desc>v2</desc>
            <filename>bug-128681-20140213145101.patch</filename>
            <type>text/plain</type>
            <size>92460</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MDMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
Mzk4NTM2ODBiZjA3ZGU1MmYwNjQyZDljMTA4NDFkZTNkN2JkZmQyLi44ZDg1YTYyOWYzNGU3ZGZl
OTU5MmNjMGNlMWQyNjEwMTc0N2QzY2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMg
Z2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAg
V2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIg
ZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rp
bmcgd2VyZSB0b3VjaGVkLgorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKwog
MjAxNC0wMi0xMiAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAgTm8g
bmVlZCB0byBzYXZlIHJlc2VydmVkWm9uZVNpemUgd2hlbiBkcm9wcGluZyB0aGUgSlNMb2NrLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDEzMmFkY2ZmNjY5NzkzZDZmMTM0ZWJkNWNiYTU0Mjg4ODNiNDk2ZGEuLjBh
MmQyZTZjZWFlYmI4YmRlNjBkNTJmMjVmNDJmMjhjMWE1NWRkYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMg
Z2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAg
V2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIg
ZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rp
bmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgbm8gbmV3IGJlaGF2aW9y
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvcklucHV0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorCiAyMDE0LTAyLTEzICBDaGFuZ1Nlb2sgT2ggIDxj
aGFuZ3Nlb2sub2hAY29sbGFib3JhLmNvbT4KIAogICAgICAgICBTdXBwb3J0IEFOR0xFX2luc3Rh
bmNlZF9hcnJheXMgZm9yIEdMRVMgYmFja2VuZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2ODBjNzZh
Y2VmZmUxNGRkYjViNjc5NWZiNjIzNDJlNDEwZTE3MjJkLi5kMmUxNWQzYmVkNzM2Mzk4MDE3MmIz
M2MwMGRlYjk5YjlhYjM0Yjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIw
MTQtMDItMTMgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4K
KworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVu
aXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9m
IFBhc3NPd25QdHIvT3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAgICAgIFdlYkNvcmUvaW5zcGVj
dG9yLyouIEJlc2lkZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90aGVyIGZpbGVzIGluCisgICAg
ICAgIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciwgV2ViS2l0LywgV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0LworICAgICAgICBhbmQgV2ViQ29yZS90ZXN0aW5nIHdlcmUgdG91Y2hl
ZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6CisK
IDIwMTQtMDItMTMgIFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtFRkxdW1dLMV0gRG8gbm90IGluY2x1ZGUgbGlic291cCBoZWFkZXIgaW4gdGhlIHB1Ymxp
YyBoZWFkZXJzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMTFmMGRiYjRiNTY1YTNmODdjOGM3NGJjODNl
NzJhMzk5Y2JjYTBmNC4uMjc4OWYwZTk4MWZiMTYzOTcwYzM4YWNmMThiZDYyZTI5NDJhODVhYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAyLTEzICBTZXJnaW8gQ29y
cmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1
c2VzIG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUv
aW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjg2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBbm90aGVyIHN0ZXAgdG93YXJkcyBnZXR0aW5nIHJpZCBvZiBQYXNzT3duUHRyL093blB0ciwg
bm93IHRhcmdldGluZworICAgICAgICBXZWJDb3JlL2luc3BlY3Rvci8qLiBCZXNpZGVzIGZpbGVz
IGluIHRoZXJlLCBhIGZldyBvdGhlciBmaWxlcyBpbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IsIFdlYktpdC8sIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8KKyAg
ICAgICAgYW5kIFdlYkNvcmUvdGVzdGluZyB3ZXJlIHRvdWNoZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwOgorCiAyMDE0LTAyLTExICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgU3VicGl4ZWwgcmVuZGVyaW5nOiBN
YWtlIEdyYXBoaWNzTGF5ZXJDbGllbnQ6OnBhaW50Q29udGVudHMncyBjbGlwIHJlY3Qgc3VicGl4
ZWwgYmFzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggY2RmMTg1ODhlNmM3OTg0ZDA0NWQ1NmJkOTE1
MGRkNGU4Njg2NjJmNi4uYTIzOGQ1ZTdkNDkxMTVkNGM4YTU3NjRkZTAwNTYxMGU0ZTYzZGQ2ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE0LTAyLTEzICBTZXJnaW8gQ29y
cmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1
c2VzIG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUv
aW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjg2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBbm90aGVyIHN0ZXAgdG93YXJkcyBnZXR0aW5nIHJpZCBvZiBQYXNzT3duUHRyL093blB0ciwg
bm93IHRhcmdldGluZworICAgICAgICBXZWJDb3JlL2luc3BlY3Rvci8qLiBCZXNpZGVzIGZpbGVz
IGluIHRoZXJlLCBhIGZldyBvdGhlciBmaWxlcyBpbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IsIFdlYktpdC8sIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8KKyAg
ICAgICAgYW5kIFdlYkNvcmUvdGVzdGluZyB3ZXJlIHRvdWNoZWQuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJJbnNwZWN0b3JDbGllbnQubW06CisKIDIwMTQtMDItMTIgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgV3JhcCBXZWJDcnlwdG8ga2V5cyBpbiBTZXJp
YWxpemVkU2NyaXB0VmFsdWUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwppbmRleCA0M2EzNmQ4OWNlOTVlZjhlNzE2
OWY5NjZhMmE1YTk5YThiNDk0YjE4Li41NzJkNmQ0YTQ2NjAzNjk2NmIzMmExNzhhNWY1ZWFiZDY5
OTdjMjYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDItMTMgIFNl
cmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBS
ZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4g
V2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIv
T3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAgICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lk
ZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3Jp
cHRDb3JlL2luc3BlY3RvciwgV2ViS2l0LywgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0LworICAgICAgICBhbmQgV2ViQ29yZS90ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHA6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmg6CisKIDIwMTQtMDItMTEgIFphbGFuIEJ1
anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBTdWJwaXhlbCByZW5kZXJpbmc6IE1h
a2UgR3JhcGhpY3NMYXllckNsaWVudDo6cGFpbnRDb250ZW50cydzIGNsaXAgcmVjdCBzdWJwaXhl
bCBiYXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwppbmRleCBhMjE1NGEyYWU3OTdmMWFlMmY4NWFlZTE5ZGYyNTNlNzRm
ZjYzODA0Li41MWM0YzkyMWQ3OTExNmU2ZjIxOGZkMzg0YmUwMzE0ZjQ4OTA2ZjgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDItMTMgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lv
LmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093
blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFub3RoZXIgc3Rl
cCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBub3cgdGFyZ2V0aW5n
CisgICAgICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMgaW4gdGhlcmUsIGEg
ZmV3IG90aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciwgV2Vi
S2l0LywgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LworICAgICAgICBhbmQgV2Vi
Q29yZS90ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwOgorCiAyMDE0LTAyLTEzICBB
bmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJsZSBY
UEMgZm9yIHBsdWctaW5zIHRoYXQgbmVlZCBleGVjdXRhYmxlIGhlYXAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
Y3BwCmluZGV4IDIwMmQzZmRkYTA5OWIyMmI3NmJhYzU4YjBiNWYyN2MxMzI1NWY2NzIuLjc0NDVj
ZWZkMDc4ZmY3MzMyNzQzYzcxNTZlMzAxOWIxOTVmYWM4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNw
cApAQCAtODIsNyArODIsNyBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIFN0cmluZz4+
IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMoY29uc3QgSgogICAgIGlmICh0ZXh0
LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKIAotICAgIE93blB0cjxWZWN0b3I8
c2l6ZV90Pj4gZW5kaW5ncyhsaW5lRW5kaW5ncyh0ZXh0KSk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFZlY3RvcjxzaXplX3Q+PiBlbmRpbmdzKGxpbmVFbmRpbmdzKHRleHQpKTsKICAgICBzaXplX3Qg
c2l6ZSA9IGVuZGluZ3MtPnNpemUoKTsKICAgICB1bnNpZ25lZCBzdGFydCA9IDA7CiAgICAgZm9y
IChzaXplX3QgbGluZU51bWJlciA9IDA7IGxpbmVOdW1iZXIgPCBzaXplOyArK2xpbmVOdW1iZXIp
IHsKQEAgLTEwMCw5ICsxMDAsOSBAQCBzdGF0aWMgVmVjdG9yPHN0ZDo6cGFpcjxpbnQsIFN0cmlu
Zz4+IGdldFJlZ3VsYXJFeHByZXNzaW9uTWF0Y2hlc0J5TGluZXMoY29uc3QgSgogICAgIHJldHVy
biByZXN1bHQ7CiB9CiAKLVBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNv
bnN0IFN0cmluZyYgdGV4dCkKK3N0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVu
ZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIE93blB0cjxWZWN0b3I8c2l6ZV90Pj4g
cmVzdWx0KGFkb3B0UHRyKG5ldyBWZWN0b3I8c2l6ZV90PigpKSk7CisgICAgYXV0byByZXN1bHQg
PSBzdGQ6Om1ha2VfdW5pcXVlPFZlY3RvcjxzaXplX3Q+PigpOwogCiAgICAgdW5zaWduZWQgc3Rh
cnQgPSAwOwogICAgIHdoaWxlIChzdGFydCA8IHRleHQubGVuZ3RoKCkpIHsKQEAgLTExNSw3ICsx
MTUsNyBAQCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJp
bmcmIHRleHQpCiAgICAgfQogICAgIHJlc3VsdC0+YXBwZW5kKHRleHQubGVuZ3RoKCkpOwogCi0g
ICAgcmV0dXJuIHJlc3VsdC5yZWxlYXNlKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3Rh
dGljIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFy
Y2hNYXRjaD4gYnVpbGRPYmplY3RGb3JTZWFyY2hNYXRjaChpbnQgbGluZU51bWJlciwgY29uc3Qg
U3RyaW5nJiBsaW5lQ29udGVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKaW5kZXggM2VhYTA2NjQxYzNkYTU0
MWI3OWRiNGJlNDlkNTdkMjIwN2QyNzM4Ny4uMmJjMmQzYzdjMGRkMmRlMmYxYzIyYTNjMmRiNmZh
MTFhNmIzMjJmMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9D
b250ZW50U2VhcmNoVXRpbGl0aWVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmgKQEAgLTQ4LDcgKzQ4LDcgQEAgSlNfRVhQT1JU
X1BSSVZBVEUgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBjcmVhdGVTZWFyY2hSZWdleChj
b25zdCBTdHJpbmcmIHEKIEpTX0VYUE9SVF9QUklWQVRFIGludCBjb3VudFJlZ3VsYXJFeHByZXNz
aW9uTWF0Y2hlcyhjb25zdCBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uJiwgY29uc3QgU3Ry
aW5nJik7CiBKU19FWFBPUlRfUFJJVkFURSBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0
Y2g+PiBzZWFyY2hJblRleHRCeUxpbmVzKGNvbnN0IFN0cmluZyYgdGV4dCwgY29uc3QgU3RyaW5n
JiBxdWVyeSwgY29uc3QgYm9vbCBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sIGlzUmVnZXgpOwog
SlNfRVhQT1JUX1BSSVZBVEUgVGV4dFBvc2l0aW9uIHRleHRQb3NpdGlvbkZyb21PZmZzZXQoc2l6
ZV90IG9mZnNldCwgY29uc3QgVmVjdG9yPHNpemVfdD4mIGxpbmVFbmRpbmdzKTsKLUpTX0VYUE9S
VF9QUklWQVRFIFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0
cmluZyYpOworSlNfRVhQT1JUX1BSSVZBVEUgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+
PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKIAogSlNfRVhQT1JUX1BSSVZBVEUgU3RyaW5n
IGZpbmRTY3JpcHRTb3VyY2VVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50KTsKIEpTX0VYUE9SVF9Q
UklWQVRFIFN0cmluZyBmaW5kU2NyaXB0U291cmNlTWFwVVJMKGNvbnN0IFN0cmluZyYgY29udGVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAppbmRleCBkYjZmOTEwNmNkZTZkYTE2
YThlZWNlOTQ1YjdkOWIyZWE0ODllN2VhLi43MmY2MGMxZjI0Mjk3NThlNWY3MzFmNDIzNDE4Mzc5
YWI5NWZmYmY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKQEAgLTM2LDggKzM2
LDYgQEAKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRUaW1lLmg+Ci0jaW5jbHVkZSA8d3Rm
L093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBA
IC0xMzAsNyArMTI4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VU
b0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXAKICAgICAgICAgY2xlYXJN
ZXNzYWdlcygmZXJyb3IpOwogICAgIH0KIAotICAgIGFkZENvbnNvbGVNZXNzYWdlKGFkb3B0UHRy
KG5ldyBDb25zb2xlTWVzc2FnZSghaXNXb3JrZXJBZ2VudCgpLCBzb3VyY2UsIHR5cGUsIGxldmVs
LCBtZXNzYWdlLCBjYWxsU3RhY2ssIHJlcXVlc3RJZGVudGlmaWVyKSkpOworICAgIGFkZENvbnNv
bGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KCFpc1dvcmtlckFnZW50
KCksIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50
aWZpZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0Nv
bnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIFBh
c3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPiBhcmd1bWVudHMsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpCkBAIC0xNDMsNyArMTQxLDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXAK
ICAgICAgICAgY2xlYXJNZXNzYWdlcygmZXJyb3IpOwogICAgIH0KIAotICAgIGFkZENvbnNvbGVN
ZXNzYWdlKGFkb3B0UHRyKG5ldyBDb25zb2xlTWVzc2FnZSghaXNXb3JrZXJBZ2VudCgpLCBzb3Vy
Y2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBhcmd1bWVudHMsIHN0YXRlLCByZXF1ZXN0SWRlbnRp
ZmllcikpKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVN
ZXNzYWdlPighaXNXb3JrZXJBZ2VudCgpLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBh
cmd1bWVudHMsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCiB2b2lkIEluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwg
TWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVk
IGNvbHVtbk51bWJlciwgSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCB1bnNpZ25lZCBsb25nIHJlcXVl
c3RJZGVudGlmaWVyKQpAQCAtMTU3LDcgKzE1NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFn
ZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlw
CiAgICAgfQogCiAgICAgYm9vbCBjYW5HZW5lcmF0ZUNhbGxTdGFjayA9ICFpc1dvcmtlckFnZW50
KCkgJiYgbV9mcm9udGVuZERpc3BhdGNoZXI7Ci0gICAgYWRkQ29uc29sZU1lc3NhZ2UoYWRvcHRQ
dHIobmV3IENvbnNvbGVNZXNzYWdlKGNhbkdlbmVyYXRlQ2FsbFN0YWNrLCBzb3VyY2UsIHR5cGUs
IGxldmVsLCBtZXNzYWdlLCBzY3JpcHRJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0
ZSwgcmVxdWVzdElkZW50aWZpZXIpKSk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtl
X3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oY2FuR2VuZXJhdGVDYWxsU3RhY2ssIHNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2UsIHNjcmlwdElELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0
YXRlLCByZXF1ZXN0SWRlbnRpZmllcikpOwogfQogCiBWZWN0b3I8dW5zaWduZWQ+IEluc3BlY3Rv
ckNvbnNvbGVBZ2VudDo6Y29uc29sZU1lc3NhZ2VBcmd1bWVudENvdW50cygpIGNvbnN0CkBAIC0y
MjksNyArMjI3LDcgQEAgc3RhdGljIGJvb2wgaXNHcm91cE1lc3NhZ2UoTWVzc2FnZVR5cGUgdHlw
ZSkKICAgICAgICAgfHwgdHlwZSA9PSBNZXNzYWdlVHlwZTo6RW5kR3JvdXA7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNv
bGVNZXNzYWdlPiBjb25zb2xlTWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50Ojph
ZGRDb25zb2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVN
ZXNzYWdlKQogewogICAgIEFTU0VSVChtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5zcGVjdG9y
RW52aXJvbm1lbnQoKS5kZXZlbG9wZXJFeHRyYXNFbmFibGVkKCkpOwogICAgIEFTU0VSVF9BUkco
Y29uc29sZU1lc3NhZ2UsIGNvbnNvbGVNZXNzYWdlKTsKQEAgLTI0MCw3ICsyMzgsNyBAQCB2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0cjxDb25z
b2xlTWVzc2FnZT4gY29uc29sZQogICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPnVwZGF0
ZVJlcGVhdENvdW50SW5Db25zb2xlKG1fZnJvbnRlbmREaXNwYXRjaGVyLmdldCgpKTsKICAgICB9
IGVsc2UgewogICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZSA9IGNvbnNvbGVNZXNzYWdlLmdldCgp
OwotICAgICAgICBtX2NvbnNvbGVNZXNzYWdlcy5hcHBlbmQoY29uc29sZU1lc3NhZ2UpOworICAg
ICAgICBtX2NvbnNvbGVNZXNzYWdlcy5hcHBlbmQoc3RkOjptb3ZlKGNvbnNvbGVNZXNzYWdlKSk7
CiAgICAgICAgIGlmIChtX2Zyb250ZW5kRGlzcGF0Y2hlciAmJiBtX2VuYWJsZWQpCiAgICAgICAg
ICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+YWRkVG9Gcm9udGVuZChtX2Zyb250ZW5kRGlzcGF0Y2hl
ci5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIsIHRydWUpOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmgKaW5kZXggNDlhNzllNjNkMzk5OGZhMzhhMDQxMTViY2M1OGM3ZjE1
ZDJmODNhMi4uZjg1N2ZjNzhhNmJiNDc4ZTgyNjRlZjhhNTg3NzAwYmQ2OGM4YzhiNSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29u
c29sZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yQ29uc29sZUFnZW50LmgKQEAgLTgzLDEzICs4MywxMyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb3VudChKU0M6OkV4ZWNTdGF0ZSosIFBhc3NSZWZQdHI8U2NyaXB0QXJndW1lbnRzPik7
CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29u
c29sZU1lc3NhZ2U+KTsKKyAgICB2b2lkIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0
cjxDb25zb2xlTWVzc2FnZT4pOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQ29uc29sZUZy
b250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3Bl
Y3RvckNvbnNvbGVCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBD
b25zb2xlTWVzc2FnZSogbV9wcmV2aW91c01lc3NhZ2U7Ci0gICAgVmVjdG9yPE93blB0cjxDb25z
b2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8Q29uc29sZU1lc3NhZ2U+PiBtX2NvbnNvbGVNZXNzYWdlczsKICAgICBpbnQgbV9leHBpcmVk
Q29uc29sZU1lc3NhZ2VDb3VudDsKICAgICBIYXNoTWFwPFN0cmluZywgdW5zaWduZWQ+IG1fY291
bnRzOwogICAgIEhhc2hNYXA8U3RyaW5nLCBkb3VibGU+IG1fdGltZXM7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCmluZGV4IDlmODhkYjNkYjE1MTc2YTdmYTdjNzViYjJlNTViYzA4NGIxY2U5MGUuLjY1ZWY4
YWFhMTQ3Y2MwMGExZjg4ZWE1MTkyOWFjYTBkOWRmZTI0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CkBAIC0yODMyLDcgKzI4MzIsNyBAQCBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwyN3Jlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodEV2CiBfX1pON1dlYkNvcmUyOElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwyN3NldFRpbWVsaW5lUHJvZmlsaW5nRW5hYmxlZEVi
CiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwzMGNvbnN0cmFpbmVk
QXR0YWNoZWRXaW5kb3dXaWR0aEVqagogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsMzFjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93SGVpZ2h0RWpqCi1fX1pON1dlYkNv
cmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxDMkVQTlNfMTlJbnNwZWN0b3JDb250cm9s
bGVyRVBOU180UGFnZUVOM1dURjEwUGFzc093blB0cklOUzBfOFNldHRpbmdzRUVFCitfX1pON1dl
YkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxDMkVQTlNfMTlJbnNwZWN0b3JDb250
cm9sbGVyRVBOU180UGFnZUVTdDEwdW5pcXVlX3B0cklOUzBfOFNldHRpbmdzRVN0MTRkZWZhdWx0
X2RlbGV0ZUlTNl9FRQogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
RDJFdgogX19aTjdXZWJDb3JlNHRvSlNFUE4zSlNDOUV4ZWNTdGF0ZUVQTlNfMTdKU0RPTUdsb2Jh
bE9iamVjdEVQTlNfOURPTVdpbmRvd0UKIF9fWk43V2ViQ29yZTlET01XaW5kb3c0b3BlbkVSS04z
V1RGNlN0cmluZ0VSS05TMV8xMkF0b21pY1N0cmluZ0VTNF9SUzBfUzhfCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwCmluZGV4IGY0MDRhNTJmZWJl
ZjExMWY4Mjc5N2JjMWFkYTIyYTkxN2IwZjUxNWEuLjFlMGZhZDM3ZmE3OThmMmJhZWI3NzExYjdm
NDIwNjRjOTNhZTRmN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5k
TGluZUFQSUhvc3QuY3BwCkBAIC03NCw3ICs3NCw3IEBAIENvbW1hbmRMaW5lQVBJSG9zdDo6Q29t
bWFuZExpbmVBUElIb3N0KCkKICAgICAsIG1fZGF0YWJhc2VBZ2VudChudWxscHRyKQogI2VuZGlm
CiB7Ci0gICAgbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3QgPSBhZG9wdFB0cihuZXcgSW5zcGVj
dGFibGVPYmplY3QpOworICAgIG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0ID0gc3RkOjptYWtl
X3VuaXF1ZTxJbnNwZWN0YWJsZU9iamVjdD4oKTsKIH0KIAogQ29tbWFuZExpbmVBUElIb3N0Ojp+
Q29tbWFuZExpbmVBUElIb3N0KCkKQEAgLTEyNCw5ICsxMjQsOSBAQCBEZXByZWNhdGVkOjpTY3Jp
cHRWYWx1ZSBDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0OjpnZXQoSlNDOjpF
eGVjU3RhdAogICAgIHJldHVybiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSgpOwogfTsKIAotdm9p
ZCBDb21tYW5kTGluZUFQSUhvc3Q6OmFkZEluc3BlY3RlZE9iamVjdChQYXNzT3duUHRyPENvbW1h
bmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q+IG9iamVjdCkKK3ZvaWQgQ29tbWFuZExp
bmVBUElIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjp1bmlxdWVfcHRyPENvbW1hbmRMaW5l
QVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q+IG9iamVjdCkKIHsKLSAgICBtX2luc3BlY3RlZE9i
amVjdHMuaW5zZXJ0KDAsIG9iamVjdCk7CisgICAgbV9pbnNwZWN0ZWRPYmplY3RzLmluc2VydCgw
LCBzdGQ6Om1vdmUob2JqZWN0KSk7CiAgICAgd2hpbGUgKG1faW5zcGVjdGVkT2JqZWN0cy5zaXpl
KCkgPiA1KQogICAgICAgICBtX2luc3BlY3RlZE9iamVjdHMucmVtb3ZlTGFzdCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oCmluZGV4IDA4ZjBj
MTVkNjFlYzFmMDAxOGQ4OGVlNzczODFhZTBmNWQ4YzcyYWEuLjYxNzhlZWVjMjhlN2Y5ZGNkODFl
NTAyNWIwY2RkOGFjNjdiNjgwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29t
bWFuZExpbmVBUElIb3N0LmgKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgICAgICB2aXJ0
dWFsIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlIGdldChKU0M6OkV4ZWNTdGF0ZSopOwogICAgICAg
ICB2aXJ0dWFsIH5JbnNwZWN0YWJsZU9iamVjdCgpIHsgfQogICAgIH07Ci0gICAgdm9pZCBhZGRJ
bnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxJbnNwZWN0YWJsZU9iamVjdD4pOworICAgIHZvaWQg
YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0YWJsZU9iamVjdD4pOwog
ICAgIHZvaWQgY2xlYXJJbnNwZWN0ZWRPYmplY3RzKCk7CiAgICAgSW5zcGVjdGFibGVPYmplY3Qq
IGluc3BlY3RlZE9iamVjdCh1bnNpZ25lZCBpbmRleCk7CiAgICAgdm9pZCBpbnNwZWN0SW1wbChQ
YXNzUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG9iamVjdFRvSW5zcGVjdCwgUGFz
c1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBoaW50cyk7CkBAIC0xMTUsOCArMTE1
LDggQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0b3JEYXRhYmFzZUFnZW50KiBtX2RhdGFiYXNlQWdl
bnQ7CiAjZW5kaWYKIAotICAgIFZlY3RvcjxPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+PiBtX2lu
c3BlY3RlZE9iamVjdHM7Ci0gICAgT3duUHRyPEluc3BlY3RhYmxlT2JqZWN0PiBtX2RlZmF1bHRJ
bnNwZWN0YWJsZU9iamVjdDsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEluc3BlY3RhYmxl
T2JqZWN0Pj4gbV9pbnNwZWN0ZWRPYmplY3RzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0
YWJsZU9iamVjdD4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRp
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0b3IuY3BwCmluZGV4IDdm
MmZhYjhiYjZlNzFhYmI4OWQzMjk2Y2QyMGEyM2JmZjgwYWY5ZTMuLmI5MTJkMTRlZjZkOGNmNmUy
NDJiMTllNTY0Mjk0NDZhZThiOTFiMGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0
b3IuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9y
bShFeGNlcHRpb25Db2RlJiBlYykgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIGlmIChtX25vZGUt
PnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IGFkb3B0
UHRyKG5ldyBSZW1vdmVDaGlsZEFjdGlvbihtX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlLmdl
dCgpKSk7CisgICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxSZW1vdmVDaGlsZEFjdGlvbj4obV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZS5nZXQoKSk7
CiAgICAgICAgICAgICBpZiAoIW1fcmVtb3ZlQ2hpbGRBY3Rpb24tPnBlcmZvcm0oZWMpKQogICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQpAQCAtMTE5LDcgKzExOSw3IEBA
IHByaXZhdGU6CiAgICAgUmVmUHRyPE5vZGU+IG1fcGFyZW50Tm9kZTsKICAgICBSZWZQdHI8Tm9k
ZT4gbV9ub2RlOwogICAgIFJlZlB0cjxOb2RlPiBtX2FuY2hvck5vZGU7Ci0gICAgT3duUHRyPFJl
bW92ZUNoaWxkQWN0aW9uPiBtX3JlbW92ZUNoaWxkQWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0
cjxSZW1vdmVDaGlsZEFjdGlvbj4gbV9yZW1vdmVDaGlsZEFjdGlvbjsKIH07CiAKIGNsYXNzIERP
TUVkaXRvcjo6UmVtb3ZlQXR0cmlidXRlQWN0aW9uIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6
OkFjdGlvbiB7CkBAIC0yMDgsOCArMjA4LDggQEAgcHVibGljOgogICAgICAgICAsIG1fbmV4dFNp
Ymxpbmcobm9kZS5uZXh0U2libGluZygpKQogICAgICAgICAsIG1faHRtbChodG1sKQogICAgICAg
ICAsIG1fbmV3Tm9kZShudWxscHRyKQotICAgICAgICAsIG1faGlzdG9yeShhZG9wdFB0cihuZXcg
SW5zcGVjdG9ySGlzdG9yeSgpKSkKLSAgICAgICAgLCBtX2RvbUVkaXRvcihhZG9wdFB0cihuZXcg
RE9NRWRpdG9yKG1faGlzdG9yeS5nZXQoKSkpKQorICAgICAgICAsIG1faGlzdG9yeShzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3Rvckhpc3Rvcnk+KCkpCisgICAgICAgICwgbV9kb21FZGl0b3Ioc3Rk
OjptYWtlX3VuaXF1ZTxET01FZGl0b3I+KG1faGlzdG9yeS5nZXQoKSkpCiAgICAgewogICAgIH0K
IApAQCAtMjQyLDggKzI0Miw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1faHRtbDsKICAgICBT
dHJpbmcgbV9vbGRIVE1MOwogICAgIE5vZGUqIG1fbmV3Tm9kZTsKLSAgICBPd25QdHI8SW5zcGVj
dG9ySGlzdG9yeT4gbV9oaXN0b3J5OwotICAgIE93blB0cjxET01FZGl0b3I+IG1fZG9tRWRpdG9y
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7CisgICAg
c3RkOjp1bmlxdWVfcHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CiB9OwogCiBjbGFzcyBET01F
ZGl0b3I6OlJlcGxhY2VXaG9sZVRleHRBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6
QWN0aW9uIHsKQEAgLTM1MiwyOSArMzUyLDI5IEBAIERPTUVkaXRvcjo6fkRPTUVkaXRvcigpIHsg
fQogCiBib29sIERPTUVkaXRvcjo6aW5zZXJ0QmVmb3JlKE5vZGUqIHBhcmVudE5vZGUsIFBhc3NS
ZWZQdHI8Tm9kZT4gbm9kZSwgTm9kZSogYW5jaG9yTm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7
Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgSW5zZXJ0QmVmb3Jl
QWN0aW9uKHBhcmVudE5vZGUsIG5vZGUsIGFuY2hvck5vZGUpKSwgZWMpOworICAgIHJldHVybiBt
X2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxJbnNlcnRCZWZvcmVBY3Rpb24+KHBh
cmVudE5vZGUsIG5vZGUsIGFuY2hvck5vZGUpLCBlYyk7CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpy
ZW1vdmVDaGlsZChOb2RlKiBwYXJlbnROb2RlLCBOb2RlKiBub2RlLCBFeGNlcHRpb25Db2RlJiBl
YykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZW1vdmVD
aGlsZEFjdGlvbihwYXJlbnROb2RlLCBub2RlKSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5
LT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KHBhcmVudE5vZGUs
IG5vZGUpLCBlYyk7CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpzZXRBdHRyaWJ1dGUoRWxlbWVudCog
ZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5l
dyBTZXRBdHRyaWJ1dGVBY3Rpb24oZWxlbWVudCwgbmFtZSwgdmFsdWUpKSwgZWMpOworICAgIHJl
dHVybiBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRBdHRyaWJ1dGVBY3Rp
b24+KGVsZW1lbnQsIG5hbWUsIHZhbHVlKSwgZWMpOwogfQogCiBib29sIERPTUVkaXRvcjo6cmVt
b3ZlQXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihu
ZXcgUmVtb3ZlQXR0cmlidXRlQWN0aW9uKGVsZW1lbnQsIG5hbWUpKSwgZWMpOworICAgIHJldHVy
biBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVBdHRyaWJ1dGVBY3Rp
b24+KGVsZW1lbnQsIG5hbWUpLCBlYyk7CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpzZXRPdXRlckhU
TUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiogbmV3Tm9kZSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgT3duUHRyPFNldE91dGVySFRNTEFjdGlvbj4gYWN0aW9uID0g
YWRvcHRQdHIobmV3IFNldE91dGVySFRNTEFjdGlvbihub2RlLCBodG1sKSk7CisgICAgYXV0byBh
Y3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVlPFNldE91dGVySFRNTEFjdGlvbj4obm9kZSwgaHRtbCk7
CiAgICAgU2V0T3V0ZXJIVE1MQWN0aW9uKiByYXdBY3Rpb24gPSBhY3Rpb24uZ2V0KCk7Ci0gICAg
Ym9vbCByZXN1bHQgPSBtX2hpc3RvcnktPnBlcmZvcm0oYWN0aW9uLnJlbGVhc2UoKSwgZWMpOwor
ICAgIGJvb2wgcmVzdWx0ID0gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6bW92ZShhY3Rpb24pLCBl
Yyk7CiAgICAgaWYgKHJlc3VsdCkKICAgICAgICAgKm5ld05vZGUgPSByYXdBY3Rpb24tPm5ld05v
ZGUoKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMzgyLDE3ICszODIsMTcgQEAgYm9vbCBET01F
ZGl0b3I6OnNldE91dGVySFRNTChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUq
KiBuZXdOb2RlLCBFeGMKIAogYm9vbCBET01FZGl0b3I6OnJlcGxhY2VXaG9sZVRleHQoVGV4dCog
dGV4dE5vZGUsIGNvbnN0IFN0cmluZyYgdGV4dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAg
cmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgUmVwbGFjZVdob2xlVGV4dEFj
dGlvbih0ZXh0Tm9kZSwgdGV4dCkpLCBlYyk7CisgICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VXaG9sZVRleHRBY3Rpb24+KHRleHROb2RlLCB0ZXh0
KSwgZWMpOwogfQogCiBib29sIERPTUVkaXRvcjo6cmVwbGFjZUNoaWxkKE5vZGUqIHBhcmVudE5v
ZGUsIFBhc3NSZWZQdHI8Tm9kZT4gbmV3Tm9kZSwgTm9kZSogb2xkTm9kZSwgRXhjZXB0aW9uQ29k
ZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgUmVw
bGFjZUNoaWxkTm9kZUFjdGlvbihwYXJlbnROb2RlLCBuZXdOb2RlLCBvbGROb2RlKSksIGVjKTsK
KyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZUNo
aWxkTm9kZUFjdGlvbj4ocGFyZW50Tm9kZSwgbmV3Tm9kZSwgb2xkTm9kZSksIGVjKTsKIH0KIAog
Ym9vbCBET01FZGl0b3I6OnNldE5vZGVWYWx1ZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHZh
bHVlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3Jt
KGFkb3B0UHRyKG5ldyBTZXROb2RlVmFsdWVBY3Rpb24obm9kZSwgdmFsdWUpKSwgZWMpOworICAg
IHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXROb2RlVmFsdWVB
Y3Rpb24+KG5vZGUsIHZhbHVlKSwgZWMpOwogfQogCiBzdGF0aWMgdm9pZCBwb3B1bGF0ZUVycm9y
U3RyaW5nKGNvbnN0IEV4Y2VwdGlvbkNvZGUmIGVjLCBFcnJvclN0cmluZyogZXJyb3JTdHJpbmcp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCmluZGV4IDk0
M2UxOGExYTNiMzdjYWUyMzljZTQwZTZjY2UzZDk4ZjI3MDczZGEuLmY2YTM4YzUwOWQyNTllY2Jk
ZGZiM2EwZmNhZTRkOGEzMmU4ZTJiMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01QYXRjaFN1cHBvcnQuY3BwCkBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBET01QYXRjaFN1cHBv
cnQ6OkRpZ2VzdCB7CiAgICAgU3RyaW5nIG1fc2hhMTsKICAgICBTdHJpbmcgbV9hdHRyc1NIQTE7
CiAgICAgTm9kZSogbV9ub2RlOwotICAgIFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4gbV9jaGlsZHJl
bjsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+IG1fY2hpbGRyZW47CiB9Owog
CiB2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudChEb2N1bWVudCogZG9jdW1lbnQs
IGNvbnN0IFN0cmluZyYgbWFya3VwKQpAQCAtMTA1LDggKzEwNSw4IEBAIHZvaWQgRE9NUGF0Y2hT
dXBwb3J0OjpwYXRjaERvY3VtZW50KGNvbnN0IFN0cmluZyYgbWFya3VwKQogICAgIHBhcnNlci0+
ZmluaXNoKCk7CiAgICAgcGFyc2VyLT5kZXRhY2goKTsKIAotICAgIE93blB0cjxEaWdlc3Q+IG9s
ZEluZm8gPSBjcmVhdGVEaWdlc3QobV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIG51bGxw
dHIpOwotICAgIE93blB0cjxEaWdlc3Q+IG5ld0luZm8gPSBjcmVhdGVEaWdlc3QobmV3RG9jdW1l
bnQtPmRvY3VtZW50RWxlbWVudCgpLCAmbV91bnVzZWROb2Rlc01hcCk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPERpZ2VzdD4gb2xkSW5mbyA9IGNyZWF0ZURpZ2VzdChtX2RvY3VtZW50LT5kb2N1bWVu
dEVsZW1lbnQoKSwgbnVsbHB0cik7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4gbmV3SW5m
byA9IGNyZWF0ZURpZ2VzdChuZXdEb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksICZtX3VudXNl
ZE5vZGVzTWFwKTsKIAogICAgIGlmICghaW5uZXJQYXRjaE5vZGUob2xkSW5mby5nZXQoKSwgbmV3
SW5mby5nZXQoKSwgSUdOT1JFX0VYQ0VQVElPTikpIHsKICAgICAgICAgLy8gRmFsbCBiYWNrIHRv
IHJld3JpdGUuCkBAIC0xMzMsMTMgKzEzMywxMyBAQCBOb2RlKiBET01QYXRjaFN1cHBvcnQ6OnBh
dGNoTm9kZShOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgRXhjZXB0aW9uQ29kZQog
CiAgICAgLy8gQ29tcG9zZSB0aGUgb2xkIGxpc3QuCiAgICAgQ29udGFpbmVyTm9kZSogcGFyZW50
Tm9kZSA9IG5vZGUucGFyZW50Tm9kZSgpOwotICAgIFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4gb2xk
TGlzdDsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+IG9sZExpc3Q7CiAgICAg
Zm9yIChOb2RlKiBjaGlsZCA9IHBhcmVudE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG9sZExpc3QuYXBwZW5kKGNyZWF0ZURp
Z2VzdChjaGlsZCwgbnVsbHB0cikpOwogCiAgICAgLy8gQ29tcG9zZSB0aGUgbmV3IGxpc3QuCiAg
ICAgU3RyaW5nIG1hcmt1cENvcHkgPSBtYXJrdXAubG93ZXIoKTsKLSAgICBWZWN0b3I8T3duUHRy
PERpZ2VzdD4+IG5ld0xpc3Q7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiBu
ZXdMaXN0OwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBwYXJlbnROb2RlLT5maXJzdENoaWxkKCk7
IGNoaWxkICE9ICZub2RlOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICBu
ZXdMaXN0LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsIG51bGxwdHIpKTsKICAgICBmb3IgKE5v
ZGUqIGNoaWxkID0gZnJhZ21lbnQtPmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQt
Pm5leHRTaWJsaW5nKCkpIHsKQEAgLTIwOCw3ICsyMDgsNyBAQCBib29sIERPTVBhdGNoU3VwcG9y
dDo6aW5uZXJQYXRjaE5vZGUoRGlnZXN0KiBvbGREaWdlc3QsIERpZ2VzdCogbmV3RGlnZXN0LCBF
eGNlcAogfQogCiBzdGQ6OnBhaXI8RE9NUGF0Y2hTdXBwb3J0OjpSZXN1bHRNYXAsIERPTVBhdGNo
U3VwcG9ydDo6UmVzdWx0TWFwPgotRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxP
d25QdHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG5l
d0xpc3QpCitET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxEaWdlc3Q+PiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+
PiYgbmV3TGlzdCkKIHsKICAgICBSZXN1bHRNYXAgbmV3TWFwKG5ld0xpc3Quc2l6ZSgpKTsKICAg
ICBSZXN1bHRNYXAgb2xkTWFwKG9sZExpc3Quc2l6ZSgpKTsKQEAgLTI5NSw3ICsyOTUsNyBAQCBE
T01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgb2xkTGlz
dCwgY29uc3QgVmVjdG9yPE93blB0cgogICAgIHJldHVybiBzdGQ6Om1ha2VfcGFpcihvbGRNYXAs
IG5ld01hcCk7CiB9CiAKLWJvb2wgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4o
Q29udGFpbmVyTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYg
b2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgbmV3TGlzdCwgRXhjZXB0aW9u
Q29kZSYgZWMpCitib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKENvbnRh
aW5lck5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0
Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4mIG5ld0xp
c3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIHN0ZDo6cGFpcjxSZXN1bHRNYXAsIFJlc3Vs
dE1hcD4gcmVzdWx0TWFwcyA9IGRpZmYob2xkTGlzdCwgbmV3TGlzdCk7CiAgICAgUmVzdWx0TWFw
JiBvbGRNYXAgPSByZXN1bHRNYXBzLmZpcnN0OwpAQCAtNDA3LDEwICs0MDcsOSBAQCBzdGF0aWMg
dm9pZCBhZGRTdHJpbmdUb1NIQTEoU0hBMSYgc2hhMSwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiAg
ICAgc2hhMS5hZGRCeXRlcyhyZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihjU3RyaW5n
LmRhdGEoKSksIGNTdHJpbmcubGVuZ3RoKCkpOwogfQogCi1QYXNzT3duUHRyPERPTVBhdGNoU3Vw
cG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlKiBub2RlLCBV
bnVzZWROb2Rlc01hcCogdW51c2VkTm9kZXNNYXApCitzdGQ6OnVuaXF1ZV9wdHI8RE9NUGF0Y2hT
dXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5vZGUs
IFVudXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKIHsKLSAgICBEaWdlc3QqIGRpZ2VzdCA9
IG5ldyBEaWdlc3Qobm9kZSk7Ci0KKyAgICBhdXRvIGRpZ2VzdCA9IHN0ZDo6bWFrZV91bmlxdWU8
RGlnZXN0Pihub2RlKTsKICAgICBTSEExIHNoYTE7CiAKICAgICBOb2RlOjpOb2RlVHlwZSBub2Rl
VHlwZSA9IG5vZGUtPm5vZGVUeXBlKCk7CkBAIC00MjEsMTAgKzQyMCwxMCBAQCBQYXNzT3duUHRy
PERPTVBhdGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChO
b2RlKiBub2RlLCBVbgogICAgIGlmIChub2RlLT5ub2RlVHlwZSgpID09IE5vZGU6OkVMRU1FTlRf
Tk9ERSkgewogICAgICAgICBOb2RlKiBjaGlsZCA9IG5vZGUtPmZpcnN0Q2hpbGQoKTsKICAgICAg
ICAgd2hpbGUgKGNoaWxkKSB7Ci0gICAgICAgICAgICBPd25QdHI8RGlnZXN0PiBjaGlsZEluZm8g
PSBjcmVhdGVEaWdlc3QoY2hpbGQsIHVudXNlZE5vZGVzTWFwKTsKKyAgICAgICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxEaWdlc3Q+IGNoaWxkSW5mbyA9IGNyZWF0ZURpZ2VzdChjaGlsZCwgdW51c2Vk
Tm9kZXNNYXApOwogICAgICAgICAgICAgYWRkU3RyaW5nVG9TSEExKHNoYTEsIGNoaWxkSW5mby0+
bV9zaGExKTsKICAgICAgICAgICAgIGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCk7Ci0gICAg
ICAgICAgICBkaWdlc3QtPm1fY2hpbGRyZW4uYXBwZW5kKGNoaWxkSW5mby5yZWxlYXNlKCkpOwor
ICAgICAgICAgICAgZGlnZXN0LT5tX2NoaWxkcmVuLmFwcGVuZChzdGQ6Om1vdmUoY2hpbGRJbmZv
KSk7CiAgICAgICAgIH0KICAgICAgICAgRWxlbWVudCogZWxlbWVudCA9IHRvRWxlbWVudChub2Rl
KTsKIApAQCAtNDQ1LDggKzQ0NCw5IEBAIFBhc3NPd25QdHI8RE9NUGF0Y2hTdXBwb3J0OjpEaWdl
c3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5vZGUsIFVuCiAgICAgc2hh
MS5jb21wdXRlSGFzaChoYXNoKTsKICAgICBkaWdlc3QtPm1fc2hhMSA9IGJhc2U2NEVuY29kZSho
YXNoLmRhdGEoKSwgMTApOwogICAgIGlmICh1bnVzZWROb2Rlc01hcCkKLSAgICAgICAgdW51c2Vk
Tm9kZXNNYXAtPmFkZChkaWdlc3QtPm1fc2hhMSwgZGlnZXN0KTsKLSAgICByZXR1cm4gYWRvcHRQ
dHIoZGlnZXN0KTsKKyAgICAgICAgdW51c2VkTm9kZXNNYXAtPmFkZChkaWdlc3QtPm1fc2hhMSwg
ZGlnZXN0LmdldCgpKTsKKworICAgIHJldHVybiBkaWdlc3Q7CiB9CiAKIGJvb2wgRE9NUGF0Y2hT
dXBwb3J0OjppbnNlcnRCZWZvcmVBbmRNYXJrQXNVc2VkKENvbnRhaW5lck5vZGUqIHBhcmVudE5v
ZGUsIERpZ2VzdCogZGlnZXN0LCBOb2RlKiBhbmNob3IsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oCmluZGV4IGFkNTQ0ODQ4NzY0
ZGI3OWM1YmIwOTJjZTdkMWZjYjQ4N2ExMWZiNGEuLjZhOTYwZTg1ZGVmNTc2MmYxZTIyMmViNjY3
YzYxOTIxNDMwNzI2YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Q
YXRjaFN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBw
b3J0LmgKQEAgLTM0LDggKzM0LDYgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAKICNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNjUsOSArNjMsOSBAQCBwcml2YXRlOgogICAgIHR5
cGVkZWYgSGFzaE1hcDxTdHJpbmcsIERpZ2VzdCo+IFVudXNlZE5vZGVzTWFwOwogCiAgICAgYm9v
bCBpbm5lclBhdGNoTm9kZShEaWdlc3QqIG9sZE5vZGUsIERpZ2VzdCogbmV3Tm9kZSwgRXhjZXB0
aW9uQ29kZSYpOwotICAgIHN0ZDo6cGFpcjxSZXN1bHRNYXAsIFJlc3VsdE1hcD4gZGlmZihjb25z
dCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRDaGlsZHJlbiwgY29uc3QgVmVjdG9yPE93blB0
cjxEaWdlc3Q+PiYgbmV3Q2hpbGRyZW4pOwotICAgIGJvb2wgaW5uZXJQYXRjaENoaWxkcmVuKENv
bnRhaW5lck5vZGUqLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRDaGlsZHJlbiwg
Y29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgbmV3Q2hpbGRyZW4sIEV4Y2VwdGlvbkNvZGUm
KTsKLSAgICBQYXNzT3duUHRyPERpZ2VzdD4gY3JlYXRlRGlnZXN0KE5vZGUqLCBVbnVzZWROb2Rl
c01hcCopOworICAgIHN0ZDo6cGFpcjxSZXN1bHRNYXAsIFJlc3VsdE1hcD4gZGlmZihjb25zdCBW
ZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+JiBvbGRDaGlsZHJlbiwgY29uc3QgVmVjdG9y
PHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiYgbmV3Q2hpbGRyZW4pOworICAgIGJvb2wgaW5uZXJQ
YXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUqLCBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERpZ2VzdD4+JiBvbGRDaGlsZHJlbiwgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdl
c3Q+PiYgbmV3Q2hpbGRyZW4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RGlnZXN0PiBjcmVhdGVEaWdlc3QoTm9kZSosIFVudXNlZE5vZGVzTWFwKik7CiAgICAgYm9vbCBp
bnNlcnRCZWZvcmVBbmRNYXJrQXNVc2VkKENvbnRhaW5lck5vZGUqLCBEaWdlc3QqLCBOb2RlKiBh
bmNob3IsIEV4Y2VwdGlvbkNvZGUmKTsKICAgICBib29sIHJlbW92ZUNoaWxkQW5kTW92ZVRvTmV3
KERpZ2VzdCosIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG1hcmtOb2RlQXNVc2VkKERpZ2Vz
dCopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVBZ2VudC5oCmluZGV4IDUyZDhlMGVkZTVkNTVjNTIzOGJjZDYyN2RlMTk1
ZjY1YTYwZWFlZGEuLmE5Yzc2NDI4ODcxMjVkN2NiNzBkYTUwYTkyNDU5NzE2MWYzZjhkMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNh
Y2hlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmgKQEAgLTMyLDcgKzMyLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JX
ZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERp
c3BhdGNoZXJzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JB
cHBsaWNhdGlvbkNhY2hlRnJvbnRlbmREaXNwYXRjaGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggOTMzOWJiYTdmZmUwZjA3MmJiN2Mw
ZTM3Y2JjMTNmZmVmNDg1ZTg5Yi4uYmRjMmM5YzdmOTkyMDdlMzE0YzExOTk0YjNiNjNjZTZmMGY3
Y2VkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQu
Y3BwCkBAIC0xNjUsNyArMTY1LDcgQEAgdm9pZCBVcGRhdGVSZWdpb25MYXlvdXRUYXNrOjp0aW1l
ckZpcmVkKFRpbWVyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+JikKICAgICBpZiAoIW1fbmFtZWRG
bG93cy5pc0VtcHR5KCkgJiYgIW1fdGltZXIuaXNBY3RpdmUoKSkKICAgICAgICAgbV90aW1lci5z
dGFydE9uZVNob3QoMCk7CiB9Ci0gICAgCisKIGNsYXNzIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNr
IHsKIHB1YmxpYzoKICAgICBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JDU1NBZ2Vu
dCopOwpAQCAtMTczLDcgKzE3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVuc2NoZWR1bGUoV2Vi
S2l0TmFtZWRGbG93Kik7CiAgICAgdm9pZCByZXNldCgpOwogICAgIHZvaWQgdGltZXJGaXJlZChU
aW1lcjxDaGFuZ2VSZWdpb25PdmVyc2V0VGFzaz4mKTsKLSAgICAKKwogcHJpdmF0ZToKICAgICBJ
bnNwZWN0b3JDU1NBZ2VudCogbV9jc3NBZ2VudDsKICAgICBUaW1lcjxDaGFuZ2VSZWdpb25PdmVy
c2V0VGFzaz4gbV90aW1lcjsKQEAgLTE4OSw3ICsxODksNyBAQCBDaGFuZ2VSZWdpb25PdmVyc2V0
VGFzazo6Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2soSW5zcGVjdG9yQ1NTQWdlbnQqIGNzc0FnZW50
KQogdm9pZCBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzazo6c2NoZWR1bGVGb3IoV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3csIGludCBkb2N1bWVudE5vZGVJZCkKIHsKICAgICBtX25hbWVkRmxvd3Mu
YWRkKG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwotICAgIAorCiAgICAgaWYgKCFtX3RpbWVy
LmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogfQpAQCAtMjY2
LDcgKzI2Niw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCJTZXRT
dHlsZVNoZWV0VGV4dCAlcyIsIG1fc3R5bGVTaGVldC0+aWQoKS51dGY4KCkuZGF0YSgpKTsKICAg
ICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWVyZ2UoUGFzc093blB0cjxBY3Rpb24+IGFjdGlvbikg
b3ZlcnJpZGUKKyAgICB2aXJ0dWFsIHZvaWQgbWVyZ2Uoc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4g
YWN0aW9uKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUKGFjdGlvbi0+bWVyZ2VJZCgp
ID09IG1lcmdlSWQoKSk7CiAKQEAgLTMxMCw3ICszMTAsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiBTdHJpbmc6OmZvcm1hdCgiU2V0U3R5bGVUZXh0ICVzOiV1IiwgbV9zdHlsZVNoZWV0LT5p
ZCgpLnV0ZjgoKS5kYXRhKCksIG1fY3NzSWQub3JkaW5hbCgpKTsKICAgICB9CiAKLSAgICB2aXJ0
dWFsIHZvaWQgbWVyZ2UoUGFzc093blB0cjxBY3Rpb24+IGFjdGlvbikgb3ZlcnJpZGUKKyAgICB2
aXJ0dWFsIHZvaWQgbWVyZ2Uoc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4gYWN0aW9uKSBvdmVycmlk
ZQogICAgIHsKICAgICAgICAgQVNTRVJUKGFjdGlvbi0+bWVyZ2VJZCgpID09IG1lcmdlSWQoKSk7
CiAKQEAgLTM2OSw3ICszNjksNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZv
cm1hdCgiU2V0UHJvcGVydHlUZXh0ICVzOiV1OiVzIiwgbV9zdHlsZVNoZWV0LT5pZCgpLnV0Zjgo
KS5kYXRhKCksIG1fcHJvcGVydHlJbmRleCwgbV9vdmVyd3JpdGUgPyAidHJ1ZSIgOiAiZmFsc2Ui
KTsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgbWVyZ2UoUGFzc093blB0cjxBY3Rpb24+IGFj
dGlvbikgb3ZlcnJpZGUKKyAgICB2aXJ0dWFsIHZvaWQgbWVyZ2Uoc3RkOjp1bmlxdWVfcHRyPEFj
dGlvbj4gYWN0aW9uKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgQVNTRVJUKGFjdGlvbi0+bWVy
Z2VJZCgpID09IG1lcmdlSWQoKSk7CiAKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50Ojp3aWxsUmVtb3ZlTmFtZWRGbG93KERvY3VtZW50KiBkb2N1bWVudCwgV2ViS2l0
TmFtZWRGbG93KgogCiAgICAgaWYgKG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzaykKICAgICAgICAg
bV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT51bnNjaGVkdWxlKG5hbWVkRmxvdyk7Ci0gICAgCisK
ICAgICBpZiAobV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKICAgICAgICAgbV9jaGFuZ2VSZWdp
b25PdmVyc2V0VGFzay0+dW5zY2hlZHVsZShuYW1lZEZsb3cpOwogCkBAIC01OTYsNyArNTk2LDcg
QEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkVXBkYXRlUmVnaW9uTGF5b3V0KERvY3VtZW50
KiBkb2N1bWVudCwgV2ViS2l0TmFtZWRGbG8KICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFt
X3VwZGF0ZVJlZ2lvbkxheW91dFRhc2spCi0gICAgICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFz
ayA9IGFkb3B0UHRyKG5ldyBVcGRhdGVSZWdpb25MYXlvdXRUYXNrKHRoaXMpKTsKKyAgICAgICAg
bV91cGRhdGVSZWdpb25MYXlvdXRUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxVcGRhdGVSZWdpb25M
YXlvdXRUYXNrPih0aGlzKTsKICAgICBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2stPnNjaGVkdWxl
Rm9yKG5hbWVkRmxvdywgZG9jdW1lbnROb2RlSWQpOwogfQogCkBAIC02MTYsOSArNjE2LDkgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6ZGlkQ2hhbmdlUmVnaW9uT3ZlcnNldChEb2N1bWVudCog
ZG9jdW1lbnQsIFdlYktpdE5hbWVkRmwKICAgICBpbnQgZG9jdW1lbnROb2RlSWQgPSBkb2N1bWVu
dE5vZGVXaXRoUmVxdWVzdGVkRmxvd3NJZChkb2N1bWVudCk7CiAgICAgaWYgKCFkb2N1bWVudE5v
ZGVJZCkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgaWYgKCFtX2NoYW5nZVJlZ2lvbk92
ZXJzZXRUYXNrKQotICAgICAgICBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrID0gYWRvcHRQdHIo
bmV3IENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKHRoaXMpKTsKKyAgICAgICAgbV9jaGFuZ2VSZWdp
b25PdmVyc2V0VGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+
KHRoaXMpOwogICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnNjaGVkdWxlRm9yKG5hbWVk
RmxvdywgZG9jdW1lbnROb2RlSWQpOwogfQogCkBAIC02MjYsMTAgKzYyNiwxMCBAQCB2b2lkIElu
c3BlY3RvckNTU0FnZW50OjpyZWdpb25PdmVyc2V0Q2hhbmdlZChXZWJLaXROYW1lZEZsb3cqIG5h
bWVkRmxvdywgaW50IGRvYwogewogICAgIGlmIChuYW1lZEZsb3ctPmZsb3dTdGF0ZSgpID09IFdl
YktpdE5hbWVkRmxvdzo6Rmxvd1N0YXRlTnVsbCkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAg
ICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7CiAgICAgUmVmPFdlYktpdE5hbWVkRmxvdz4gcHJv
dGVjdCgqbmFtZWRGbG93KTsKLSAgICAKKwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZWdp
b25PdmVyc2V0Q2hhbmdlZChidWlsZE9iamVjdEZvck5hbWVkRmxvdygmZXJyb3JTdHJpbmcsIG5h
bWVkRmxvdywgZG9jdW1lbnROb2RlSWQpKTsKIH0KIApAQCAtODAzLDcgKzgwMyw3IEBAIHZvaWQg
SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlvbkNvZGUg
ZWMgPSAwOwotICAgIG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcg
U2V0U3R5bGVTaGVldFRleHRBY3Rpb24oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCkpLCBlYyk7
CisgICAgbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0
U3R5bGVTaGVldFRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpLCBlYyk7CiAg
ICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwog
fQogCkBAIC04MTcsNyArODE3LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVU
ZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3AKICAgICAgICAg
cmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0g
bV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBTZXRTdHlsZVRleHRB
Y3Rpb24oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCkpLCBlYyk7CisgICAg
Ym9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91
bmlxdWU8U2V0U3R5bGVUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElk
LCB0ZXh0KSwgZWMpOwogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXN1bHQgPSBpbnNwZWN0
b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnN0
eWxlRm9ySWQoY29tcG91bmRJZCkpOwogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFn
ZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKQEAgLTgzMyw3ICs4MzMsNyBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjpzZXRQcm9wZXJ0eVRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBSZWZQdHI8SQogICAgICAgICByZXR1cm47CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
LSAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQ
dHIobmV3IFNldFByb3BlcnR5VGV4dEFjdGlvbihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3Vu
ZElkLCBwcm9wZXJ0eUluZGV4LCB0ZXh0LCBvdmVyd3JpdGUpKSwgZWMpOworICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNl
dFByb3BlcnR5VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgcHJv
cGVydHlJbmRleCwgdGV4dCwgb3ZlcndyaXRlKSwgZWMpOwogICAgIGlmIChzdWNjZXNzKQogICAg
ICAgICByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxlKGlu
c3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoY29tcG91bmRJZCkpOwogICAgICplcnJvclN0
cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKQEAgLTg0OSw3ICs4
NDksNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50Ojp0b2dnbGVQcm9wZXJ0eShFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbgogICAgICAgICByZXR1cm47CiAKICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0
b3J5KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFRvZ2dsZVByb3BlcnR5QWN0aW9uKGluc3BlY3Rv
clN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHByb3BlcnR5SW5kZXgsIGRpc2FibGUpKSwgZWMpOwor
ICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1h
a2VfdW5pcXVlPFRvZ2dsZVByb3BlcnR5QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21w
b3VuZElkLCBwcm9wZXJ0eUluZGV4LCBkaXNhYmxlKSwgZWMpOwogICAgIGlmIChzdWNjZXNzKQog
ICAgICAgICByZXN1bHQgPSBpbnNwZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclN0eWxl
KGluc3BlY3RvclN0eWxlU2hlZXQtPnN0eWxlRm9ySWQoY29tcG91bmRJZCkpOwogICAgICplcnJv
clN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKQEAgLTg2NSw3
ICs4NjUsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IoRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SQogICAgICAgICByZXR1cm47CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5o
aXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldFJ1bGVTZWxlY3RvckFjdGlvbihpbnNw
ZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBzZWxlY3RvcikpLCBlYyk7CisgICAgYm9vbCBz
dWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8
U2V0UnVsZVNlbGVjdG9yQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBz
ZWxlY3RvciksIGVjKTsKIAogICAgIGlmIChzdWNjZXNzKQogICAgICAgICByZXN1bHQgPSBpbnNw
ZWN0b3JTdHlsZVNoZWV0LT5idWlsZE9iamVjdEZvclJ1bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+
cnVsZUZvcklkKGNvbXBvdW5kSWQpKTsKQEAgLTg4NSw5ICs4ODUsOSBAQCB2b2lkIEluc3BlY3Rv
ckNTU0FnZW50OjphZGRSdWxlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgaW50IGNv
bnRleHROb2RlSQogICAgIH0KIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE93blB0
cjxBZGRSdWxlQWN0aW9uPiBhY3Rpb24gPSBhZG9wdFB0cihuZXcgQWRkUnVsZUFjdGlvbihpbnNw
ZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3RvcikpOworICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtl
X3VuaXF1ZTxBZGRSdWxlQWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBzZWxlY3Rvcik7CiAg
ICAgQWRkUnVsZUFjdGlvbiogcmF3QWN0aW9uID0gYWN0aW9uLmdldCgpOwotICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShhY3Rpb24ucmVsZWFzZSgpLCBl
Yyk7CisgICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0
ZDo6bW92ZShhY3Rpb24pLCBlYyk7CiAgICAgaWYgKCFzdWNjZXNzKSB7CiAgICAgICAgICplcnJv
clN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKICAgICAgICAg
cmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApp
bmRleCAxMGI0ZmU5MWY4MjkwYTQ3M2VlODQ2YTQzOWNiYjY3ODdkYjExNWI5Li4yMGIzYzE1MDc1
OTg5OTc4ODMzOWM5MzYyNDkwZmI1MDIxZjlmZDMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaApAQCAtMTgxLDggKzE4MSw4IEBAIHByaXZhdGU6CiAg
ICAgRG9jdW1lbnRUb1ZpYUluc3BlY3RvclN0eWxlU2hlZXQgbV9kb2N1bWVudFRvSW5zcGVjdG9y
U3R5bGVTaGVldDsKICAgICBOb2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlIG1fbm9kZUlkVG9Gb3Jj
ZWRQc2V1ZG9TdGF0ZTsKICAgICBIYXNoU2V0PGludD4gbV9uYW1lZEZsb3dDb2xsZWN0aW9uc1Jl
cXVlc3RlZDsKLSAgICBPd25QdHI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4gbV91cGRhdGVSZWdp
b25MYXlvdXRUYXNrOwotICAgIE93blB0cjxDaGFuZ2VSZWdpb25PdmVyc2V0VGFzaz4gbV9jaGFu
Z2VSZWdpb25PdmVyc2V0VGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VXBkYXRlUmVnaW9uTGF5
b3V0VGFzaz4gbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxD
aGFuZ2VSZWdpb25PdmVyc2V0VGFzaz4gbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzazsKIAogICAg
IGludCBtX2xhc3RTdHlsZVNoZWV0SWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAppbmRleCBhOWEzOGUyMzdiZjViMDhhOGI5ZTkwMDJi
NGMxOWJlNmYxOTA4MjA0Li5mYmUzMmMyM2ZkN2M1MWFjZDE1M2EzYTY4MzE4OGY5Y2ZkYzY4Mzgz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5o
IgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDkwM2Q3ZDVmMTAzMmQzNDA2ZjRjMmNm
ZGY5NjQ3ZTFkMzQ0OWI3N2IuLjExZGMyMzk0MmVjODc5MGIwNDY2NWMyMzRmNzVlNzNhNGUxMWFj
MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cApAQCAtOTYsNyArOTYsNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdE1h
bmFnZXIuaD4KICNpbmNsdWRlIDxydW50aW1lL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtMjM2LDggKzIzNSw4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRp
ZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kCiAg
ICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRPTUZy
b250ZW5kRGlzcGF0Y2hlcj4oZnJvbnRlbmRDaGFubmVsKTsKICAgICBtX2JhY2tlbmREaXNwYXRj
aGVyID0gSW5zcGVjdG9yRE9NQmFja2VuZERpc3BhdGNoZXI6OmNyZWF0ZShiYWNrZW5kRGlzcGF0
Y2hlciwgdGhpcyk7CiAKLSAgICBtX2hpc3RvcnkgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9ySGlz
dG9yeSgpKTsKLSAgICBtX2RvbUVkaXRvciA9IGFkb3B0UHRyKG5ldyBET01FZGl0b3IobV9oaXN0
b3J5LmdldCgpKSk7CisgICAgbV9oaXN0b3J5ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JI
aXN0b3J5PigpOworICAgIG1fZG9tRWRpdG9yID0gc3RkOjptYWtlX3VuaXF1ZTxET01FZGl0b3I+
KG1faGlzdG9yeS5nZXQoKSk7CiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3Bl
Y3RvckRPTUFnZW50KHRoaXMpOwogICAgIG1fZG9jdW1lbnQgPSBtX3BhZ2VBZ2VudC0+bWFpbkZy
YW1lKCktPmRvY3VtZW50KCk7CkBAIC0yNTEsOCArMjUwLDggQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6d2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29ubmVjdFJl
YXNvbikKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IG51bGxwdHI7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlci5jbGVhcigpOwogCi0gICAgbV9oaXN0b3J5LmNsZWFyKCk7Ci0gICAgbV9kb21F
ZGl0b3IuY2xlYXIoKTsKKyAgICBtX2hpc3RvcnkucmVzZXQoKTsKKyAgICBtX2RvbUVkaXRvci5y
ZXNldCgpOwogCiAgICAgRXJyb3JTdHJpbmcgZXJyb3I7CiAgICAgc2V0U2VhcmNoaW5nRm9yTm9k
ZSgmZXJyb3IsIGZhbHNlLCAwKTsKQEAgLTU4NCw3ICs1ODMsNyBAQCBpbnQgSW5zcGVjdG9yRE9N
QWdlbnQ6OnB1c2hOb2RlUGF0aFRvRnJvbnRlbmQoTm9kZSogbm9kZVRvUHVzaCkKICAgICAgICAg
Tm9kZSogcGFyZW50ID0gaW5uZXJQYXJlbnROb2RlKG5vZGUpOwogICAgICAgICBpZiAoIXBhcmVu
dCkgewogICAgICAgICAgICAgLy8gTm9kZSBiZWluZyBwdXNoZWQgaXMgZGV0YWNoZWQgLT4gcHVz
aCBzdWJ0cmVlIHJvb3QuCi0gICAgICAgICAgICBPd25QdHI8Tm9kZVRvSWRNYXA+IG5ld01hcCA9
IGFkb3B0UHRyKG5ldyBOb2RlVG9JZE1hcCk7CisgICAgICAgICAgICBhdXRvIG5ld01hcCA9IHN0
ZDo6bWFrZV91bmlxdWU8Tm9kZVRvSWRNYXA+KCk7CiAgICAgICAgICAgICBkYW5nbGluZ01hcCA9
IG5ld01hcC5nZXQoKTsKICAgICAgICAgICAgIG1fZGFuZ2xpbmdOb2RlVG9JZE1hcHMuYXBwZW5k
KG5ld01hcC5yZWxlYXNlKCkpOwogICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT4+IGNoaWxkcmVu
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RE9NOjpOb2RlPjo6Y3JlYXRlKCk7CkBAIC0xMDMyLDE0ICsxMDMxLDE0IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBib29sIGVuYWJsCiAgICAgbV9vdmVybGF5LT5kaWRTZXRTZWFyY2hpbmdGb3JOb2RlKG1fc2Vh
cmNoaW5nRm9yTm9kZSk7CiB9CiAKLVBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0
KQorc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKICAgICBpZiAo
IWhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50
ZXJuYWwgZXJyb3I6IGhpZ2hsaWdodCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpcyBtaXNzaW5n
IjsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgT3duUHRyPEhpZ2hsaWdo
dENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENvbmZpZygp
KTsKKyAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0
Q29uZmlnPigpOwogICAgIGJvb2wgc2hvd0luZm8gPSBmYWxzZTsgLy8gRGVmYXVsdDogZmFsc2Ug
KGRvIG5vdCBzaG93IGEgdG9vbHRpcCkuCiAgICAgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LT5n
ZXRCb29sZWFuKCJzaG93SW5mbyIsICZzaG93SW5mbyk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5z
aG93SW5mbyA9IHNob3dJbmZvOwpAQCAtMTA1MSw3ICsxMDUwLDcgQEAgUGFzc093blB0cjxIaWdo
bGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVj
dG9yT2JqZWMKICAgICBoaWdobGlnaHRDb25maWctPnBhZGRpbmcgPSBwYXJzZUNvbmZpZ0NvbG9y
KCJwYWRkaW5nQ29sb3IiLCBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwogICAgIGhpZ2hsaWdo
dENvbmZpZy0+Ym9yZGVyID0gcGFyc2VDb25maWdDb2xvcigiYm9yZGVyQ29sb3IiLCBoaWdobGln
aHRJbnNwZWN0b3JPYmplY3QpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+bWFyZ2luID0gcGFyc2VD
b25maWdDb2xvcigibWFyZ2luQ29sb3IiLCBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOwotICAg
IHJldHVybiBoaWdobGlnaHRDb25maWcucmVsZWFzZSgpOworICAgIHJldHVybiBoaWdobGlnaHRD
b25maWc7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxl
ZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIGhpZ2hsaWdodENvbmZpZykKQEAgLTEwNjEsMjcgKzEwNjAsMjcgQEAg
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgYm9vbCBlbmEKIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxp
Z2h0UmVjdChFcnJvclN0cmluZyosIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRl
cykKIHsKLSAgICBPd25QdHI8RmxvYXRRdWFkPiBxdWFkID0gYWRvcHRQdHIobmV3IEZsb2F0UXVh
ZChGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpKTsKLSAgICBpbm5lckhpZ2hsaWdodFF1
YWQocXVhZC5yZWxlYXNlKCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRl
cyk7CisgICAgYXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KEZsb2F0UmVj
dCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSk7CisgICAgaW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6bW92
ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHF1YWRBcnJheSwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAg
T3duUHRyPEZsb2F0UXVhZD4gcXVhZCA9IGFkb3B0UHRyKG5ldyBGbG9hdFF1YWQoKSk7CisgICAg
YXV0byBxdWFkID0gc3RkOjptYWtlX3VuaXF1ZTxGbG9hdFF1YWQ+KCk7CiAgICAgaWYgKCFwYXJz
ZVF1YWQocXVhZEFycmF5LCBxdWFkLmdldCgpKSkgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
SW52YWxpZCBRdWFkIGZvcm1hdCI7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaW5uZXJI
aWdobGlnaHRRdWFkKHF1YWQucmVsZWFzZSgpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdl
Q29vcmRpbmF0ZXMpOworICAgIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6Om1vdmUocXVhZCksIGNv
bG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAKLXZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0UXVhZD4gcXVh
ZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0
ZXMpCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlx
dWVfcHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNv
bG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBi
b29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgT3duUHRyPEhpZ2hsaWdodENvbmZpZz4g
aGlnaGxpZ2h0Q29uZmlnID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENvbmZpZygpKTsKKyAgICBh
dXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigp
OwogICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAg
IGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xv
cik7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT51c2VQYWdlQ29vcmRpbmF0ZXMgPSB1c2VQYWdlQ29v
cmRpbmF0ZXMgPyAqdXNlUGFnZUNvb3JkaW5hdGVzIDogZmFsc2U7Ci0gICAgbV9vdmVybGF5LT5o
aWdobGlnaHRRdWFkKHF1YWQsICpoaWdobGlnaHRDb25maWcpOworICAgIG1fb3ZlcmxheS0+aGln
aGxpZ2h0UXVhZChzdGQ6Om1vdmUocXVhZCksICpoaWdobGlnaHRDb25maWcpOwogfQogCiB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGhpZ2hsaWdodEluc3BlY3Rvck9iamVj
dCwgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpCkBAIC0xMDk5LDcg
KzEwOTgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKEVycm9yU3Ry
aW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElucwogICAgIGlmICghbm9kZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmln
ID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChlcnJvclN0cmluZywgaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0LmdldCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0
Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2Jq
ZWN0KGVycm9yU3RyaW5nLCBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QuZ2V0KCkpOwogICAgIGlm
ICghaGlnaGxpZ2h0Q29uZmlnKQogICAgICAgICByZXR1cm47CiAKQEAgLTExMTQsNyArMTExMyw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKAogewogICAgIEZyYW1l
KiBmcmFtZSA9IG1fcGFnZUFnZW50LT5mcmFtZUZvcklkKGZyYW1lSWQpOwogICAgIGlmIChmcmFt
ZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkpIHsKLSAgICAgICAgT3duUHRyPEhpZ2hsaWdodENv
bmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gYWRvcHRQdHIobmV3IEhpZ2hsaWdodENvbmZpZygpKTsK
KyAgICAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdo
dENvbmZpZz4oKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5zaG93SW5mbyA9IHRydWU7IC8v
IEFsd2F5cyBzaG93IHRvb2x0aXBzIGZvciBmcmFtZXMuCiAgICAgICAgIGhpZ2hsaWdodENvbmZp
Zy0+Y29udGVudCA9IHBhcnNlQ29sb3IoY29sb3IpOwogICAgICAgICBoaWdobGlnaHRDb25maWct
PmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwpAQCAtMTY0Miw3ICsx
NjQxLDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlkSW52YWxpZGF0ZVN0eWxlQXR0cihO
b2RlKiBub2RlKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fcmV2YWxpZGF0ZVN0eWxl
QXR0clRhc2spCi0gICAgICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2sgPSBhZG9wdFB0cihu
ZXcgUmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzayh0aGlzKSk7CisgICAgICAgIG1fcmV2YWxp
ZGF0ZVN0eWxlQXR0clRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFJldmFsaWRhdGVTdHlsZUF0dHJp
YnV0ZVRhc2s+KHRoaXMpOwogICAgIG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2stPnNjaGVkdWxl
Rm9yKHRvRWxlbWVudChub2RlKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKaW5kZXggZmE0MWM3ZmE1NTIyNjk5ODIwMGU1YTE5MWZkZjU4NmE2
MjYwZDRhNS4uN2QzM2JiZThhZjM3NzgyMjFmMDMyZDRmMGU0ZTUxZTY0ZmMxNmVmOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTQxLDggKzQx
LDYgQEAKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9BdG9taWNTdHJpbmcuaD4KQEAgLTIx
Myw3ICsyMTEsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRTZWFyY2hpbmdG
b3JOb2RlKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBQYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4g
aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyosIEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JP
YmplY3QoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0
SW5zcGVjdG9yT2JqZWN0KTsKIAogICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRob2RzLgogICAgIHR5
cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGludD4gTm9kZVRvSWRNYXA7CkBAIC0yNDEsNyAr
MjM5LDcgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlzY2FyZEJpbmRpbmdzKCk7CiAKLSAgICB2
b2lkIGlubmVySGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0UXVhZD4sIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VD
b29yZGluYXRlcyk7CisgICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRy
PEZsb2F0UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIGNv
bG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29s
b3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcyk7CiAKICAgICBJbnNwZWN0b3JQYWdl
QWdlbnQqIG1fcGFnZUFnZW50OwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
KiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKQEAgLTI1Myw3ICsyNTEsNyBAQCBwcml2YXRlOgog
ICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIEJhY2tlbmROb2RlSWQ+IE5vZGVUb0Jh
Y2tlbmRJZE1hcDsKICAgICBIYXNoTWFwPFN0cmluZywgTm9kZVRvQmFja2VuZElkTWFwPiBtX25v
ZGVHcm91cFRvQmFja2VuZElkTWFwOwogICAgIC8vIE93bnMgbm9kZSBtYXBwaW5ncyBmb3IgZGFu
Z2xpbmcgbm9kZXMuCi0gICAgVmVjdG9yPE93blB0cjxOb2RlVG9JZE1hcD4+IG1fZGFuZ2xpbmdO
b2RlVG9JZE1hcHM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxOb2RlVG9JZE1hcD4+IG1f
ZGFuZ2xpbmdOb2RlVG9JZE1hcHM7CiAgICAgSGFzaE1hcDxpbnQsIE5vZGUqPiBtX2lkVG9Ob2Rl
OwogICAgIEhhc2hNYXA8aW50LCBOb2RlVG9JZE1hcCo+IG1faWRUb05vZGVzTWFwOwogICAgIEhh
c2hTZXQ8aW50PiBtX2NoaWxkcmVuUmVxdWVzdGVkOwpAQCAtMjYzLDEyICsyNjEsMTIgQEAgcHJp
dmF0ZToKICAgICBSZWZQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgVmVjdG9yPFJlZlB0cjxOb2RlPj4+IFNlYXJjaFJlc3VsdHM7CiAgICAgU2Vh
cmNoUmVzdWx0cyBtX3NlYXJjaFJlc3VsdHM7Ci0gICAgT3duUHRyPFJldmFsaWRhdGVTdHlsZUF0
dHJpYnV0ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRhc2s7CisgICAgc3RkOjp1bmlxdWVf
cHRyPFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2s+IG1fcmV2YWxpZGF0ZVN0eWxlQXR0clRh
c2s7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZVRvRm9jdXM7CiAgICAgYm9vbCBtX3NlYXJjaGlu
Z0Zvck5vZGU7Ci0gICAgT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gbV9pbnNwZWN0TW9kZUhpZ2hs
aWdodENvbmZpZzsKLSAgICBPd25QdHI8SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OwotICAg
IE93blB0cjxET01FZGl0b3I+IG1fZG9tRWRpdG9yOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdo
bGlnaHRDb25maWc+IG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWc7CisgICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKICAgICBib29sIG1fc3VwcHJlc3NBdHRyaWJ1dGVNb2Rp
ZmllZEV2ZW50OwogICAgIGJvb2wgbV9kb2N1bWVudFJlcXVlc3RlZDsKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAppbmRl
eCBlYmUyNjY1MGFkYjZmYWNiOGRlZjA3Mzc1OTM0YTJiZTkzZWVkODAyLi5mYjhmNzk4NjJkZjA4
ODVmNDkzODc5Mzc1NzU1NzYwMDQ0YjNjY2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKQEAgLTM3LDcgKzM3LDYgQEAK
ICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlIDxp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCmluZGV4
IDVhZDJiN2UxMWY0ZDA5OWZkMjJlZWYzM2YwZmVjNmIyODNjMGJlODYuLmY3ZGFkMzI4NGJiODRk
MjVjYTM0YTkxZGNiZTg2ZjRjOTUwMmYwYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKQEAgLTMzLDcgKzMzLDYgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJTdG9y
YWdlQXJlYS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFi
YXNlQWdlbnQuaAppbmRleCAzMjI5NjA3NTdjM2I0OWNhNjQ0NDkzZGM0YzljYWFiMTM2YTdjN2Vi
Li40NWRkZGM0ZTg1YjA1ZGRiMWY4ZDVlOTY2NjFiNjk3ZmY4ZDM5OGQwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKQEAgLTM1LDcg
KzM1LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNw
cAppbmRleCA0ZTg1YmM1MzI5OTVlZDVkZGE5NDk2ODZjNGRiNmFkMGRlYTlmOGQwLi5iZjE3OTE4
NDhiYjFiYzQ4OGE2MTczMzU1M2NkY2I5NTZhMmQxMzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCkBA
IC0xMTYsMTUgKzExNiwxNSBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNl
dHRpbmdzOjpzZXRQcm9wZXJ0eShjb25zdCBTdHJpbmcmLCBjb25zdCBTdAogewogfQogCi1JbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKElu
c3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFn
ZSwgUGFzc093blB0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCitJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKEluc3BlY3RvckNvbnRyb2xsZXIq
IGluc3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgc3RkOjp1bmlxdWVfcHRy
PFNldHRpbmdzPiBzZXR0aW5ncykKICAgICA6IG1faW5zcGVjdG9yQ29udHJvbGxlcihpbnNwZWN0
b3JDb250cm9sbGVyKQogICAgICwgbV9mcm9udGVuZFBhZ2UoZnJvbnRlbmRQYWdlKQotICAgICwg
bV9zZXR0aW5ncyhzZXR0aW5ncykKKyAgICAsIG1fc2V0dGluZ3Moc3RkOjptb3ZlKHNldHRpbmdz
KSkKICAgICAsIG1fZnJvbnRlbmRMb2FkZWQoZmFsc2UpCiAgICAgLCBtX2RvY2tTaWRlKFVORE9D
S0VEKQogewogICAgIG1fZnJvbnRlbmRQYWdlLT5zZXR0aW5ncygpLnNldEFsbG93RmlsZUFjY2Vz
c0Zyb21GaWxlVVJMcyh0cnVlKTsKLSAgICBtX2Rpc3BhdGNoVGFzayA9IGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hUYXNrKGluc3BlY3RvckNvbnRyb2xsZXIpKTsKKyAgICBt
X2Rpc3BhdGNoVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
VGFzaz4oaW5zcGVjdG9yQ29udHJvbGxlcik7CiB9CiAKIEluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6On5JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCmluZGV4
IGVkMmNmYjEwZDBjMDlhM2YwMjY4Y2UxNmMzZmEyZjhmZTc3NzkzYTkuLjJmNjM3YjBmMjYwZTVi
OGQxY2Y1ZTk3NWFmMGRmNGUxN2U2NmExNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaApAQCAtNTUsOSArNTUs
OSBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwogICAgIH07CiAKLSAgICBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBQYWdlKiwgUGFzc093blB0
cjxTZXR0aW5ncz4pOworICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9y
Q29udHJvbGxlciosIFBhZ2UqLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAgICB2aXJ0
dWFsIH5JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCk7Ci0gICAgCisKICAgICB2aXJ0dWFs
IHZvaWQgd2luZG93T2JqZWN0Q2xlYXJlZCgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBm
cm9udGVuZExvYWRlZCgpIG92ZXJyaWRlOwogCkBAIC05OCw3ICs5OCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHNob3dDb25zb2xlKCk7CiAKICAgICB2b2lkIHNob3dNYWluUmVzb3VyY2VGb3JGcmFt
ZShGcmFtZSopOwotICAgIAorCiAgICAgdm9pZCBzaG93UmVzb3VyY2VzKCk7CiAKICAgICB2b2lk
IHNldEF0dGFjaGVkV2luZG93KERvY2tTaWRlKTsKQEAgLTExNywxMSArMTE3LDExIEBAIHByaXZh
dGU6CiAgICAgUGFnZSogbV9mcm9udGVuZFBhZ2U7CiAgICAgLy8gVE9ETyh5dXJ5cyk6IHRoaXMg
cmVmIHNob3VsZG4ndCBiZSBuZWVkZWQuCiAgICAgUmVmUHRyPEluc3BlY3RvckZyb250ZW5kSG9z
dD4gbV9mcm9udGVuZEhvc3Q7Ci0gICAgT3duUHRyPEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWw6OlNldHRpbmdzPiBtX3NldHRpbmdzOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gbV9zZXR0aW5nczsKICAgICBib29sIG1fZnJv
bnRlbmRMb2FkZWQ7CiAgICAgRG9ja1NpZGUgbV9kb2NrU2lkZTsKICAgICBWZWN0b3I8U3RyaW5n
PiBtX2V2YWx1YXRlT25Mb2FkOwotICAgIE93blB0cjxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hU
YXNrPiBtX2Rpc3BhdGNoVGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yQmFja2Vu
ZERpc3BhdGNoVGFzaz4gbV9kaXNwYXRjaFRhc2s7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFBy
b2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5oCmluZGV4IGY2MGNlYmE2YTdiN2U5N2E0OGNiYzUwOGQwY2M4NWI0N2MzZDU4
Y2MuLjFiY2E3OTAyY2Y3NmNhOGY3ZTFmYWY2MDUyZTZlMzU1YzA2MjgyNjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5o
CkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JIaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmNwcAppbmRleCBiY2ZlZjRhNGI1Yzc3YzJkMmE1MmQwNjYyMWM2YWQ0ZWYwOWQ0NWQwLi44
NzNhOGY5NWI0ZmY2MjgzMDg2NGNiZTJlYmUwNTY3NmUwZDkzY2I2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCkBAIC03OSw3ICs3OSw3IEBAIFN0
cmluZyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb246Om1lcmdlSWQoKQogICAgIHJldHVybiAiIjsK
IH0KIAotdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb246Om1lcmdlKFBhc3NPd25QdHI8QWN0
aW9uPikKK3ZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uOjptZXJnZShzdGQ6OnVuaXF1ZV9w
dHI8QWN0aW9uPikKIHsKIH0KIApAQCAtODcsMTYgKzg3LDE2IEBAIEluc3BlY3Rvckhpc3Rvcnk6
Okluc3BlY3Rvckhpc3RvcnkoKSA6IG1fYWZ0ZXJMYXN0QWN0aW9uSW5kZXgoMCkgeyB9CiAKIElu
c3BlY3Rvckhpc3Rvcnk6On5JbnNwZWN0b3JIaXN0b3J5KCkgeyB9CiAKLWJvb2wgSW5zcGVjdG9y
SGlzdG9yeTo6cGVyZm9ybShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9uLCBFeGNlcHRpb25Db2Rl
JiBlYykKK2Jvb2wgSW5zcGVjdG9ySGlzdG9yeTo6cGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0
aW9uPiBhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogewogICAgIGlmICghYWN0aW9uLT5wZXJm
b3JtKGVjKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCFhY3Rpb24tPm1lcmdl
SWQoKS5pc0VtcHR5KCkgJiYgbV9hZnRlckxhc3RBY3Rpb25JbmRleCA+IDAgJiYgYWN0aW9uLT5t
ZXJnZUlkKCkgPT0gbV9oaXN0b3J5W21fYWZ0ZXJMYXN0QWN0aW9uSW5kZXggLSAxXS0+bWVyZ2VJ
ZCgpKQotICAgICAgICBtX2hpc3RvcnlbbV9hZnRlckxhc3RBY3Rpb25JbmRleCAtIDFdLT5tZXJn
ZShhY3Rpb24pOworICAgICAgICBtX2hpc3RvcnlbbV9hZnRlckxhc3RBY3Rpb25JbmRleCAtIDFd
LT5tZXJnZShzdGQ6Om1vdmUoYWN0aW9uKSk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1faGlzdG9y
eS5yZXNpemUobV9hZnRlckxhc3RBY3Rpb25JbmRleCk7Ci0gICAgICAgIG1faGlzdG9yeS5hcHBl
bmQoYWN0aW9uKTsKKyAgICAgICAgbV9oaXN0b3J5LmFwcGVuZChzdGQ6Om1vdmUoYWN0aW9uKSk7
CiAgICAgICAgICsrbV9hZnRlckxhc3RBY3Rpb25JbmRleDsKICAgICB9CiAgICAgcmV0dXJuIHRy
dWU7CkBAIC0xMDQsNyArMTA0LDcgQEAgYm9vbCBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKFBh
c3NPd25QdHI8QWN0aW9uPiBhY3Rpb24sIEV4Y2VwdGlvbkNvZGUmIGVjKQogCiB2b2lkIEluc3Bl
Y3Rvckhpc3Rvcnk6Om1hcmtVbmRvYWJsZVN0YXRlKCkKIHsKLSAgICBwZXJmb3JtKGFkb3B0UHRy
KG5ldyBVbmRvYWJsZVN0YXRlTWFyaygpKSwgSUdOT1JFX0VYQ0VQVElPTik7CisgICAgcGVyZm9y
bShzdGQ6Om1ha2VfdW5pcXVlPFVuZG9hYmxlU3RhdGVNYXJrPigpLCBJR05PUkVfRVhDRVBUSU9O
KTsKIH0KIAogYm9vbCBJbnNwZWN0b3JIaXN0b3J5Ojp1bmRvKEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmgKaW5kZXggNzIyNGEz
OTNlZmJiNWE5ZmFjMWViYWU5NmQzMTMxNTI1N2M0ZDZkNS4uYTIyYWJiNTMwY2I0YWY0NGQ3ODI5
NTAzNDc3Y2JkMmMyZWM1N2FmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckhpc3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5oCkBAIC0zMyw3ICszMyw2IEBACiAKICNpbmNsdWRlICJFeGNlcHRpb25Db2Rl
LmgiCiAKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01Niw3ICs1NSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgdmlydHVhbCBTdHJpbmcgdG9TdHJpbmcoKTsKIAogICAgICAgICB2aXJ0dWFs
IFN0cmluZyBtZXJnZUlkKCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBtZXJnZShQYXNzT3duUHRy
PEFjdGlvbj4pOworICAgICAgICB2aXJ0dWFsIHZvaWQgbWVyZ2Uoc3RkOjp1bmlxdWVfcHRyPEFj
dGlvbj4pOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCBwZXJmb3JtKEV4Y2VwdGlvbkNvZGUmKSA9
IDA7CiAKQEAgLTcxLDcgKzcwLDcgQEAgcHVibGljOgogICAgIEluc3BlY3Rvckhpc3RvcnkoKTsK
ICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JIaXN0b3J5KCk7CiAKLSAgICBib29sIHBlcmZvcm0oUGFz
c093blB0cjxBY3Rpb24+LCBFeGNlcHRpb25Db2RlJik7CisgICAgYm9vbCBwZXJmb3JtKHN0ZDo6
dW5pcXVlX3B0cjxBY3Rpb24+LCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBtYXJrVW5kb2Fi
bGVTdGF0ZSgpOwogCiAgICAgYm9vbCB1bmRvKEV4Y2VwdGlvbkNvZGUmKTsKQEAgLTc5LDcgKzc4
LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXQoKTsKIAogcHJpdmF0ZToKLSAgICBWZWN0b3I8
T3duUHRyPEFjdGlvbj4+IG1faGlzdG9yeTsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEFj
dGlvbj4+IG1faGlzdG9yeTsKICAgICBzaXplX3QgbV9hZnRlckxhc3RBY3Rpb25JbmRleDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmgKaW5kZXggZDA3MWEwMDRmOTQ5NmRmMjk2NTIwMjg5MmE1OWNkMmYwYWQ5YjE2ZC4uYWFm
MWZkOTNiYzQ1MjcxZmQ4NTljYjdhNDEyY2YyMTE0OWM3NTcyNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmgKQEAgLTM1LDcgKzM1
LDYgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIklu
c3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgK
aW5kZXggZjE1MmFmNjQ1ZmQ1ODg5OWQwNmJkZGQyNWMyYTFhNzU0NGYwNDc3OC4uOTA5MWRhNzNh
NTNhY2JhZWY5NmIxYTdiOGRlMmYzZTRlZGRlOGMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFja2Vu
ZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckxheWVyVHJlZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTGF5ZXJUcmVlQWdlbnQuaAppbmRleCA3NTYxYWM3NTRkZDRhM2M4YTljYzY4OTA4NzdlNzll
MzQzNjVmODBmLi4wYTViODhmY2UwN2E1ZDI2ZGFjYTRjMDI1MmM1ZjIwMmYzNGM5MDI5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJUcmVlQWdlbnQu
aApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0
Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRl
ICJSZW5kZXJMYXllci5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmNwcAppbmRleCAxNjRkOTE0ZDZmMzM1ZGZiMDFhMjc1OTFlMDVhMWRi
YTAxZTJhNjM0Li4zNWVlMDFlMTJhYTMzYTIyZWMyZjVhMGNmZTE2OGNjODRjYjY0ZDQwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
QEAgLTQ5LDggKzQ5LDYgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+
CiAjaW5jbHVkZSA8cnVudGltZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdC
dWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nSW1wbC5oPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaAppbmRleCAxMmYzYTljNWU1
NWYyNzJlYmM0ZGZiODU0YjhiODYyZWIyNmIwMTQzLi5iM2NkMmZmZTdhNmMxYzVkYjJhNzZlNzI0
ZmU4YTk2NjBhZjFkZmNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTWVtb3J5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuaApAQCAtMzUsNyArMzUsNiBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JPdmVybGF5LmNwcAppbmRleCA1MjRkOTI5N2EwMTVkMTk2OGQ2NGQwNzVmYzgyZTNiYTQ3
Yzc0NjE4Li4zNGNkNWE0ZTMwYzliYThmNjY5ZDVkZDMzNjllNzcwZjQ0NThjZjU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0yODAsNyAr
MjgwLDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpzZXRQYXVzZWRJbkRlYnVnZ2VyTWVzc2Fn
ZShjb25zdCBTdHJpbmcqIG1lc3NhZ2UpCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZGVIaWdo
bGlnaHQoKQogewogICAgIG1faGlnaGxpZ2h0Tm9kZS5jbGVhcigpOwotICAgIG1faGlnaGxpZ2h0
UXVhZC5jbGVhcigpOworICAgIG1faGlnaGxpZ2h0UXVhZC5yZXNldCgpOwogICAgIHVwZGF0ZSgp
OwogfQogCkBAIC0yOTEsMTMgKzI5MSwxMyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hs
aWdodE5vZGUoTm9kZSogbm9kZSwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaAogICAg
IHVwZGF0ZSgpOwogfQogCi12b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdodFF1YWQoUGFz
c093blB0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0
Q29uZmlnKQordm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVl
X3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2h0Q29u
ZmlnKQogewogICAgIGlmIChtX3F1YWRIaWdobGlnaHRDb25maWcudXNlUGFnZUNvb3JkaW5hdGVz
KQogICAgICAgICAqcXVhZCAtPSBtX3BhZ2UubWFpbkZyYW1lKCkudmlldygpLT5zY3JvbGxPZmZz
ZXQoKTsKIAogICAgIG1fcXVhZEhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZzsKLSAg
ICBtX2hpZ2hsaWdodFF1YWQgPSBxdWFkOworICAgIG1faGlnaGxpZ2h0UXVhZCA9IHN0ZDo6bW92
ZShxdWFkKTsKICAgICB1cGRhdGUoKTsKIH0KIApAQCAtNzQ4LDcgKzc0OCw3IEBAIFBhZ2UqIElu
c3BlY3Rvck92ZXJsYXk6Om92ZXJsYXlQYWdlKCkKIAogICAgIFBhZ2U6OlBhZ2VDbGllbnRzIHBh
Z2VDbGllbnRzOwogICAgIGZpbGxXaXRoRW1wdHlDbGllbnRzKHBhZ2VDbGllbnRzKTsKLSAgICBt
X292ZXJsYXlQYWdlID0gYWRvcHRQdHIobmV3IFBhZ2UocGFnZUNsaWVudHMpKTsKKyAgICBtX292
ZXJsYXlQYWdlID0gc3RkOjptYWtlX3VuaXF1ZTxQYWdlPihwYWdlQ2xpZW50cyk7CiAKICAgICBT
ZXR0aW5ncyYgc2V0dGluZ3MgPSBtX3BhZ2Uuc2V0dGluZ3MoKTsKICAgICBTZXR0aW5ncyYgb3Zl
cmxheVNldHRpbmdzID0gbV9vdmVybGF5UGFnZS0+c2V0dGluZ3MoKTsKQEAgLTgxNSw3ICs4MTUs
NyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmV2YWx1YXRlSW5PdmVybGF5KGNvbnN0IFN0cmlu
ZyYgbWV0aG9kLCBQYXNzUmVmUHRyPEluc3BlYwogCiB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmZy
ZWVQYWdlKCkKIHsKLSAgICBtX292ZXJsYXlQYWdlLmNsZWFyKCk7CisgICAgbV9vdmVybGF5UGFn
ZS5yZXNldCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAppbmRleCA3ZTNkMDE3YjIzNWZiNzc3MjkxZjI1
MGZmNDdmNmYxODk1NzQyNDMxLi5hN2U2Yzc4NDliMjNhMDFmNjBhNjk4MjQ0MTRiMzVkZTVhMjBj
Nzg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKQEAg
LTMyLDggKzMyLDYgQEAKICNpbmNsdWRlICJDb2xvci5oIgogI2luY2x1ZGUgIkZsb2F0UXVhZC5o
IgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTE3
LDcgKzExNSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgaGlkZUhpZ2hsaWdodCgpOwogICAgIHZv
aWQgaGlnaGxpZ2h0Tm9kZShOb2RlKiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJik7Ci0gICAgdm9p
ZCBoaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiwgY29uc3QgSGlnaGxpZ2h0Q29u
ZmlnJik7CisgICAgdm9pZCBoaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+
LCBjb25zdCBIaWdobGlnaHRDb25maWcmKTsKIAogICAgIE5vZGUqIGhpZ2hsaWdodGVkTm9kZSgp
IGNvbnN0OwogCkBAIC0xNDEsOCArMTM5LDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9wYXVz
ZWRJbkRlYnVnZ2VyTWVzc2FnZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGlnaHROb2RlOwog
ICAgIEhpZ2hsaWdodENvbmZpZyBtX25vZGVIaWdobGlnaHRDb25maWc7Ci0gICAgT3duUHRyPEZs
b2F0UXVhZD4gbV9oaWdobGlnaHRRdWFkOwotICAgIE93blB0cjxQYWdlPiBtX292ZXJsYXlQYWdl
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IG1faGlnaGxpZ2h0UXVhZDsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8UGFnZT4gbV9vdmVybGF5UGFnZTsKICAgICBIaWdobGlnaHRDb25maWcg
bV9xdWFkSGlnaGxpZ2h0Q29uZmlnOwogICAgIEludFNpemUgbV9zaXplOwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAppbmRl
eCAwMzVhMzQxMmM0ZWViOTAwMTY2MmU2MTE3ODNiYjM5OTY4OGQwM2E1Li5kZjg1NmQ4OWYwOWM2
NGZiZDQxMWE1NTJmOTU2YzViZTQ4NGJiNGEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCkBAIC01MCw3ICs1MCw2IEBACiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0N1cnJlbnRU
aW1lLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmlu
Z0NvbmNhdGVuYXRlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAppbmRleCA0YzMz
OGNlOGM0YTg5MWUxNzM5MDkxZmY3MjY2MGQxMDU5ZTA1NWRlLi5hMzM0ZTY1NGYxYmNhZDdlODcx
ODZkZmMxZjZjMjc3MDA5NzkxODI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05v
bmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggNDgw
YmRlOTA0NzE4N2Y1MDhiZWRkNjljMTMwZDg2MTk3NTA5NzQ2Ni4uODllNWNmNDk1ZWVhYTc4NTIz
MzY0YjEwZDE0NGExODI1NGYyMTJmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtNjQzLDcgKzY0Myw3IEBAIEluc3Bl
Y3RvclJlc291cmNlQWdlbnQ6Okluc3BlY3RvclJlc291cmNlQWdlbnQoSW5zdHJ1bWVudGluZ0Fn
ZW50cyogaW5zdHJ1bWVudGluCiAgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFs
KCJOZXR3b3JrIiksIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3BhZ2VBZ2VudChwYWdl
QWdlbnQpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCi0gICAgLCBtX3Jlc291cmNlc0RhdGEoYWRv
cHRQdHIobmV3IE5ldHdvcmtSZXNvdXJjZXNEYXRhKCkpKQorICAgICwgbV9yZXNvdXJjZXNEYXRh
KHN0ZDo6bWFrZV91bmlxdWU8TmV0d29ya1Jlc291cmNlc0RhdGE+KCkpCiAgICAgLCBtX2VuYWJs
ZWQoZmFsc2UpCiAgICAgLCBtX2NhY2hlRGlzYWJsZWQoZmFsc2UpCiAgICAgLCBtX2xvYWRpbmdY
SFJTeW5jaHJvbm91c2x5KGZhbHNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKaW5kZXggZDJjYTJhMjk0ZWM5Y2E2M2NlZjg1Y2YzN2Ix
ZmE3ZTViM2NhZWUwZi4uMTJkYTc3OGM0ODgzZTY4N2ViYTQxZTEyMmFiNTA5ZTQ4Zjc2YjliNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oCkBAIC0zNCw3ICszNCw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xNDUsNyArMTQ0LDcgQEAg
cHJpdmF0ZToKICAgICBJbnNwZWN0b3JDbGllbnQqIG1fY2xpZW50OwogICAgIHN0ZDo6dW5pcXVl
X3B0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJv
bnRlbmREaXNwYXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck5ldHdvcmtC
YWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKLSAgICBPd25QdHI8TmV0d29y
a1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2VzRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8TmV0
d29ya1Jlc291cmNlc0RhdGE+IG1fcmVzb3VyY2VzRGF0YTsKICAgICBib29sIG1fZW5hYmxlZDsK
ICAgICBib29sIG1fY2FjaGVEaXNhYmxlZDsKICAgICBib29sIG1fbG9hZGluZ1hIUlN5bmNocm9u
b3VzbHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVl
dC5jcHAKaW5kZXggZjI3YzNiMTM3YmJiYjRjZGVhZmVhMWE2MTllMmViN2I5YTU5MjU3NC4uNDg2
NzBjZDFkZjc4NGYyODkwM2ExYzdiYjZjNzE0ZGU5ZGZkMTdhZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcApAQCAtNTgsOCArNTgsNiBA
QAogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIKICNpbmNsdWRlIDxpbnNwZWN0
b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oPgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0
b3JWYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3Ry
aW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHlhcnIvUmVndWxhckV4cHJlc3Npb24uaD4KQEAgLTc3
LDE1ICs3NSwxNSBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0KGNvbnN0IFN0cmluZyYgdGV4
dCk7CiAgICAgYm9vbCBoYXNUZXh0KCkgY29uc3QgeyByZXR1cm4gbV9oYXNUZXh0OyB9CiAgICAg
UnVsZVNvdXJjZURhdGFMaXN0KiBzb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VE
YXRhLmdldCgpOyB9Ci0gICAgdm9pZCBzZXRTb3VyY2VEYXRhKFBhc3NPd25QdHI8UnVsZVNvdXJj
ZURhdGFMaXN0Pik7Ci0gICAgYm9vbCBoYXNTb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9z
b3VyY2VEYXRhOyB9CisgICAgdm9pZCBzZXRTb3VyY2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxl
U291cmNlRGF0YUxpc3Q+KTsKKyAgICBib29sIGhhc1NvdXJjZURhdGEoKSBjb25zdCB7IHJldHVy
biBtX3NvdXJjZURhdGEgIT0gbnVsbHB0cjsgfQogICAgIFBhc3NSZWZQdHI8V2ViQ29yZTo6Q1NT
UnVsZVNvdXJjZURhdGE+IHJ1bGVTb3VyY2VEYXRhQXQodW5zaWduZWQpIGNvbnN0OwogCiBwcml2
YXRlOgogCiAgICAgU3RyaW5nIG1fdGV4dDsKICAgICBib29sIG1faGFzVGV4dDsKLSAgICBPd25Q
dHI8UnVsZVNvdXJjZURhdGFMaXN0PiBtX3NvdXJjZURhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFJ1bGVTb3VyY2VEYXRhTGlzdD4gbV9zb3VyY2VEYXRhOwogfTsKIAogUGFyc2VkU3R5bGVTaGVl
dDo6UGFyc2VkU3R5bGVTaGVldCgpCkBAIC0xMTUsMTQgKzExMywxNCBAQCBzdGF0aWMgdm9pZCBm
bGF0dGVuU291cmNlRGF0YShSdWxlU291cmNlRGF0YUxpc3QqIGRhdGFMaXN0LCBSdWxlU291cmNl
RGF0YUxpc3QqCiAgICAgfQogfQogCi12b2lkIFBhcnNlZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURh
dGEoUGFzc093blB0cjxSdWxlU291cmNlRGF0YUxpc3Q+IHNvdXJjZURhdGEpCit2b2lkIFBhcnNl
ZFN0eWxlU2hlZXQ6OnNldFNvdXJjZURhdGEoc3RkOjp1bmlxdWVfcHRyPFJ1bGVTb3VyY2VEYXRh
TGlzdD4gc291cmNlRGF0YSkKIHsKICAgICBpZiAoIXNvdXJjZURhdGEpIHsKLSAgICAgICAgbV9z
b3VyY2VEYXRhLmNsZWFyKCk7CisgICAgICAgIG1fc291cmNlRGF0YS5yZXNldCgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgbV9zb3VyY2VEYXRhID0gYWRvcHRQdHIobmV3IFJ1bGVT
b3VyY2VEYXRhTGlzdCgpKTsKKyAgICBtX3NvdXJjZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bGVTb3VyY2VEYXRhTGlzdD4oKTsKIAogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGEgdGVtcG9yYXJ5
IHNvbHV0aW9uIHRvIHJldGFpbiB0aGUgb3JpZ2luYWwgZmxhdCBzb3VyY2VEYXRhIHN0cnVjdHVy
ZQogICAgIC8vIGNvbnRhaW5pbmcgb25seSBzdHlsZSBydWxlcywgZXZlbiB0aG91Z2ggQ1NTUGFy
c2VyIG5vdyBwcm92aWRlcyB0aGUgZnVsbCBydWxlIHNvdXJjZSBkYXRhIHRyZWUuCkBAIC0yODQs
OSArMjgyLDkgQEAgc3RhdGljIHZvaWQgZmlsbE1lZGlhTGlzdENoYWluKENTU1J1bGUqIHJ1bGUs
IEFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzoKICAgICB9CiB9CiAKLXN0YXRpYyBQ
YXNzT3duUHRyPENTU1BhcnNlcj4gY3JlYXRlQ1NTUGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCkK
K3N0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8Q1NTUGFyc2VyPiBjcmVhdGVDU1NQYXJzZXIoRG9jdW1l
bnQqIGRvY3VtZW50KQogewotICAgIHJldHVybiBhZG9wdFB0cihuZXcgQ1NTUGFyc2VyKGRvY3Vt
ZW50ID8gQ1NTUGFyc2VyQ29udGV4dCgqZG9jdW1lbnQpIDogc3RyaWN0Q1NTUGFyc2VyQ29udGV4
dCgpKSk7CisgICAgcmV0dXJuIHN0ZDo6bWFrZV91bmlxdWU8Q1NTUGFyc2VyPihkb2N1bWVudCA/
IENTU1BhcnNlckNvbnRleHQoKmRvY3VtZW50KSA6IHN0cmljdENTU1BhcnNlckNvbnRleHQoKSk7
CiB9CiAKIFBhc3NSZWZQdHI8SW5zcGVjdG9yU3R5bGU+IEluc3BlY3RvclN0eWxlOjpjcmVhdGUo
Y29uc3QgSW5zcGVjdG9yQ1NTSWQmIHN0eWxlSWQsIFBhc3NSZWZQdHI8Q1NTU3R5bGVEZWNsYXJh
dGlvbj4gc3R5bGUsIEluc3BlY3RvclN0eWxlU2hlZXQqIHBhcmVudFN0eWxlU2hlZXQpCkBAIC01
MjEsNyArNTE5LDcgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6OkNT
U1N0eWxlPiBJbnNwZWN0b3JTdHlsZTo6c3R5bGVXaXRoUHJvcGUKICAgICBIYXNoU2V0PFN0cmlu
Zz4gZm91bmRTaG9ydGhhbmRzOwogICAgIFN0cmluZyBwcmV2aW91c1ByaW9yaXR5OwogICAgIFN0
cmluZyBwcmV2aW91c1N0YXR1czsKLSAgICBPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRp
bmdzKG1fcGFyZW50U3R5bGVTaGVldCA/IG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3Mo
KSA6IFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxW
ZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MobV9wYXJlbnRTdHlsZVNoZWV0ID8gbV9wYXJlbnRT
dHlsZVNoZWV0LT5saW5lRW5kaW5ncygpIDogbnVsbHB0cik7CiAgICAgUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPiBzb3VyY2VEYXRhID0gZXh0cmFjdFNvdXJjZURhdGEoKTsKICAgICB1bnNpZ25l
ZCBydWxlQm9keVJhbmdlU3RhcnQgPSBzb3VyY2VEYXRhID8gc291cmNlRGF0YS0+cnVsZUJvZHlS
YW5nZS5zdGFydCA6IDA7CiAKQEAgLTEyMTEsMTAgKzEyMDksMTAgQEAgUmVmUHRyPENTU1J1bGVT
b3VyY2VEYXRhPiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpydWxlU291cmNlRGF0YUZvcihDU1NTdHls
ZURlY2xhcmEKICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNoZWV0LT5ydWxlU291cmNlRGF0YUF0
KHJ1bGVJbmRleEJ5U3R5bGUoc3R5bGUpKTsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8c2l6ZV90
Pj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6bGluZUVuZGluZ3MoKSBjb25zdAorc3RkOjp1bmlxdWVf
cHRyPFZlY3RvcjxzaXplX3Q+PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncygpIGNv
bnN0CiB7CiAgICAgaWYgKCFtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1RleHQoKSkKLSAgICAgICAg
cmV0dXJuIFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+KCk7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIHJldHVybiBDb250ZW50U2VhcmNoVXRpbGl0aWVzOjpsaW5lRW5kaW5ncyhtX3Bh
cnNlZFN0eWxlU2hlZXQtPnRleHQoKSk7CiB9CiAKQEAgLTEyNzAsOSArMTI2OCw5IEBAIGJvb2wg
SW5zcGVjdG9yU3R5bGVTaGVldDo6ZW5zdXJlU291cmNlRGF0YSgpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+IG5ld1N0eWxlU2hlZXQgPSBT
dHlsZVNoZWV0Q29udGVudHM6OmNyZWF0ZSgpOwotICAgIE93blB0cjxSdWxlU291cmNlRGF0YUxp
c3Q+IHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gYWRvcHRQdHIobmV3IFJ1bGVTb3VyY2VEYXRhTGlz
dCgpKTsKKyAgICBhdXRvIHJ1bGVTb3VyY2VEYXRhUmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxS
dWxlU291cmNlRGF0YUxpc3Q+KCk7CiAgICAgY3JlYXRlQ1NTUGFyc2VyKG1fcGFnZVN0eWxlU2hl
ZXQtPm93bmVyRG9jdW1lbnQoKSktPnBhcnNlU2hlZXQobmV3U3R5bGVTaGVldC5nZXQoKSwgbV9w
YXJzZWRTdHlsZVNoZWV0LT50ZXh0KCksIDAsIHJ1bGVTb3VyY2VEYXRhUmVzdWx0LmdldCgpKTsK
LSAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFNvdXJjZURhdGEocnVsZVNvdXJjZURhdGFSZXN1
bHQucmVsZWFzZSgpKTsKKyAgICBtX3BhcnNlZFN0eWxlU2hlZXQtPnNldFNvdXJjZURhdGEoc3Rk
Ojptb3ZlKHJ1bGVTb3VyY2VEYXRhUmVzdWx0KSk7CiAgICAgcmV0dXJuIG1fcGFyc2VkU3R5bGVT
aGVldC0+aGFzU291cmNlRGF0YSgpOwogfQogCkBAIC0xNDc2LDcgKzE0NzQsNyBAQCBib29sIElu
c3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6c2V0U3R5bGVUZXh0KENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlLAogICAgIHJldHVybiAhZWM7CiB9CiAKLVBhc3NPd25QdHI8VmVjdG9y
PHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXRGb3JJbmxpbmVTdHlsZTo6bGluZUVuZGluZ3Mo
KSBjb25zdAorc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBJbnNwZWN0b3JTdHlsZVNo
ZWV0Rm9ySW5saW5lU3R5bGU6OmxpbmVFbmRpbmdzKCkgY29uc3QKIHsKICAgICByZXR1cm4gQ29u
dGVudFNlYXJjaFV0aWxpdGllczo6bGluZUVuZGluZ3MoZWxlbWVudFN0eWxlVGV4dCgpKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCmluZGV4
IGJjMWYxYWM3OWNiMWQ3YzIzNGNmMTU0YTdhMmZlNTg3YzFlNTk2NzYuLjhiMTkxZmUwODQzOWI1
ZjhlNzdhMjc1OTU5N2U2MzNkYTk5ZTBmNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaApAQCAtMjI2LDcgKzIyNiw3IEBAIHByb3RlY3RlZDoK
IAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkgZnJpZW5kIGNsYXNzIEluc3BlY3RvclN0eWxlLgog
ICAgIHZpcnR1YWwgYm9vbCBzZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0
IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8VmVjdG9y
PHNpemVfdD4+IGxpbmVFbmRpbmdzKCkgY29uc3Q7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAg
dHlwZWRlZiBWZWN0b3I8UmVmUHRyPENTU1N0eWxlUnVsZT4+IENTU1N0eWxlUnVsZVZlY3RvcjsK
QEAgLTI3OCw3ICsyNzgsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBBbHNvIGFjY2Vzc2VkIGJ5
IGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JTdHlsZS4KICAgICB2aXJ0dWFsIGJvb2wgc2V0U3R5bGVU
ZXh0KENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5k
aW5ncygpIGNvbnN0IG92ZXJyaWRlOworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFZlY3Rv
cjxzaXplX3Q+PiBsaW5lRW5kaW5ncygpIGNvbnN0IG92ZXJyaWRlOwogCiBwcml2YXRlOgogICAg
IENTU1N0eWxlRGVjbGFyYXRpb24qIGlubGluZVN0eWxlKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAppbmRleCBlZmY2MjVk
NDY1ZTVmZTliZjRiNGFiYzgyNzg4MGYzNmEwNzIwODY5Li4wMGNhNmFlMGFhMjcxZTI1MWIwODQ2
NmVjZjkzZTA4ZWZhNjY5MGMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTM4LDcgKzM4LDYgQEAKICNpbmNsdWRlICJJbnNw
ZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgog
I2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0
ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29y
a2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFn
ZW50LmNwcAppbmRleCBiODEwOGI1NGYyYzljYWYyNWUyZDBlYmZhNGZjMmI5MmQxNzVjMGVjLi44
NTczZDg2YWM0NWZhMzE0ZTFhYjM0ZDI4OGEwZWEzNzkzMTBhMGU5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAgLTQwLDcgKzQw
LDYgQEAKICNpbmNsdWRlICJVUkwuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZVByb3h5
LmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VD
b25zb2xlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdl
bnQuY3BwCmluZGV4IDUxYjU5OGVjZDk4ZTA0YzhhZTJmNGM5OTRjMzhkZjkyZWVmNzZkYTMuLjEw
NTFkN2E2NTcyMzcyYzEwNjVmN2YxMzgyN2U5MzhlMGY2M2MzNWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgdm9p
ZCBQYWdlQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWROb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgaW50IG5vZGVJZCkKICAgICB9CiAKICAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0KiBj
b21tYW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFnZXIq
PihtX2luamVjdGVkU2NyaXB0TWFuYWdlciktPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQotICAgICAg
ICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChhZG9wdFB0cihuZXcgSW5z
cGVjdGFibGVOb2RlKG5vZGUpKSk7CisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5z
cGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVOb2RlPihub2RlKSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVJ1bnRpbWVBZ2VudC5oCmluZGV4IDAyMDU4ZDZmNDNiNDMyMWNiMzRjNDcyZjI0MWU5ZGYwZDM4
NWEwMDkuLmZkNDdjNzQwNzBkZDU0NGJkZGJlMzFiMjZiMWQ3MDg5MjU5ZmYyNWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaApAQCAtMzUsNyArMzUsNiBA
QAogCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5o
PgogI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiBjbGFzcyBFeGVj
U3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCmlu
ZGV4IGVjMTJkOGE2NzlkZWJjM2M0NDc0NzQzMTVhM2FlMGU2NGE2MmZkOGQuLjU3YzhmNGRkODhi
MTQ3NzQ4ODc3MzRkZjgwNjExZGUxMTY0OTE1NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgcHJpdmF0ZToKIHZv
aWQgV2ViQ29uc29sZUFnZW50OjphZGRJbnNwZWN0ZWRIZWFwT2JqZWN0KEVycm9yU3RyaW5nKiwg
aW50IGluc3BlY3RlZEhlYXBPYmplY3RJZCkKIHsKICAgICBpZiAoQ29tbWFuZExpbmVBUElIb3N0
KiBjb21tYW5kTGluZUFQSUhvc3QgPSBzdGF0aWNfY2FzdDxXZWJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIqPihtX2luamVjdGVkU2NyaXB0TWFuYWdlciktPmNvbW1hbmRMaW5lQVBJSG9zdCgpKQotICAg
ICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChhZG9wdFB0cihuZXcg
SW5zcGVjdGFibGVIZWFwT2JqZWN0KGluc3BlY3RlZEhlYXBPYmplY3RJZCkpKTsKKyAgICAgICAg
Y29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0YWJsZUhlYXBPYmplY3Q+KGluc3BlY3RlZEhlYXBPYmplY3RJZCkpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
V29ya2VyUnVudGltZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVu
dGltZUFnZW50LmgKaW5kZXggOTVlMjU0ZGNkMmVmZjY0NjRiNWU3MDdmYTY0YTNmNGM1ZDA5ODZk
ZC4uNWMyZDg2MTRiMGFiM2RiZTcyZTg2NThkMTBjZDE5Zjc0MmRkYzNhNyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaApAQCAtMzQsNyArMzQsNiBA
QAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAKICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4
IDYyZWQyNGNiMGQ2ZjRmOTA4YzViOGE0M2RiMjg3YmU3ZGM3ZWZlY2QuLmI4ZGRkZDFjOTkwZDlj
ZmFlNjIxODI4ZGQ3M2E4ZTMwZmRjMThkYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCBwcm90ZWN0ZWQ6CiB9OwogCiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudER1bW15OjpJbnNwZWN0b3JGcm9udGVuZENsaWVudER1bW15KEluc3BlY3RvckNv
bnRyb2xsZXIqIGNvbnRyb2xsZXIsIFBhZ2UqIHBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsKGNvbnRyb2xsZXIsIHBhZ2UsIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpTZXR0aW5ncygpKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwoY29udHJvbGxlciwgcGFnZSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4oKSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAKaW5kZXgg
YmNmMjhjOTIwYzNhYmQxOWFlNDc3NTM5ZDc3Nzk4Mzk0ZjM5OWJjYS4uYTRlMmY2Yjk1NzBhYjk0
ODZhMjczMTA5YWYxM2M4OTYwYWRmNmYyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCkBAIC0xNDgsNyArMTQ4
LDcgQEAgU3RyaW5nIEluc3BlY3RvckNsaWVudEVmbDo6aW5zcGVjdG9yRmlsZXNQYXRoKCkKIH0K
IAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RWZs
KEV2YXNfT2JqZWN0KiBpbnNwZWN0ZWRWaWV3LCBFdmFzX09iamVjdCogaW5zcGVjdG9yVmlldywg
SW5zcGVjdG9yQ2xpZW50RWZsKiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsKCZFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0ZWRWaWV3KS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLCBFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0b3JWaWV3KSwg
YWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NFZmwoKSkpCisgICAgOiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0ZWRW
aWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0
b3JWaWV3KSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzRWZsPigp
KQogICAgICwgbV9pbnNwZWN0ZWRWaWV3KGluc3BlY3RlZFZpZXcpCiAgICAgLCBtX2luc3BlY3Rv
clZpZXcoaW5zcGVjdG9yVmlldykKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNs
aWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNw
ZWN0b3JDbGllbnRHdGsuY3BwCmluZGV4IGNkOTQ5MzRlMTYwMTJmNmM5ODQ2ZWE5ZTRmZDZjZDE5
NWVkNmNhZGMuLmNlZTFkMzQ1NzFjOTMzMTM1ZjYyMGM1YmM2MDUxOWRmNjkzMGE4ZDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0
ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xp
ZW50R3RrLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgSW5zcGVjdG9yQ2xpZW50OjpzZW5k
TWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogfQogCiBJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViS2l0V2ViVmlldyogaW5z
cGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyogaW5zcGVjdG9yV2ViVmlldywgV2ViS2l0V2Vi
SW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFBhZ2UqIGluc3BlY3RvclBhZ2UsIEluc3BlY3RvckNs
aWVudCogaW5zcGVjdG9yQ2xpZW50KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bCgmY29yZShpbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0
b3JQYWdlLCBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0d0aygpKSkKKyAg
ICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmNvcmUoaW5zcGVjdGVkV2ViVmlldykt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZSwgc3RkOjptYWtlX3VuaXF1ZTxJ
bnNwZWN0b3JGcm9udGVuZFNldHRpbmdzR3RrPigpKQogICAgICwgbV9pbnNwZWN0b3JXZWJWaWV3
KGluc3BlY3RvcldlYlZpZXcpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2Vi
VmlldykKICAgICAsIG1fd2ViSW5zcGVjdG9yKHdlYkluc3BlY3RvcikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXgg
MDFjMWM2MDhkZTM0NGUxOTNkNDA4OTRjZTJhZmI2MDdkYTdmODNhNS4uZjgxNWY4N2I2OWNlN2I3
MjNjNWQxZTc1NmIyMDVkN2UwNzE1MmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTYsMTMgKzYsMTMgQEAK
ICAqIGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CiAgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4g
CisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENv
bXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGVh
c2VGcm9udGVuZCgpOwogCiBwcml2YXRlOgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3Mo
KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKTsKIAogICAgIFdlYlZpZXcg
Km1fd2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdo
dGVyOwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwgewogcHVibGljOgotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqLCBX
ZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiwgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxl
ciosIFdlYkNvcmU6OlBhZ2UqLCBQYXNzT3duUHRyPFNldHRpbmdzPik7CisgICAgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyosIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIq
LCBXZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiwgV2ViQ29yZTo6UGFnZSosIHN0ZDo6dW5p
cXVlX3B0cjxTZXR0aW5ncz4pOwogCiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2Vk
KGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQubW0KaW5kZXggYWY4OWQ5NGJhZDY5ZGUxNTUwYWUxYjI1M2MwNTcy
ZmU2MmFhOGY2Ni4uNzkxMGVhMmFhNDhiMTJjYzYyNjI3MDAwMzI0ZGQ2ODcwZDc3OGY5ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudC5tbQpAQCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9t
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
CiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRS
SUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTUzLDcgKzUz
LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9E
T01FeHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbXBv
cnQgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogU09G
VF9MSU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtz
LCBBKQpAQCAtMjEwLDggKzIwOSw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNl
RnJvbnRlbmQoKQogfQogCiAKLVdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JX
aW5kb3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVyKiBp
bnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIFdURjo6UGFzc093blB0cjxT
ZXR0aW5ncz4gc2V0dGluZ3MpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGlu
c3BlY3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIHNldHRpbmdzKQorV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3Bl
Y3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqIHdpbmRvd0NvbnRyb2xs
ZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250
ZW5kUGFnZSwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPiBzZXR0aW5ncykKKyAgICA6IEluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdG9yQ29udHJvbGxlciwgIGZyb250ZW5kUGFn
ZSwgc3RkOjptb3ZlKHNldHRpbmdzKSkKICAgICAsIG1faW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0
ZWRXZWJWaWV3KQogICAgICwgbV93aW5kb3dDb250cm9sbGVyKHdpbmRvd0NvbnRyb2xsZXIpCiB7
CkBAIC0yMzMsNyArMjMyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJv
bnRlbmRMb2FkZWQoKQogICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmZyb250ZW5k
TG9hZGVkKCk7CiAKICAgICBXZWJGcmFtZSAqZnJhbWUgPSBbbV9pbnNwZWN0ZWRXZWJWaWV3IG1h
aW5GcmFtZV07Ci0gICAgCisKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9u
Q2FjaGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxl
bWVudGF0aW9ucyhtX2luc3BlY3RlZFdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMt
PmRpZENsZWFySW5zcGVjdG9yV2luZG93T2JqZWN0Rm9yRnJhbWVGdW5jKQogICAgICAgICBDYWxs
RnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRDbGVhckluc3BlY3RvcldpbmRv
d09iamVjdEZvckZyYW1lRnVuYywgbV9pbnNwZWN0ZWRXZWJWaWV3LApAQCAtMzE5LDE0ICszMTgs
MTQgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUo
KSBjb25zdAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJp
bmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29k
ZWQsIGJvb2wgZm9yY2VTYXZlRGlhbG9nKQogewogICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlz
RW1wdHkoKSk7Ci0gICAgCisKICAgICBOU1VSTCAqcGxhdGZvcm1VUkwgPSBtX3N1Z2dlc3RlZFRv
QWN0dWFsVVJMTWFwLmdldChzdWdnZXN0ZWRVUkwpLmdldCgpOwogICAgIGlmICghcGxhdGZvcm1V
UkwpIHsKICAgICAgICAgcGxhdGZvcm1VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpzdWdnZXN0
ZWRVUkxdOwogICAgICAgICAvLyBUaGUgdXNlciBtdXN0IGNvbmZpcm0gbmV3IGZpbGVuYW1lcyBi
ZWZvcmUgd2UgY2FuIHNhdmUgdG8gdGhlbS4KICAgICAgICAgZm9yY2VTYXZlRGlhbG9nID0gdHJ1
ZTsKICAgICB9Ci0gICAgCisKICAgICBBU1NFUlQocGxhdGZvcm1VUkwpOwogICAgIGlmICghcGxh
dGZvcm1VUkwpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNyw3ICszMzYsNyBAQCB2b2lkIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBj
b25zdCBTdHJpbmcmCiAKICAgICBhdXRvIHNhdmVUb1VSTCA9IF4oTlNVUkwgKmFjdHVhbFVSTCkg
ewogICAgICAgICBBU1NFUlQoYWN0dWFsVVJMKTsKLSAgICAgICAgCisKICAgICAgICAgbV9zdWdn
ZXN0ZWRUb0FjdHVhbFVSTE1hcC5zZXQoc3VnZ2VzdGVkVVJMQ29weSwgYWN0dWFsVVJMKTsKIAog
ICAgICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewpAQCAtMzU2LDcgKzM1NSw3IEBAIHZvaWQgV2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkws
IGNvbnN0IFN0cmluZyYKICAgICAgICAgc2F2ZVRvVVJMKHBsYXRmb3JtVVJMKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIE5TU2F2ZVBhbmVsICpwYW5lbCA9IFtOU1NhdmVQ
YW5lbCBzYXZlUGFuZWxdOwogICAgIHBhbmVsLm5hbWVGaWVsZFN0cmluZ1ZhbHVlID0gcGxhdGZv
cm1VUkwubGFzdFBhdGhDb21wb25lbnQ7CiAgICAgcGFuZWwuZGlyZWN0b3J5VVJMID0gW3BsYXRm
b3JtVVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CkBAIC0zNzIsNyArMzcxLDcg
QEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1
Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dDo6YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRl
bnQpCiB7CiAgICAgQVNTRVJUKCFzdWdnZXN0ZWRVUkwuaXNFbXB0eSgpKTsKLSAgICAKKwogICAg
IFJldGFpblB0cjxOU1VSTD4gYWN0dWFsVVJMID0gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5n
ZXQoc3VnZ2VzdGVkVVJMKTsKICAgICAvLyBkbyBub3QgYXBwZW5kIHVubGVzcyB0aGUgdXNlciBo
YXMgYWxyZWFkeSBjb25maXJtZWQgdGhpcyBmaWxlbmFtZSBpbiBzYXZlKCkuCiAgICAgaWYgKCFh
Y3R1YWxVUkwpCkBAIC01ODIsNyArNTgxLDcgQEAgLSAoSUJBY3Rpb24pc2hvd1dpbmRvdzooaWQp
c2VuZGVyCiAgICAgfQogCiAgICAgX3Zpc2libGUgPSBZRVM7Ci0gICAgCisKICAgICBfc2hvdWxk
QXR0YWNoID0gX2luc3BlY3RvckNsaWVudC0+aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAmJiBf
ZnJvbnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRvdygpICYmICFfaW5zcGVjdG9yQ2xpZW50LT5p
bnNwZWN0b3JBdHRhY2hEaXNhYmxlZCgpOwogCiAgICAgaWYgKF9zaG91bGRBdHRhY2gpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuY3BwCmluZGV4IDcxM2U4MzA2ZGZhZjljNjdhYzUwOTFlOTUwM2ZhYjYwMGFlMTdhOWYu
LjllMjc4YmExM2VhMWY3MzEyZDM4MDc2NDUxOWQ2ZDkwZGQzZDEwY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cApAQCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAi
QVMgSVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTIyNCw4ICsyMjQsOCBAQCB2
b2lkIFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKICAgICBtX2Zyb250ZW5k
SGFuZGxlID0gMDsKIH0KIAotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVk
V2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmlldz4mIGZy
b250ZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0b3JDbGll
bnQqIGluc3BlY3RvckNsaWVudCwgUGFzc093blB0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCi0gICAg
OiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSwgIGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKSwgc2V0
dGluZ3MpCitXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgSFdORCBpbnNwZWN0ZWRXZWJWaWV3SHdu
ZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0cjxXZWJWaWV3PiYgZnJvbnRlbmRXZWJW
aWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVj
dG9yQ2xpZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdzKQorICAgIDogSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNw
ZWN0b3JDb250cm9sbGVyKCksICBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSksIHN0ZDo6bW92
ZShzZXR0aW5ncykpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykK
ICAgICAsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQoaW5zcGVjdGVkV2ViVmlld0h3bmQpCiAgICAg
LCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCkBAIC0yODgsNyArMjg4LDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQog
CiAgICAgY2xvc2VXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpOwogICAgIC8vIFdlIG5lZWQg
dG8gc2V0IHRoZSBhdHRhY2hlZCB3aW5kb3cncyBoZWlnaHQgYmVmb3JlIHdlIGFjdHVhbGx5IGF0
dGFjaCB0aGUgd2luZG93LgotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG1fYXR0YWNoZWQgaXMgdHJ1
ZSBzbyB0aGF0IGNhbGxpbmcgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQgZnJvbSByZXN0b3JlQXR0
YWNoZWRXaW5kb3dIZWlnaHQgZG9lc24ndCByZXR1cm4gZWFybHkuIAorICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IG1fYXR0YWNoZWQgaXMgdHJ1ZSBzbyB0aGF0IGNhbGxpbmcgc2V0QXR0YWNoZWRXaW5k
b3dIZWlnaHQgZnJvbSByZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQgZG9lc24ndCByZXR1cm4g
ZWFybHkuCiAgICAgbV9hdHRhY2hlZCA9IHRydWU7CiAgICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIg
Y2FsbGluZyBzaG93V2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKSwgdGhlIHBhcmVudCBmcmFt
ZXZpZXcncyB2aXNpYmxlSGVpZ2h0IGluY29ycmVjdGx5IHJldHVybnMgMCBhbHdheXMgKFdpbmRv
d3Mgb25seSkuCiAgICAgLy8gV2UgYXJlIGV4cGVjdGluZyB0aGlzIHZhbHVlIHRvIGJlIGp1c3Qg
dGhlIGhlaWdodCBvZiB0aGUgcGFyZW50IHdpbmRvdyB3aGVuIHdlIGNhbGwgcmVzdG9yZUF0dGFj
aGVkV2luZG93SGVpZ2h0LCB3aGljaCBpdCBpcyBiZWZvcmUKQEAgLTMzMiw3ICszMzIsNyBAQCB2
b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1
bnNpZ25lZCBoZWlnaHQpCiAgICAgLy8gb2YgdGhlIGluc3BlY3RlZCB3ZWIgdmlldyBoYXBwZW5z
IGluIG9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nLCBub3QgaGVyZS4KICAgICBTZXRXaW5kb3dQ
b3MobV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgMCwgMCwgMCwgd2ViVmlld1dpZHRoLCB0b3RhbEhl
aWdodCwgU1dQX05PWk9SREVSKTsKIAotICAgIFJlZHJhd1dpbmRvdyhtX2Zyb250ZW5kV2ViVmll
d0h3bmQsIDAsIDAsIFJEV19JTlZBTElEQVRFIHwgUkRXX0FMTENISUxEUkVOIHwgUkRXX1VQREFU
RU5PVyk7IAorICAgIFJlZHJhd1dpbmRvdyhtX2Zyb250ZW5kV2ViVmlld0h3bmQsIDAsIDAsIFJE
V19JTlZBTElEQVRFIHwgUkRXX0FMTENISUxEUkVOIHwgUkRXX1VQREFURU5PVyk7CiAgICAgUmVk
cmF3V2luZG93KG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIDAsIDAsIFJEV19JTlZBTElEQVRFIHwg
UkRXX0FMTENISUxEUkVOIHwgUkRXX1VQREFURU5PVyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZDY3
MzQwNWIyMjRiY2VkM2QwZjkxNzA1YmE2ZDFjZTFhMGExZmMxMy4uZDRiZWU3NDQzNTg2NGIyN2Fk
OTdmYWI3OTQ1YjZjN2RjNGNkZWFjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTYsMTMgKzYsMTMgQEAKICAq
IGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2
aXJ0dWFsIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKLSAgICBXVEY6OlBhc3NPd25QdHI8V2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5k
U2V0dGluZ3MoKTsKKyAgICBXVEY6OnN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpOwog
CiAgICAgV2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3OwogICAgIFdlYkNvcmU6OlBhZ2UqIG1f
ZnJvbnRlbmRQYWdlOwpAQCAtOTQsMTkgKzk0LDE5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwsIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5lciB7CiBwdWJsaWM6Ci0g
ICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywg
SFdORCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0
cjxXZWJWaWV3PiYgZnJvdG5lbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdl
Ykluc3BlY3RvckNsaWVudCosIFdURjo6UGFzc093blB0cjxTZXR0aW5ncz4pOworICAgIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5z
cGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmll
dz4mIGZyb3RuZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0
b3JDbGllbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAgICB2aXJ0dWFsIH5XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9h
ZGVkKCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NV
UkwoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hX
aW5kb3coRG9ja1NpZGUpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKLSAgICAK
KwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWln
aHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCmluZGV4IGIzZTZlNDVm
OWIxOGE2ZTMyNzc5NjllN2VjYTZmZmFjNGUwNTMzOWUuLmJiNDU5YzQyNjkxNzIzYmExYWViODVh
ODY0NjNlYjViY2JkOWQyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudChXZWJQYWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKQot
ICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBhZG9wdFB0cihu
ZXcgU2V0dGluZ3MoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZwYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQ
YWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCiAgICAgLCBtX3BhZ2UocGFnZSkK
IHsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224087</attachid>
            <date>2014-02-13 10:52:58 -0800</date>
            <delta_ts>2014-02-13 15:37:05 -0800</delta_ts>
            <desc>v3</desc>
            <filename>bug-128681-20140213155249.patch</filename>
            <type>text/plain</type>
            <size>97590</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MDM5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAx
YmJlYjJmMWVhZTVjNWZkYjVhOWE1ZTM0ZjNlNmFkZjc2ZDU2ZjNhLi5jMjIwODRmY2UzNDNjMmU4
YjVkZjBiZDIzZWQ1NTg2NmQzZjM0MWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMg
Z2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAg
V2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIg
ZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rp
bmcgd2VyZSB0b3VjaGVkLgorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKwog
MjAxNC0wMi0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDU3RhY2sgQnJhbmNoOiBWTTo6Y3VycmVudFJldHVyblRodW5rUEMgYXBwZWFycyB0byBiZSB1
bnVzZWQgYW5kIHNob3VsZCBiZSByZW1vdmVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTNiNTI2ZTk0YTQzOGEz
Mjg2MjkyY2QxNTkwM2QwMjNhZDE4MDYyNS4uNzZmZDE2MzllYWQ3MzYzZDIzNDFiMTY5ZGUxMDQw
N2MzZWM2MGRjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDE0LTAyLTEzICBTZXJn
aW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVw
bGFjZSB1c2VzIG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdl
YkNvcmUvaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMjg2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBbm90aGVyIHN0ZXAgdG93YXJkcyBnZXR0aW5nIHJpZCBvZiBQYXNzT3duUHRyL093
blB0ciwgbm93IHRhcmdldGluZworICAgICAgICBXZWJDb3JlL2luc3BlY3Rvci8qLiBCZXNpZGVz
IGZpbGVzIGluIHRoZXJlLCBhIGZldyBvdGhlciBmaWxlcyBpbgorICAgICAgICBKYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IsIFdlYktpdC8sIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC8KKyAgICAgICAgYW5kIFdlYkNvcmUvdGVzdGluZyB3ZXJlIHRvdWNoZWQuCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzOyBubyBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5p
bjoKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0RP
TUVkaXRvci5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckhpc3RvcnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXku
Y3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlQ29uc29sZUFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oOgorICAgICAg
ICAqIGluc3BlY3Rvci9XZWJDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5jcHA6CisK
IDIwMTQtMDItMTMgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAg
IEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQgc2hvdWxkIGdldCBTZXR0aW5ncyBmcm9tIHRoZSBG
cmFtZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdC9jZi9DaGFuZ2VMb2cKaW5kZXggNzU2MjE1ZmMzYzAyM2EwMTg2YTAxZjM0Yzc1Mzc5NDQz
ZjM2Zjk5YS4uY2Y4MTM4NTFlMThhMjQ0Mjk1YTBjNmM3ZTU5MDJmN2E1MzdjMjA2ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jZi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jZi9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxz
ZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQ
YXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3Rv
cgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4Njgx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhl
ciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJn
ZXRpbmcKKyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVy
ZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
LCBXZWJLaXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFu
ZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwOgorCiAyMDEzLTEyLTAzICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUHVzaCBS
ZW1vdGUgSW5zcGVjdG9yIGRlYnVnZ2luZyBjb25uZWN0aW9uIG1hbmFnZW1lbnQgaW50byBKYXZh
U2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCmluZGV4IDY4MGM3NmFjZWZmZTE0ZGRiNWI2Nzk1ZmI2
MjM0MmU0MTBlMTcyMmQuLmQyZTE1ZDNiZWQ3MzYzOTgwMTcyYjMzYzAwZGViOTliOWFiMzRiOTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENv
cnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2Ug
dXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3Jl
L2luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIs
IG5vdyB0YXJnZXRpbmcKKyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxl
cyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisg
ICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcDoKKwogMjAxNC0wMi0xMyAgUnl1YW4g
Q2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0VGTF1bV0sxXSBEbyBu
b3QgaW5jbHVkZSBsaWJzb3VwIGhlYWRlciBpbiB0aGUgcHVibGljIGhlYWRlcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5n
ZUxvZwppbmRleCAxMWYwZGJiNGI1NjVhM2Y4N2M4Yzc0YmM4M2U3MmEzOTljYmNhMGY0Li4yNzg5
ZjBlOTgxZmIxNjM5NzBjMzhhY2YxOGJkNjJlMjk0MmE4NWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTQtMDItMTMgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJl
aWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9P
d25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dh
cmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAg
ICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90
aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciwgV2ViS2l0Lywg
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LworICAgICAgICBhbmQgV2ViQ29yZS90
ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3Rv
ckNsaWVudEd0ay5jcHA6CisKIDIwMTQtMDItMTEgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdWJwaXhlbCByZW5kZXJpbmc6IE1ha2UgR3JhcGhpY3NMYXllckNs
aWVudDo6cGFpbnRDb250ZW50cydzIGNsaXAgcmVjdCBzdWJwaXhlbCBiYXNlZC4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5n
ZUxvZwppbmRleCBiMjhhZTU0MDI4ODU4OTVhMzEwZGVlYTA0NGQ4ZjBiYmYyMDNiODIzLi5lOTBh
NTMzZTQ2ZTMxODU4MGY3MTdhOGUxNDRiNTRlZWI1NzQ3MDU5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2lvcy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTQtMDItMTMgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJl
aWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9P
d25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dh
cmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAg
ICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90
aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciwgV2ViS2l0Lywg
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LworICAgICAgICBhbmQgV2ViQ29yZS90
ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudElPUy5tbToKKwogMjAxNC0wMi0xMiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3Vs
YWluQGFwcGxlLmNvbT4KIAogICAgICAgICBbV0syXVtpT1NdIEFkZCBiYWNrIHRoZSBzcGVjaWFs
IHZpZXdwb3J0IGZvciB0aGUgb2xkIHhodG1sIG1vYmlsZSBkb2N0eXBlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cK
aW5kZXggOGMwZTFiZTY1NGZjYmIzZGQwNTJhNjkxZTExMzYzMGFlMmUxYWY1OS4uYjhlNDlhMjk4
MDc4N2NjYjc2YjQyZmU0ZGYzOTc1YTJlZTM1YjFkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE4IEBACisyMDE0LTAyLTEzICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9w
ZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFBhc3NPd25QdHIvT3duUHRy
IHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2ODEKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbm90aGVyIHN0ZXAgdG93YXJkcyBn
ZXR0aW5nIHJpZCBvZiBQYXNzT3duUHRyL093blB0ciwgbm93IHRhcmdldGluZworICAgICAgICBX
ZWJDb3JlL2luc3BlY3Rvci8qLiBCZXNpZGVzIGZpbGVzIGluIHRoZXJlLCBhIGZldyBvdGhlciBm
aWxlcyBpbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IsIFdlYktpdC8sIFdlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8KKyAgICAgICAgYW5kIFdlYkNvcmUvdGVzdGlu
ZyB3ZXJlIHRvdWNoZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW06
CisKIDIwMTQtMDItMTMgIERhbiBCZXJuc3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KIAogICAgICAg
ICBpT1MgYnVpbGQgZml4LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQzYTM2ZDg5Y2U5NWVmOGU3MTY5
Zjk2NmEyYTVhOTlhOGI0OTRiMTguLjU3MmQ2ZDRhNDY2MDM2OTY2YjMyYTE3OGE1ZjVlYWJkNjk5
N2MyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxNC0wMi0xMyAgU2Vy
Z2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJl
cGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBX
ZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9P
d25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRl
cyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcDoKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKwogMjAxNC0wMi0xMSAgWmFsYW4gQnVq
dGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzogTWFr
ZSBHcmFwaGljc0xheWVyQ2xpZW50OjpwYWludENvbnRlbnRzJ3MgY2xpcCByZWN0IHN1YnBpeGVs
IGJhc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCmluZGV4IGEyMTU0YTJhZTc5N2YxYWUyZjg1YWVlMTlkZjI1M2U3NGZm
NjM4MDQuLjUxYzRjOTIxZDc5MTE2ZTZmMjE4ZmQzODRiZTAzMTRmNDg5MDZmODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8u
Y29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3du
UHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVw
IHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcK
KyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBm
ZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJL
aXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJD
b3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6CisKIDIwMTQtMDItMTMgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIFhQ
QyBmb3IgcGx1Zy1pbnMgdGhhdCBuZWVkIGV4ZWN1dGFibGUgaGVhcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5j
cHAKaW5kZXggMjAyZDNmZGRhMDk5YjIyYjc2YmFjNThiMGI1ZjI3YzEzMjU1ZjY3Mi4uNzQ0NWNl
ZmQwNzhmZjczMzI3NDNjNzE1NmUzMDE5YjE5NWZhYzhkMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3Bw
CkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5nPj4g
Z2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKCiAgICAgaWYgKHRleHQu
aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgT3duUHRyPFZlY3Rvcjxz
aXplX3Q+PiBlbmRpbmdzKGxpbmVFbmRpbmdzKHRleHQpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
VmVjdG9yPHNpemVfdD4+IGVuZGluZ3MobGluZUVuZGluZ3ModGV4dCkpOwogICAgIHNpemVfdCBz
aXplID0gZW5kaW5ncy0+c2l6ZSgpOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICBmb3Ig
KHNpemVfdCBsaW5lTnVtYmVyID0gMDsgbGluZU51bWJlciA8IHNpemU7ICsrbGluZU51bWJlcikg
ewpAQCAtMTAwLDkgKzEwMCw5IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPGludCwgU3RyaW5n
Pj4gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKCiAgICAgcmV0dXJu
IHJlc3VsdDsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29u
c3QgU3RyaW5nJiB0ZXh0KQorc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5k
aW5ncyhjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBy
ZXN1bHQoYWRvcHRQdHIobmV3IFZlY3RvcjxzaXplX3Q+KCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9
IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHNpemVfdD4+KCk7CiAKICAgICB1bnNpZ25lZCBzdGFy
dCA9IDA7CiAgICAgd2hpbGUgKHN0YXJ0IDwgdGV4dC5sZW5ndGgoKSkgewpAQCAtMTE1LDcgKzEx
NSw3IEBAIFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmlu
ZyYgdGV4dCkKICAgICB9CiAgICAgcmVzdWx0LT5hcHBlbmQodGV4dC5sZW5ndGgoKSk7CiAKLSAg
ICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0
aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGludCBsaW5lTnVtYmVyLCBjb25zdCBT
dHJpbmcmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaAppbmRleCAzZWFhMDY2NDFjM2RhNTQx
Yjc5ZGI0YmU0OWQ1N2QyMjA3ZDI3Mzg3Li4yYmMyZDNjN2MwZGQyZGUyZjFjMjJhM2MyZGI2ZmEx
MWE2YjMyMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaApAQCAtNDgsNyArNDgsNyBAQCBKU19FWFBPUlRf
UFJJVkFURSBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJjaFJlZ2V4KGNv
bnN0IFN0cmluZyYgcQogSlNfRVhQT1JUX1BSSVZBVEUgaW50IGNvdW50UmVndWxhckV4cHJlc3Np
b25NYXRjaGVzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBjb25zdCBTdHJp
bmcmKTsKIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBTdHJpbmcm
IHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNSZWdleCk7CiBK
U19FWFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9mZnNldChzaXpl
X3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwotSlNfRVhQT1JU
X1BSSVZBVEUgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3Ry
aW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+
IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYpOwogCiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcg
ZmluZFNjcmlwdFNvdXJjZVVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogSlNfRVhQT1JUX1BS
SVZBVEUgU3RyaW5nIGZpbmRTY3JpcHRTb3VyY2VNYXBVUkwoY29uc3QgU3RyaW5nJiBjb250ZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IGRiNmY5MTA2Y2RlNmRhMTZh
OGVlY2U5NDViN2Q5YjJlYTQ4OWU3ZWEuLjcyZjYwYzFmMjQyOTc1OGU1ZjczMWY0MjM0MTgzNzlh
Yjk1ZmZiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAtMzYsOCArMzYs
NiBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNsdWRlICJTY3Jp
cHRPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAg
LTEzMCw3ICsxMjgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRv
Q29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cAogICAgICAgICBjbGVhck1l
c3NhZ2VzKCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2UoYWRvcHRQdHIo
bmV3IENvbnNvbGVNZXNzYWdlKCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwgdHlwZSwgbGV2ZWws
IG1lc3NhZ2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50aWZpZXIpKSk7CisgICAgYWRkQ29uc29s
ZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oIWlzV29ya2VyQWdlbnQo
KSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRp
ZmllcikpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29u
c29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVzc2FnZUxldmVs
IGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgUGFz
c1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgdW5zaWduZWQgbG9uZyByZXF1ZXN0
SWRlbnRpZmllcikKQEAgLTE0Myw3ICsxNDEsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cAog
ICAgICAgICBjbGVhck1lc3NhZ2VzKCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRkQ29uc29sZU1l
c3NhZ2UoYWRvcHRQdHIobmV3IENvbnNvbGVNZXNzYWdlKCFpc1dvcmtlckFnZW50KCksIHNvdXJj
ZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgc3RhdGUsIHJlcXVlc3RJZGVudGlm
aWVyKSkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1l
c3NhZ2U+KCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFy
Z3VtZW50cywgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxvbmcgcmVxdWVz
dElkZW50aWZpZXIpCkBAIC0xNTcsNyArMTU1LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdl
bnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXAK
ICAgICB9CiAKICAgICBib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrID0gIWlzV29ya2VyQWdlbnQo
KSAmJiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBhZGRDb25zb2xlTWVzc2FnZShhZG9wdFB0
cihuZXcgQ29uc29sZU1lc3NhZ2UoY2FuR2VuZXJhdGVDYWxsU3RhY2ssIHNvdXJjZSwgdHlwZSwg
bGV2ZWwsIG1lc3NhZ2UsIHNjcmlwdElELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIHN0YXRl
LCByZXF1ZXN0SWRlbnRpZmllcikpKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2Vf
dW5pcXVlPENvbnNvbGVNZXNzYWdlPihjYW5HZW5lcmF0ZUNhbGxTdGFjaywgc291cmNlLCB0eXBl
LCBsZXZlbCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgc3Rh
dGUsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIFZlY3Rvcjx1bnNpZ25lZD4gSW5zcGVjdG9y
Q29uc29sZUFnZW50Ojpjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzKCkgY29uc3QKQEAgLTIy
OSw3ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCBpc0dyb3VwTWVzc2FnZShNZXNzYWdlVHlwZSB0eXBl
KQogICAgICAgICB8fCB0eXBlID09IE1lc3NhZ2VUeXBlOjpFbmRHcm91cDsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29s
ZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlKQordm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFk
ZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1l
c3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbnNwZWN0b3JF
bnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSk7CiAgICAgQVNTRVJUX0FSRyhj
b25zb2xlTWVzc2FnZSwgY29uc29sZU1lc3NhZ2UpOwpAQCAtMjQwLDcgKzIzOCw3IEBAIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNv
bGVNZXNzYWdlPiBjb25zb2xlCiAgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2FnZS0+dXBkYXRl
UmVwZWF0Q291bnRJbkNvbnNvbGUobV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCkpOwogICAgIH0g
ZWxzZSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29sZU1lc3NhZ2UuZ2V0KCk7
Ci0gICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2FnZSk7CisgICAg
ICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChzdGQ6Om1vdmUoY29uc29sZU1lc3NhZ2UpKTsK
ICAgICAgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIG1fZW5hYmxlZCkKICAgICAgICAg
ICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmREaXNwYXRjaGVy
LmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwgdHJ1ZSk7CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29s
ZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDb25zb2xlQWdlbnQuaAppbmRleCA0OWE3OWU2M2QzOTk4ZmEzOGEwNDExNWJjYzU4YzdmMTVk
MmY4M2EyLi5mODU3ZmM3OGE2YmI0NzhlODI2NGVmOGE1ODc3MDBiZDY4YzhjOGI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtODMsMTMgKzgzLDEzIEBAIHB1YmxpYzoKICAgICB2
b2lkIGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+KTsK
IAogcHJvdGVjdGVkOgotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoUGFzc093blB0cjxDb25z
b2xlTWVzc2FnZT4pOworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PENvbnNvbGVNZXNzYWdlPik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JDb25zb2xlRnJv
bnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVj
dG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIENv
bnNvbGVNZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKLSAgICBWZWN0b3I8T3duUHRyPENvbnNv
bGVNZXNzYWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0
cjxDb25zb2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOwogICAgIGludCBtX2V4cGlyZWRD
b25zb2xlTWVzc2FnZUNvdW50OwogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25lZD4gbV9jb3Vu
dHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4gbV90aW1lczsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAu
aW4KaW5kZXggOWY4OGRiM2RiMTUxNzZhN2ZhN2M3NWJiMmU1NWJjMDg0YjFjZTkwZS4uNjVlZjhh
YWExNDdjYzAwYTFmODhlYTUxOTI5YWNhMGQ5ZGZlMjQ4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4K
QEAgLTI4MzIsNyArMjgzMiw3IEBAIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDI3cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0RXYKIF9fWk43V2ViQ29yZTI4SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDI3c2V0VGltZWxpbmVQcm9maWxpbmdFbmFibGVkRWIK
IF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDMwY29uc3RyYWluZWRB
dHRhY2hlZFdpbmRvd1dpZHRoRWpqCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwzMWNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dIZWlnaHRFamoKLV9fWk43V2ViQ29y
ZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3BlY3RvckNvbnRyb2xs
ZXJFUE5TXzRQYWdlRU4zV1RGMTBQYXNzT3duUHRySU5TMF84U2V0dGluZ3NFRUUKK19fWk43V2Vi
Q29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3BlY3RvckNvbnRy
b2xsZXJFUE5TXzRQYWdlRVN0MTB1bmlxdWVfcHRySU5TMF84U2V0dGluZ3NFU3QxNGRlZmF1bHRf
ZGVsZXRlSVM2X0VFCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxE
MkV2CiBfX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU185RE9NV2luZG93RQogX19aTjdXZWJDb3JlOURPTVdpbmRvdzRvcGVuRVJLTjNX
VEY2U3RyaW5nRVJLTlMxXzEyQXRvbWljU3RyaW5nRVM0X1JTMF9TOF8KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAKaW5kZXggZjQwNGE1MmZlYmVm
MTExZjgyNzk3YmMxYWRhMjJhOTE3YjBmNTE1YS4uMWUwZmFkMzdmYTc5OGYyYmFlYjc3MTFiN2Y0
MjA2NGM5M2FlNGY3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRM
aW5lQVBJSG9zdC5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgQ29tbWFuZExpbmVBUElIb3N0OjpDb21t
YW5kTGluZUFQSUhvc3QoKQogICAgICwgbV9kYXRhYmFzZUFnZW50KG51bGxwdHIpCiAjZW5kaWYK
IHsKLSAgICBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdCA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0
YWJsZU9iamVjdCk7CisgICAgbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RhYmxlT2JqZWN0PigpOwogfQogCiBDb21tYW5kTGluZUFQSUhvc3Q6On5D
b21tYW5kTGluZUFQSUhvc3QoKQpAQCAtMTI0LDkgKzEyNCw5IEBAIERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlIENvbW1hbmRMaW5lQVBJSG9zdDo6SW5zcGVjdGFibGVPYmplY3Q6OmdldChKU0M6OkV4
ZWNTdGF0CiAgICAgcmV0dXJuIERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiB9OwogCi12b2lk
IENvbW1hbmRMaW5lQVBJSG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8Q29tbWFu
ZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQordm9pZCBDb21tYW5kTGlu
ZUFQSUhvc3Q6OmFkZEluc3BlY3RlZE9iamVjdChzdGQ6OnVuaXF1ZV9wdHI8Q29tbWFuZExpbmVB
UElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdD4gb2JqZWN0KQogewotICAgIG1faW5zcGVjdGVkT2Jq
ZWN0cy5pbnNlcnQoMCwgb2JqZWN0KTsKKyAgICBtX2luc3BlY3RlZE9iamVjdHMuaW5zZXJ0KDAs
IHN0ZDo6bW92ZShvYmplY3QpKTsKICAgICB3aGlsZSAobV9pbnNwZWN0ZWRPYmplY3RzLnNpemUo
KSA+IDUpCiAgICAgICAgIG1faW5zcGVjdGVkT2JqZWN0cy5yZW1vdmVMYXN0KCk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKaW5kZXggMDhmMGMx
NWQ2MWVjMWYwMDE4ZDg4ZWU3NzM4MWFlMGY1ZDhjNzJhYS4uNjE3OGVlZWMyOGU3ZjlkY2Q4MWU1
MDI1YjBjZGQ4YWM2N2I2ODBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21t
YW5kTGluZUFQSUhvc3QuaApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1
YWwgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgZ2V0KEpTQzo6RXhlY1N0YXRlKik7CiAgICAgICAg
IHZpcnR1YWwgfkluc3BlY3RhYmxlT2JqZWN0KCkgeyB9CiAgICAgfTsKLSAgICB2b2lkIGFkZElu
c3BlY3RlZE9iamVjdChQYXNzT3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7CisgICAgdm9pZCBh
ZGRJbnNwZWN0ZWRPYmplY3Qoc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RhYmxlT2JqZWN0Pik7CiAg
ICAgdm9pZCBjbGVhckluc3BlY3RlZE9iamVjdHMoKTsKICAgICBJbnNwZWN0YWJsZU9iamVjdCog
aW5zcGVjdGVkT2JqZWN0KHVuc2lnbmVkIGluZGV4KTsKICAgICB2b2lkIGluc3BlY3RJbXBsKFBh
c3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gb2JqZWN0VG9JbnNwZWN0LCBQYXNz
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IGhpbnRzKTsKQEAgLTExNSw4ICsxMTUs
OCBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvckRhdGFiYXNlQWdlbnQqIG1fZGF0YWJhc2VBZ2Vu
dDsKICNlbmRpZgogCi0gICAgVmVjdG9yPE93blB0cjxJbnNwZWN0YWJsZU9iamVjdD4+IG1faW5z
cGVjdGVkT2JqZWN0czsKLSAgICBPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+IG1fZGVmYXVsdElu
c3BlY3RhYmxlT2JqZWN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdGFibGVP
YmplY3Q+PiBtX2luc3BlY3RlZE9iamVjdHM7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rh
YmxlT2JqZWN0PiBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdDsKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01FZGl0
b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAKaW5kZXggN2Yy
ZmFiOGJiNmU3MWFiYjg5ZDMyOTZjZDIwYTIzYmZmODBhZjllMy4uYjkxMmQxNGVmNmQ4Y2Y2ZTI0
MmIxOWU1NjQyOTQ0NmFlOGI5MWIwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTUVkaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRv
ci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBwZXJmb3Jt
KEV4Y2VwdGlvbkNvZGUmIGVjKSBvdmVycmlkZQogICAgIHsKICAgICAgICAgaWYgKG1fbm9kZS0+
cGFyZW50Tm9kZSgpKSB7Ci0gICAgICAgICAgICBtX3JlbW92ZUNoaWxkQWN0aW9uID0gYWRvcHRQ
dHIobmV3IFJlbW92ZUNoaWxkQWN0aW9uKG1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUuZ2V0
KCkpKTsKKyAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBzdGQ6Om1ha2VfdW5pcXVl
PFJlbW92ZUNoaWxkQWN0aW9uPihtX25vZGUtPnBhcmVudE5vZGUoKSwgbV9ub2RlLmdldCgpKTsK
ICAgICAgICAgICAgIGlmICghbV9yZW1vdmVDaGlsZEFjdGlvbi0+cGVyZm9ybShlYykpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CkBAIC0xMTksNyArMTE5LDcgQEAg
cHJpdmF0ZToKICAgICBSZWZQdHI8Tm9kZT4gbV9wYXJlbnROb2RlOwogICAgIFJlZlB0cjxOb2Rl
PiBtX25vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1fYW5jaG9yTm9kZTsKLSAgICBPd25QdHI8UmVt
b3ZlQ2hpbGRBY3Rpb24+IG1fcmVtb3ZlQ2hpbGRBY3Rpb247CisgICAgc3RkOjp1bmlxdWVfcHRy
PFJlbW92ZUNoaWxkQWN0aW9uPiBtX3JlbW92ZUNoaWxkQWN0aW9uOwogfTsKIAogY2xhc3MgRE9N
RWRpdG9yOjpSZW1vdmVBdHRyaWJ1dGVBY3Rpb24gOiBwdWJsaWMgSW5zcGVjdG9ySGlzdG9yeTo6
QWN0aW9uIHsKQEAgLTIwOCw4ICsyMDgsOCBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9uZXh0U2li
bGluZyhub2RlLm5leHRTaWJsaW5nKCkpCiAgICAgICAgICwgbV9odG1sKGh0bWwpCiAgICAgICAg
ICwgbV9uZXdOb2RlKG51bGxwdHIpCi0gICAgICAgICwgbV9oaXN0b3J5KGFkb3B0UHRyKG5ldyBJ
bnNwZWN0b3JIaXN0b3J5KCkpKQotICAgICAgICAsIG1fZG9tRWRpdG9yKGFkb3B0UHRyKG5ldyBE
T01FZGl0b3IobV9oaXN0b3J5LmdldCgpKSkpCisgICAgICAgICwgbV9oaXN0b3J5KHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKSkKKyAgICAgICAgLCBtX2RvbUVkaXRvcihzdGQ6
Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4obV9oaXN0b3J5LmdldCgpKSkKICAgICB7CiAgICAgfQog
CkBAIC0yNDIsOCArMjQyLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgbV9odG1sOwogICAgIFN0
cmluZyBtX29sZEhUTUw7CiAgICAgTm9kZSogbV9uZXdOb2RlOwotICAgIE93blB0cjxJbnNwZWN0
b3JIaXN0b3J5PiBtX2hpc3Rvcnk7Ci0gICAgT3duUHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKKyAgICBz
dGQ6OnVuaXF1ZV9wdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKIH07CiAKIGNsYXNzIERPTUVk
aXRvcjo6UmVwbGFjZVdob2xlVGV4dEFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpB
Y3Rpb24gewpAQCAtMzUyLDI5ICszNTIsMjkgQEAgRE9NRWRpdG9yOjp+RE9NRWRpdG9yKCkgeyB9
CiAKIGJvb2wgRE9NRWRpdG9yOjppbnNlcnRCZWZvcmUoTm9kZSogcGFyZW50Tm9kZSwgUGFzc1Jl
ZlB0cjxOb2RlPiBub2RlLCBOb2RlKiBhbmNob3JOb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKIHsK
LSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBJbnNlcnRCZWZvcmVB
Y3Rpb24ocGFyZW50Tm9kZSwgbm9kZSwgYW5jaG9yTm9kZSkpLCBlYyk7CisgICAgcmV0dXJuIG1f
aGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPEluc2VydEJlZm9yZUFjdGlvbj4ocGFy
ZW50Tm9kZSwgbm9kZSwgYW5jaG9yTm9kZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnJl
bW92ZUNoaWxkKE5vZGUqIHBhcmVudE5vZGUsIE5vZGUqIG5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVj
KQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlbW92ZUNo
aWxkQWN0aW9uKHBhcmVudE5vZGUsIG5vZGUpKSwgZWMpOworICAgIHJldHVybiBtX2hpc3Rvcnkt
PnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZW1vdmVDaGlsZEFjdGlvbj4ocGFyZW50Tm9kZSwg
bm9kZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnNldEF0dHJpYnV0ZShFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgdmFsdWUsIEV4Y2VwdGlv
bkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3
IFNldEF0dHJpYnV0ZUFjdGlvbihlbGVtZW50LCBuYW1lLCB2YWx1ZSkpLCBlYyk7CisgICAgcmV0
dXJuIG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldEF0dHJpYnV0ZUFjdGlv
bj4oZWxlbWVudCwgbmFtZSwgdmFsdWUpLCBlYyk7CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpyZW1v
dmVBdHRyaWJ1dGUoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5l
dyBSZW1vdmVBdHRyaWJ1dGVBY3Rpb24oZWxlbWVudCwgbmFtZSkpLCBlYyk7CisgICAgcmV0dXJu
IG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUF0dHJpYnV0ZUFjdGlv
bj4oZWxlbWVudCwgbmFtZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnNldE91dGVySFRN
TChOb2RlJiBub2RlLCBjb25zdCBTdHJpbmcmIGh0bWwsIE5vZGUqKiBuZXdOb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKIHsKLSAgICBPd25QdHI8U2V0T3V0ZXJIVE1MQWN0aW9uPiBhY3Rpb24gPSBh
ZG9wdFB0cihuZXcgU2V0T3V0ZXJIVE1MQWN0aW9uKG5vZGUsIGh0bWwpKTsKKyAgICBhdXRvIGFj
dGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8U2V0T3V0ZXJIVE1MQWN0aW9uPihub2RlLCBodG1sKTsK
ICAgICBTZXRPdXRlckhUTUxBY3Rpb24qIHJhd0FjdGlvbiA9IGFjdGlvbi5nZXQoKTsKLSAgICBi
b29sIHJlc3VsdCA9IG1faGlzdG9yeS0+cGVyZm9ybShhY3Rpb24ucmVsZWFzZSgpLCBlYyk7Cisg
ICAgYm9vbCByZXN1bHQgPSBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptb3ZlKGFjdGlvbiksIGVj
KTsKICAgICBpZiAocmVzdWx0KQogICAgICAgICAqbmV3Tm9kZSA9IHJhd0FjdGlvbi0+bmV3Tm9k
ZSgpOwogICAgIHJldHVybiByZXN1bHQ7CkBAIC0zODIsMTcgKzM4MiwxNyBAQCBib29sIERPTUVk
aXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSoq
IG5ld05vZGUsIEV4YwogCiBib29sIERPTUVkaXRvcjo6cmVwbGFjZVdob2xlVGV4dChUZXh0KiB0
ZXh0Tm9kZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKLSAgICBy
ZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZXBsYWNlV2hvbGVUZXh0QWN0
aW9uKHRleHROb2RlLCB0ZXh0KSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8UmVwbGFjZVdob2xlVGV4dEFjdGlvbj4odGV4dE5vZGUsIHRleHQp
LCBlYyk7CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpyZXBsYWNlQ2hpbGQoTm9kZSogcGFyZW50Tm9k
ZSwgUGFzc1JlZlB0cjxOb2RlPiBuZXdOb2RlLCBOb2RlKiBvbGROb2RlLCBFeGNlcHRpb25Db2Rl
JiBlYykKIHsKLSAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBSZXBs
YWNlQ2hpbGROb2RlQWN0aW9uKHBhcmVudE5vZGUsIG5ld05vZGUsIG9sZE5vZGUpKSwgZWMpOwor
ICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlQ2hp
bGROb2RlQWN0aW9uPihwYXJlbnROb2RlLCBuZXdOb2RlLCBvbGROb2RlKSwgZWMpOwogfQogCiBi
b29sIERPTUVkaXRvcjo6c2V0Tm9kZVZhbHVlKE5vZGUqIG5vZGUsIGNvbnN0IFN0cmluZyYgdmFs
dWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0o
YWRvcHRQdHIobmV3IFNldE5vZGVWYWx1ZUFjdGlvbihub2RlLCB2YWx1ZSkpLCBlYyk7CisgICAg
cmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldE5vZGVWYWx1ZUFj
dGlvbj4obm9kZSwgdmFsdWUpLCBlYyk7CiB9CiAKIHN0YXRpYyB2b2lkIHBvcHVsYXRlRXJyb3JT
dHJpbmcoY29uc3QgRXhjZXB0aW9uQ29kZSYgZWMsIEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKaW5kZXggOTQz
ZTE4YTFhM2IzN2NhZTIzOWNlNDBlNmNjZTNkOThmMjcwNzNkYS4uZjZhMzhjNTA5ZDI1OWVjYmRk
ZmIzYTBmY2FlNGQ4YTMyZThlMmIyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RP
TVBhdGNoU3VwcG9ydC5jcHAKQEAgLTY2LDcgKzY2LDcgQEAgc3RydWN0IERPTVBhdGNoU3VwcG9y
dDo6RGlnZXN0IHsKICAgICBTdHJpbmcgbV9zaGExOwogICAgIFN0cmluZyBtX2F0dHJzU0hBMTsK
ICAgICBOb2RlKiBtX25vZGU7Ci0gICAgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiBtX2NoaWxkcmVu
OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4gbV9jaGlsZHJlbjsKIH07CiAK
IHZvaWQgRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaERvY3VtZW50KERvY3VtZW50KiBkb2N1bWVudCwg
Y29uc3QgU3RyaW5nJiBtYXJrdXApCkBAIC0xMDUsOCArMTA1LDggQEAgdm9pZCBET01QYXRjaFN1
cHBvcnQ6OnBhdGNoRG9jdW1lbnQoY29uc3QgU3RyaW5nJiBtYXJrdXApCiAgICAgcGFyc2VyLT5m
aW5pc2goKTsKICAgICBwYXJzZXItPmRldGFjaCgpOwogCi0gICAgT3duUHRyPERpZ2VzdD4gb2xk
SW5mbyA9IGNyZWF0ZURpZ2VzdChtX2RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgbnVsbHB0
cik7Ci0gICAgT3duUHRyPERpZ2VzdD4gbmV3SW5mbyA9IGNyZWF0ZURpZ2VzdChuZXdEb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCksICZtX3VudXNlZE5vZGVzTWFwKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8RGlnZXN0PiBvbGRJbmZvID0gY3JlYXRlRGlnZXN0KG1fZG9jdW1lbnQtPmRvY3VtZW50
RWxlbWVudCgpLCBudWxscHRyKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0PiBuZXdJbmZv
ID0gY3JlYXRlRGlnZXN0KG5ld0RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgJm1fdW51c2Vk
Tm9kZXNNYXApOwogCiAgICAgaWYgKCFpbm5lclBhdGNoTm9kZShvbGRJbmZvLmdldCgpLCBuZXdJ
bmZvLmdldCgpLCBJR05PUkVfRVhDRVBUSU9OKSkgewogICAgICAgICAvLyBGYWxsIGJhY2sgdG8g
cmV3cml0ZS4KQEAgLTEzMywxMyArMTMzLDEzIEBAIE5vZGUqIERPTVBhdGNoU3VwcG9ydDo6cGF0
Y2hOb2RlKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBFeGNlcHRpb25Db2RlCiAK
ICAgICAvLyBDb21wb3NlIHRoZSBvbGQgbGlzdC4KICAgICBDb250YWluZXJOb2RlKiBwYXJlbnRO
b2RlID0gbm9kZS5wYXJlbnROb2RlKCk7Ci0gICAgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiBvbGRM
aXN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4gb2xkTGlzdDsKICAgICBm
b3IgKE5vZGUqIGNoaWxkID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgb2xkTGlzdC5hcHBlbmQoY3JlYXRlRGln
ZXN0KGNoaWxkLCBudWxscHRyKSk7CiAKICAgICAvLyBDb21wb3NlIHRoZSBuZXcgbGlzdC4KICAg
ICBTdHJpbmcgbWFya3VwQ29weSA9IG1hcmt1cC5sb3dlcigpOwotICAgIFZlY3RvcjxPd25QdHI8
RGlnZXN0Pj4gbmV3TGlzdDsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+IG5l
d0xpc3Q7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IHBhcmVudE5vZGUtPmZpcnN0Q2hpbGQoKTsg
Y2hpbGQgIT0gJm5vZGU7IGNoaWxkID0gY2hpbGQtPm5leHRTaWJsaW5nKCkpCiAgICAgICAgIG5l
d0xpc3QuYXBwZW5kKGNyZWF0ZURpZ2VzdChjaGlsZCwgbnVsbHB0cikpOwogICAgIGZvciAoTm9k
ZSogY2hpbGQgPSBmcmFnbWVudC0+Zmlyc3RDaGlsZCgpOyBjaGlsZDsgY2hpbGQgPSBjaGlsZC0+
bmV4dFNpYmxpbmcoKSkgewpAQCAtMjA4LDcgKzIwOCw3IEBAIGJvb2wgRE9NUGF0Y2hTdXBwb3J0
Ojppbm5lclBhdGNoTm9kZShEaWdlc3QqIG9sZERpZ2VzdCwgRGlnZXN0KiBuZXdEaWdlc3QsIEV4
Y2VwCiB9CiAKIHN0ZDo6cGFpcjxET01QYXRjaFN1cHBvcnQ6OlJlc3VsdE1hcCwgRE9NUGF0Y2hT
dXBwb3J0OjpSZXN1bHRNYXA+Ci1ET01QYXRjaFN1cHBvcnQ6OmRpZmYoY29uc3QgVmVjdG9yPE93
blB0cjxEaWdlc3Q+PiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgbmV3
TGlzdCkKK0RPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERpZ2VzdD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+
JiBuZXdMaXN0KQogewogICAgIFJlc3VsdE1hcCBuZXdNYXAobmV3TGlzdC5zaXplKCkpOwogICAg
IFJlc3VsdE1hcCBvbGRNYXAob2xkTGlzdC5zaXplKCkpOwpAQCAtMjk1LDcgKzI5NSw3IEBAIERP
TVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0
LCBjb25zdCBWZWN0b3I8T3duUHRyCiAgICAgcmV0dXJuIHN0ZDo6bWFrZV9wYWlyKG9sZE1hcCwg
bmV3TWFwKTsKIH0KIAotYm9vbCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihD
b250YWluZXJOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBv
bGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBuZXdMaXN0LCBFeGNlcHRpb25D
b2RlJiBlYykKK2Jvb2wgRE9NUGF0Y2hTdXBwb3J0Ojppbm5lclBhdGNoQ2hpbGRyZW4oQ29udGFp
bmVyTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+
PiYgb2xkTGlzdCwgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiYgbmV3TGlz
dCwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgc3RkOjpwYWlyPFJlc3VsdE1hcCwgUmVzdWx0
TWFwPiByZXN1bHRNYXBzID0gZGlmZihvbGRMaXN0LCBuZXdMaXN0KTsKICAgICBSZXN1bHRNYXAm
IG9sZE1hcCA9IHJlc3VsdE1hcHMuZmlyc3Q7CkBAIC00MDcsMTAgKzQwNyw5IEBAIHN0YXRpYyB2
b2lkIGFkZFN0cmluZ1RvU0hBMShTSEExJiBzaGExLCBjb25zdCBTdHJpbmcmIHN0cmluZykKICAg
ICBzaGExLmFkZEJ5dGVzKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGNTdHJpbmcu
ZGF0YSgpKSwgY1N0cmluZy5sZW5ndGgoKSk7CiB9CiAKLVBhc3NPd25QdHI8RE9NUGF0Y2hTdXBw
b3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5vZGUqIG5vZGUsIFVu
dXNlZE5vZGVzTWFwKiB1bnVzZWROb2Rlc01hcCkKK3N0ZDo6dW5pcXVlX3B0cjxET01QYXRjaFN1
cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwg
VW51c2VkTm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQogewotICAgIERpZ2VzdCogZGlnZXN0ID0g
bmV3IERpZ2VzdChub2RlKTsKLQorICAgIGF1dG8gZGlnZXN0ID0gc3RkOjptYWtlX3VuaXF1ZTxE
aWdlc3Q+KG5vZGUpOwogICAgIFNIQTEgc2hhMTsKIAogICAgIE5vZGU6Ok5vZGVUeXBlIG5vZGVU
eXBlID0gbm9kZS0+bm9kZVR5cGUoKTsKQEAgLTQyMSwxMCArNDIwLDEwIEBAIFBhc3NPd25QdHI8
RE9NUGF0Y2hTdXBwb3J0OjpEaWdlc3Q+IERPTVBhdGNoU3VwcG9ydDo6Y3JlYXRlRGlnZXN0KE5v
ZGUqIG5vZGUsIFVuCiAgICAgaWYgKG5vZGUtPm5vZGVUeXBlKCkgPT0gTm9kZTo6RUxFTUVOVF9O
T0RFKSB7CiAgICAgICAgIE5vZGUqIGNoaWxkID0gbm9kZS0+Zmlyc3RDaGlsZCgpOwogICAgICAg
ICB3aGlsZSAoY2hpbGQpIHsKLSAgICAgICAgICAgIE93blB0cjxEaWdlc3Q+IGNoaWxkSW5mbyA9
IGNyZWF0ZURpZ2VzdChjaGlsZCwgdW51c2VkTm9kZXNNYXApOworICAgICAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPERpZ2VzdD4gY2hpbGRJbmZvID0gY3JlYXRlRGlnZXN0KGNoaWxkLCB1bnVzZWRO
b2Rlc01hcCk7CiAgICAgICAgICAgICBhZGRTdHJpbmdUb1NIQTEoc2hhMSwgY2hpbGRJbmZvLT5t
X3NoYTEpOwogICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKTsKLSAgICAg
ICAgICAgIGRpZ2VzdC0+bV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRJbmZvLnJlbGVhc2UoKSk7Cisg
ICAgICAgICAgICBkaWdlc3QtPm1fY2hpbGRyZW4uYXBwZW5kKHN0ZDo6bW92ZShjaGlsZEluZm8p
KTsKICAgICAgICAgfQogICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gdG9FbGVtZW50KG5vZGUp
OwogCkBAIC00NDUsOCArNDQ0LDkgQEAgUGFzc093blB0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2Vz
dD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwgVW4KICAgICBzaGEx
LmNvbXB1dGVIYXNoKGhhc2gpOwogICAgIGRpZ2VzdC0+bV9zaGExID0gYmFzZTY0RW5jb2RlKGhh
c2guZGF0YSgpLCAxMCk7CiAgICAgaWYgKHVudXNlZE5vZGVzTWFwKQotICAgICAgICB1bnVzZWRO
b2Rlc01hcC0+YWRkKGRpZ2VzdC0+bV9zaGExLCBkaWdlc3QpOwotICAgIHJldHVybiBhZG9wdFB0
cihkaWdlc3QpOworICAgICAgICB1bnVzZWROb2Rlc01hcC0+YWRkKGRpZ2VzdC0+bV9zaGExLCBk
aWdlc3QuZ2V0KCkpOworCisgICAgcmV0dXJuIGRpZ2VzdDsKIH0KIAogYm9vbCBET01QYXRjaFN1
cHBvcnQ6Omluc2VydEJlZm9yZUFuZE1hcmtBc1VzZWQoQ29udGFpbmVyTm9kZSogcGFyZW50Tm9k
ZSwgRGlnZXN0KiBkaWdlc3QsIE5vZGUqIGFuY2hvciwgRXhjZXB0aW9uQ29kZSYgZWMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmgKaW5kZXggYWQ1NDQ4NDg3NjRk
Yjc5YzViYjA5MmNlN2QxZmNiNDg3YTExZmI0YS4uNmE5NjBlODVkZWY1NzYyZjFlMjIyZWI2Njdj
NjE5MjE0MzA3MjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBv
cnQuaApAQCAtMzQsOCArMzQsNiBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKIAogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC02NSw5ICs2Myw5IEBAIHByaXZhdGU6CiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFN0cmluZywgRGlnZXN0Kj4gVW51c2VkTm9kZXNNYXA7CiAKICAgICBib29s
IGlubmVyUGF0Y2hOb2RlKERpZ2VzdCogb2xkTm9kZSwgRGlnZXN0KiBuZXdOb2RlLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgc3RkOjpwYWlyPFJlc3VsdE1hcCwgUmVzdWx0TWFwPiBkaWZmKGNvbnN0
IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8T3duUHRy
PERpZ2VzdD4+JiBuZXdDaGlsZHJlbik7Ci0gICAgYm9vbCBpbm5lclBhdGNoQ2hpbGRyZW4oQ29u
dGFpbmVyTm9kZSosIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG9sZENoaWxkcmVuLCBj
b25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBuZXdDaGlsZHJlbiwgRXhjZXB0aW9uQ29kZSYp
OwotICAgIFBhc3NPd25QdHI8RGlnZXN0PiBjcmVhdGVEaWdlc3QoTm9kZSosIFVudXNlZE5vZGVz
TWFwKik7CisgICAgc3RkOjpwYWlyPFJlc3VsdE1hcCwgUmVzdWx0TWFwPiBkaWZmKGNvbnN0IFZl
Y3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4mIG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8
c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+JiBuZXdDaGlsZHJlbik7CisgICAgYm9vbCBpbm5lclBh
dGNoQ2hpbGRyZW4oQ29udGFpbmVyTm9kZSosIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGlnZXN0Pj4mIG9sZENoaWxkcmVuLCBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2Vz
dD4+JiBuZXdDaGlsZHJlbiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
aWdlc3Q+IGNyZWF0ZURpZ2VzdChOb2RlKiwgVW51c2VkTm9kZXNNYXAqKTsKICAgICBib29sIGlu
c2VydEJlZm9yZUFuZE1hcmtBc1VzZWQoQ29udGFpbmVyTm9kZSosIERpZ2VzdCosIE5vZGUqIGFu
Y2hvciwgRXhjZXB0aW9uQ29kZSYpOwogICAgIGJvb2wgcmVtb3ZlQ2hpbGRBbmRNb3ZlVG9OZXco
RGlnZXN0KiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgbWFya05vZGVBc1VzZWQoRGlnZXN0
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50LmgKaW5kZXggNTJkOGUwZWRlNWQ1NWM1MjM4YmNkNjI3ZGUxOTVm
NjVhNjBlYWVkYS4uYTljNzY0Mjg4NzEyNWQ3Y2I3MGRhNTBhOTI0NTk3MTYxZjNmOGQxZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2Fj
aGVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNh
dGlvbkNhY2hlQWdlbnQuaApAQCAtMzIsNyArMzIsNiBAQAogI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlz
cGF0Y2hlcnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvckFw
cGxpY2F0aW9uQ2FjaGVGcm9udGVuZERpc3BhdGNoZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcAppbmRleCA5MzM5YmJhN2ZmZTBmMDcyYmI3YzBl
MzdjYmMxM2ZmZWY0ODVlODliLi5iZGMyYzljN2Y5OTIwN2UzMTRjMTE5OTRiM2I2M2NlNmYwZjdj
ZWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5j
cHAKQEAgLTE2NSw3ICsxNjUsNyBAQCB2b2lkIFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s6OnRpbWVy
RmlyZWQoVGltZXI8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4mKQogICAgIGlmICghbV9uYW1lZEZs
b3dzLmlzRW1wdHkoKSAmJiAhbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0
YXJ0T25lU2hvdCgwKTsKIH0KLSAgICAKKwogY2xhc3MgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2sg
ewogcHVibGljOgogICAgIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKEluc3BlY3RvckNTU0FnZW50
Kik7CkBAIC0xNzMsNyArMTczLDcgQEAgcHVibGljOgogICAgIHZvaWQgdW5zY2hlZHVsZShXZWJL
aXROYW1lZEZsb3cqKTsKICAgICB2b2lkIHJlc2V0KCk7CiAgICAgdm9pZCB0aW1lckZpcmVkKFRp
bWVyPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiYpOwotICAgIAorCiBwcml2YXRlOgogICAgIElu
c3BlY3RvckNTU0FnZW50KiBtX2Nzc0FnZW50OwogICAgIFRpbWVyPENoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrPiBtX3RpbWVyOwpAQCAtMTg5LDcgKzE4OSw3IEBAIENoYW5nZVJlZ2lvbk92ZXJzZXRU
YXNrOjpDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayhJbnNwZWN0b3JDU1NBZ2VudCogY3NzQWdlbnQp
CiB2b2lkIENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOjpzY2hlZHVsZUZvcihXZWJLaXROYW1lZEZs
b3cqIG5hbWVkRmxvdywgaW50IGRvY3VtZW50Tm9kZUlkKQogewogICAgIG1fbmFtZWRGbG93cy5h
ZGQobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7Ci0gICAgCisKICAgICBpZiAoIW1fdGltZXIu
aXNBY3RpdmUoKSkKICAgICAgICAgbV90aW1lci5zdGFydE9uZVNob3QoMCk7CiB9CkBAIC0yNjYs
NyArMjY2LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlNldFN0
eWxlU2hlZXRUZXh0ICVzIiwgbV9zdHlsZVNoZWV0LT5pZCgpLnV0ZjgoKS5kYXRhKCkpOwogICAg
IH0KIAotICAgIHZpcnR1YWwgdm9pZCBtZXJnZShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9uKSBv
dmVycmlkZQorICAgIHZpcnR1YWwgdm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBh
Y3Rpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoYWN0aW9uLT5tZXJnZUlkKCkg
PT0gbWVyZ2VJZCgpKTsKIApAQCAtMzEwLDcgKzMxMCw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0
dXJuIFN0cmluZzo6Zm9ybWF0KCJTZXRTdHlsZVRleHQgJXM6JXUiLCBtX3N0eWxlU2hlZXQtPmlk
KCkudXRmOCgpLmRhdGEoKSwgbV9jc3NJZC5vcmRpbmFsKCkpOwogICAgIH0KIAotICAgIHZpcnR1
YWwgdm9pZCBtZXJnZShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9uKSBvdmVycmlkZQorICAgIHZp
cnR1YWwgdm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRl
CiAgICAgewogICAgICAgICBBU1NFUlQoYWN0aW9uLT5tZXJnZUlkKCkgPT0gbWVyZ2VJZCgpKTsK
IApAQCAtMzY5LDcgKzM2OSw3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9y
bWF0KCJTZXRQcm9wZXJ0eVRleHQgJXM6JXU6JXMiLCBtX3N0eWxlU2hlZXQtPmlkKCkudXRmOCgp
LmRhdGEoKSwgbV9wcm9wZXJ0eUluZGV4LCBtX292ZXJ3cml0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIp
OwogICAgIH0KIAotICAgIHZpcnR1YWwgdm9pZCBtZXJnZShQYXNzT3duUHRyPEFjdGlvbj4gYWN0
aW9uKSBvdmVycmlkZQorICAgIHZpcnR1YWwgdm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0
aW9uPiBhY3Rpb24pIG92ZXJyaWRlCiAgICAgewogICAgICAgICBBU1NFUlQoYWN0aW9uLT5tZXJn
ZUlkKCkgPT0gbWVyZ2VJZCgpKTsKIApAQCAtNTgyLDcgKzU4Miw3IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OndpbGxSZW1vdmVOYW1lZEZsb3coRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXRO
YW1lZEZsb3cqCiAKICAgICBpZiAobV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQogICAgICAgICBt
X3VwZGF0ZVJlZ2lvbkxheW91dFRhc2stPnVuc2NoZWR1bGUobmFtZWRGbG93KTsKLSAgICAKKwog
ICAgIGlmIChtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKQogICAgICAgICBtX2NoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrLT51bnNjaGVkdWxlKG5hbWVkRmxvdyk7CiAKQEAgLTU5Niw3ICs1OTYsNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRVcGRhdGVSZWdpb25MYXlvdXQoRG9jdW1lbnQq
IGRvY3VtZW50LCBXZWJLaXROYW1lZEZsbwogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1f
dXBkYXRlUmVnaW9uTGF5b3V0VGFzaykKLSAgICAgICAgbV91cGRhdGVSZWdpb25MYXlvdXRUYXNr
ID0gYWRvcHRQdHIobmV3IFVwZGF0ZVJlZ2lvbkxheW91dFRhc2sodGhpcykpOworICAgICAgICBt
X3VwZGF0ZVJlZ2lvbkxheW91dFRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPFVwZGF0ZVJlZ2lvbkxh
eW91dFRhc2s+KHRoaXMpOwogICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzay0+c2NoZWR1bGVG
b3IobmFtZWRGbG93LCBkb2N1bWVudE5vZGVJZCk7CiB9CiAKQEAgLTYxNiw5ICs2MTYsOSBAQCB2
b2lkIEluc3BlY3RvckNTU0FnZW50OjpkaWRDaGFuZ2VSZWdpb25PdmVyc2V0KERvY3VtZW50KiBk
b2N1bWVudCwgV2ViS2l0TmFtZWRGbAogICAgIGludCBkb2N1bWVudE5vZGVJZCA9IGRvY3VtZW50
Tm9kZVdpdGhSZXF1ZXN0ZWRGbG93c0lkKGRvY3VtZW50KTsKICAgICBpZiAoIWRvY3VtZW50Tm9k
ZUlkKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICBpZiAoIW1fY2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2spCi0gICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2sgPSBhZG9wdFB0cihu
ZXcgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2sodGhpcykpOworICAgICAgICBtX2NoYW5nZVJlZ2lv
bk92ZXJzZXRUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxDaGFuZ2VSZWdpb25PdmVyc2V0VGFzaz4o
dGhpcyk7CiAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzay0+c2NoZWR1bGVGb3IobmFtZWRG
bG93LCBkb2N1bWVudE5vZGVJZCk7CiB9CiAKQEAgLTYyNiwxMCArNjI2LDEwIEBAIHZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OnJlZ2lvbk92ZXJzZXRDaGFuZ2VkKFdlYktpdE5hbWVkRmxvdyogbmFt
ZWRGbG93LCBpbnQgZG9jCiB7CiAgICAgaWYgKG5hbWVkRmxvdy0+Zmxvd1N0YXRlKCkgPT0gV2Vi
S2l0TmFtZWRGbG93OjpGbG93U3RhdGVOdWxsKQogICAgICAgICByZXR1cm47Ci0gICAgCisKICAg
ICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKICAgICBSZWY8V2ViS2l0TmFtZWRGbG93PiBwcm90
ZWN0KCpuYW1lZEZsb3cpOwotICAgIAorCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlZ2lv
bk92ZXJzZXRDaGFuZ2VkKGJ1aWxkT2JqZWN0Rm9yTmFtZWRGbG93KCZlcnJvclN0cmluZywgbmFt
ZWRGbG93LCBkb2N1bWVudE5vZGVJZCkpOwogfQogCkBAIC04MDMsNyArODAzLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBT
ZXRTdHlsZVNoZWV0VGV4dEFjdGlvbihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSksIGVjKTsK
KyAgICBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRT
dHlsZVNoZWV0VGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgdGV4dCksIGVjKTsKICAg
ICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9
CiAKQEAgLTgxNyw3ICs4MTcsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVRl
eHQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcAogICAgICAgICBy
ZXR1cm47CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29sIHN1Y2Nlc3MgPSBt
X2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldFN0eWxlVGV4dEFj
dGlvbihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCB0ZXh0KSksIGVjKTsKKyAgICBi
b29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxTZXRTdHlsZVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQs
IHRleHQpLCBlYyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJlc3VsdCA9IGluc3BlY3Rv
clN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5zcGVjdG9yU3R5bGVTaGVldC0+c3R5
bGVGb3JJZChjb21wb3VuZElkKSk7CiAgICAgKmVycm9yU3RyaW5nID0gSW5zcGVjdG9yRE9NQWdl
bnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwpAQCAtODMzLDcgKzgzMyw3IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OnNldFByb3BlcnR5VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwot
ICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShhZG9wdFB0
cihuZXcgU2V0UHJvcGVydHlUZXh0QWN0aW9uKGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5k
SWQsIHByb3BlcnR5SW5kZXgsIHRleHQsIG92ZXJ3cml0ZSkpLCBlYyk7CisgICAgYm9vbCBzdWNj
ZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0
UHJvcGVydHlUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBwcm9w
ZXJ0eUluZGV4LCB0ZXh0LCBvdmVyd3JpdGUpLCBlYyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAg
ICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUoaW5z
cGVjdG9yU3R5bGVTaGVldC0+c3R5bGVGb3JJZChjb21wb3VuZElkKSk7CiAgICAgKmVycm9yU3Ry
aW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwpAQCAtODQ5LDcgKzg0
OSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnRvZ2dsZVByb3BlcnR5KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcgVG9nZ2xlUHJvcGVydHlBY3Rpb24oaW5zcGVjdG9y
U3R5bGVTaGVldCwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgZGlzYWJsZSkpLCBlYyk7Cisg
ICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKHN0ZDo6bWFr
ZV91bmlxdWU8VG9nZ2xlUHJvcGVydHlBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBv
dW5kSWQsIHByb3BlcnR5SW5kZXgsIGRpc2FibGUpLCBlYyk7CiAgICAgaWYgKHN1Y2Nlc3MpCiAg
ICAgICAgIHJlc3VsdCA9IGluc3BlY3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yU3R5bGUo
aW5zcGVjdG9yU3R5bGVTaGVldC0+c3R5bGVGb3JJZChjb21wb3VuZElkKSk7CiAgICAgKmVycm9y
U3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwpAQCAtODY1LDcg
Kzg2NSw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0
cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJCiAgICAgICAgIHJldHVybjsKIAogICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhp
c3RvcnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0UnVsZVNlbGVjdG9yQWN0aW9uKGluc3Bl
Y3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNlbGVjdG9yKSksIGVjKTsKKyAgICBib29sIHN1
Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxT
ZXRSdWxlU2VsZWN0b3JBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHNl
bGVjdG9yKSwgZWMpOwogCiAgICAgaWYgKHN1Y2Nlc3MpCiAgICAgICAgIHJlc3VsdCA9IGluc3Bl
Y3RvclN0eWxlU2hlZXQtPmJ1aWxkT2JqZWN0Rm9yUnVsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5y
dWxlRm9ySWQoY29tcG91bmRJZCkpOwpAQCAtODg1LDkgKzg4NSw5IEBAIHZvaWQgSW5zcGVjdG9y
Q1NTQWdlbnQ6OmFkZFJ1bGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBpbnQgY29u
dGV4dE5vZGVJCiAgICAgfQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgT3duUHRy
PEFkZFJ1bGVBY3Rpb24+IGFjdGlvbiA9IGFkb3B0UHRyKG5ldyBBZGRSdWxlQWN0aW9uKGluc3Bl
Y3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKSk7CisgICAgYXV0byBhY3Rpb24gPSBzdGQ6Om1ha2Vf
dW5pcXVlPEFkZFJ1bGVBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIHNlbGVjdG9yKTsKICAg
ICBBZGRSdWxlQWN0aW9uKiByYXdBY3Rpb24gPSBhY3Rpb24uZ2V0KCk7Ci0gICAgYm9vbCBzdWNj
ZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFjdGlvbi5yZWxlYXNlKCksIGVj
KTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3Rk
Ojptb3ZlKGFjdGlvbiksIGVjKTsKICAgICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgKmVycm9y
U3RyaW5nID0gSW5zcGVjdG9yRE9NQWdlbnQ6OnRvRXJyb3JTdHJpbmcoZWMpOwogICAgICAgICBy
ZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NT
QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCmlu
ZGV4IDEwYjRmZTkxZjgyOTBhNDczZWU4NDZhNDM5Y2JiNjc4N2RiMTE1YjkuLjIwYjNjMTUwNzU5
ODk5Nzg4MzM5YzkzNjI0OTBmYjUwMjFmOWZkMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xODEsOCArMTgxLDggQEAgcHJpdmF0ZToKICAg
ICBEb2N1bWVudFRvVmlhSW5zcGVjdG9yU3R5bGVTaGVldCBtX2RvY3VtZW50VG9JbnNwZWN0b3JT
dHlsZVNoZWV0OwogICAgIE5vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGUgbV9ub2RlSWRUb0ZvcmNl
ZFBzZXVkb1N0YXRlOwogICAgIEhhc2hTZXQ8aW50PiBtX25hbWVkRmxvd0NvbGxlY3Rpb25zUmVx
dWVzdGVkOwotICAgIE93blB0cjxVcGRhdGVSZWdpb25MYXlvdXRUYXNrPiBtX3VwZGF0ZVJlZ2lv
bkxheW91dFRhc2s7Ci0gICAgT3duUHRyPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5n
ZVJlZ2lvbk92ZXJzZXRUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxVcGRhdGVSZWdpb25MYXlv
dXRUYXNrPiBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPENo
YW5nZVJlZ2lvbk92ZXJzZXRUYXNrPiBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrOwogCiAgICAg
aW50IG1fbGFzdFN0eWxlU2hlZXRJZDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IGE5YTM4ZTIzN2JmNWIwOGE4YjllOTAwMmI0
YzE5YmU2ZjE5MDgyMDQuLmZiZTMyYzIzZmQ3YzUxYWNkMTUzYTNhNjgzMTg4ZjljZmRjNjgzODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
CkBAIC0zOSw3ICszOSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgi
CiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggOTAzZDdkNWYxMDMyZDM0MDZmNGMyY2Zk
Zjk2NDdlMWQzNDQ5Yjc3Yi4uMTFkYzIzOTQyZWM4NzkwYjA0NjY1YzIzNGY3NWU3M2E0ZTExYWMy
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC05Niw3ICs5Niw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFu
YWdlci5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CkBAIC0yMzYsOCArMjM1LDggQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6ZGlk
Q3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJvbnRlbmQKICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlciA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRE9NRnJv
bnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwogICAgIG1fYmFja2VuZERpc3BhdGNo
ZXIgPSBJbnNwZWN0b3JET01CYWNrZW5kRGlzcGF0Y2hlcjo6Y3JlYXRlKGJhY2tlbmREaXNwYXRj
aGVyLCB0aGlzKTsKIAotICAgIG1faGlzdG9yeSA9IGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JIaXN0
b3J5KCkpOwotICAgIG1fZG9tRWRpdG9yID0gYWRvcHRQdHIobmV3IERPTUVkaXRvcihtX2hpc3Rv
cnkuZ2V0KCkpKTsKKyAgICBtX2hpc3RvcnkgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3Rvckhp
c3Rvcnk+KCk7CisgICAgbV9kb21FZGl0b3IgPSBzdGQ6Om1ha2VfdW5pcXVlPERPTUVkaXRvcj4o
bV9oaXN0b3J5LmdldCgpKTsKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVj
dG9yRE9NQWdlbnQodGhpcyk7CiAgICAgbV9kb2N1bWVudCA9IG1fcGFnZUFnZW50LT5tYWluRnJh
bWUoKS0+ZG9jdW1lbnQoKTsKQEAgLTI1MSw4ICsyNTAsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50Ojp3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3JEaXNjb25uZWN0UmVh
c29uKQogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKICAgICBtX2JhY2tlbmRE
aXNwYXRjaGVyLmNsZWFyKCk7CiAKLSAgICBtX2hpc3RvcnkuY2xlYXIoKTsKLSAgICBtX2RvbUVk
aXRvci5jbGVhcigpOworICAgIG1faGlzdG9yeS5yZXNldCgpOworICAgIG1fZG9tRWRpdG9yLnJl
c2V0KCk7CiAKICAgICBFcnJvclN0cmluZyBlcnJvcjsKICAgICBzZXRTZWFyY2hpbmdGb3JOb2Rl
KCZlcnJvciwgZmFsc2UsIDApOwpAQCAtNTg0LDcgKzU4Myw3IEBAIGludCBJbnNwZWN0b3JET01B
Z2VudDo6cHVzaE5vZGVQYXRoVG9Gcm9udGVuZChOb2RlKiBub2RlVG9QdXNoKQogICAgICAgICBO
b2RlKiBwYXJlbnQgPSBpbm5lclBhcmVudE5vZGUobm9kZSk7CiAgICAgICAgIGlmICghcGFyZW50
KSB7CiAgICAgICAgICAgICAvLyBOb2RlIGJlaW5nIHB1c2hlZCBpcyBkZXRhY2hlZCAtPiBwdXNo
IHN1YnRyZWUgcm9vdC4KLSAgICAgICAgICAgIE93blB0cjxOb2RlVG9JZE1hcD4gbmV3TWFwID0g
YWRvcHRQdHIobmV3IE5vZGVUb0lkTWFwKTsKKyAgICAgICAgICAgIGF1dG8gbmV3TWFwID0gc3Rk
OjptYWtlX3VuaXF1ZTxOb2RlVG9JZE1hcD4oKTsKICAgICAgICAgICAgIGRhbmdsaW5nTWFwID0g
bmV3TWFwLmdldCgpOwogICAgICAgICAgICAgbV9kYW5nbGluZ05vZGVUb0lkTWFwcy5hcHBlbmQo
bmV3TWFwLnJlbGVhc2UoKSk7CiAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RE9NOjpOb2RlPj4gY2hpbGRyZW4g
PSBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpE
T006Ok5vZGU+OjpjcmVhdGUoKTsKQEAgLTEwMzIsMTQgKzEwMzEsMTQgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IGJvb2wgZW5hYmwKICAgICBtX292ZXJsYXktPmRpZFNldFNlYXJjaGluZ0Zvck5vZGUobV9zZWFy
Y2hpbmdGb3JOb2RlKTsKIH0KIAotUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5n
KiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3Qp
CitzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcs
IEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQogewogICAgIGlmICgh
aGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJbnRl
cm5hbCBlcnJvcjogaGlnaGxpZ2h0IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlzIG1pc3Npbmci
OwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKLSAgICBPd25QdHI8SGlnaGxpZ2h0
Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkp
OworICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRD
b25maWc+KCk7CiAgICAgYm9vbCBzaG93SW5mbyA9IGZhbHNlOyAvLyBEZWZhdWx0OiBmYWxzZSAo
ZG8gbm90IHNob3cgYSB0b29sdGlwKS4KICAgICBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QtPmdl
dEJvb2xlYW4oInNob3dJbmZvIiwgJnNob3dJbmZvKTsKICAgICBoaWdobGlnaHRDb25maWctPnNo
b3dJbmZvID0gc2hvd0luZm87CkBAIC0xMDUxLDcgKzEwNTAsNyBAQCBQYXNzT3duUHRyPEhpZ2hs
aWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0
b3JPYmplYwogICAgIGhpZ2hsaWdodENvbmZpZy0+cGFkZGluZyA9IHBhcnNlQ29uZmlnQ29sb3Io
InBhZGRpbmdDb2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5ib3JkZXIgPSBwYXJzZUNvbmZpZ0NvbG9yKCJib3JkZXJDb2xvciIsIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCk7CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5tYXJnaW4gPSBwYXJzZUNv
bmZpZ0NvbG9yKCJtYXJnaW5Db2xvciIsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7Ci0gICAg
cmV0dXJuIGhpZ2hsaWdodENvbmZpZy5yZWxlYXNlKCk7CisgICAgcmV0dXJuIGhpZ2hsaWdodENv
bmZpZzsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVk
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiogaGlnaGxpZ2h0Q29uZmlnKQpAQCAtMTA2MSwyNyArMTA2MCwyNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBib29sIGVuYQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGln
aHRSZWN0KEVycm9yU3RyaW5nKiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVz
KQogewotICAgIE93blB0cjxGbG9hdFF1YWQ+IHF1YWQgPSBhZG9wdFB0cihuZXcgRmxvYXRRdWFk
KEZsb2F0UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KSkpOwotICAgIGlubmVySGlnaGxpZ2h0UXVh
ZChxdWFkLnJlbGVhc2UoKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVz
KTsKKyAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0
KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKKyAgICBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjptb3Zl
KHF1YWQpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCiB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5PiYgcXVhZEFycmF5LCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBP
d25QdHI8RmxvYXRRdWFkPiBxdWFkID0gYWRvcHRQdHIobmV3IEZsb2F0UXVhZCgpKTsKKyAgICBh
dXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNl
UXVhZChxdWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJJ
bnZhbGlkIFF1YWQgZm9ybWF0IjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBpbm5lckhp
Z2hsaWdodFF1YWQocXVhZC5yZWxlYXNlKCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VD
b29yZGluYXRlcyk7CisgICAgaW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6bW92ZShxdWFkKSwgY29s
b3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiBxdWFk
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRl
cykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1
ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogY29s
b3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJv
b2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKLSAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBo
aWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOworICAgIGF1
dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7
CiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAg
aGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9y
KTsKICAgICBoaWdobGlnaHRDb25maWctPnVzZVBhZ2VDb29yZGluYXRlcyA9IHVzZVBhZ2VDb29y
ZGluYXRlcyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMgOiBmYWxzZTsKLSAgICBtX292ZXJsYXktPmhp
Z2hsaWdodFF1YWQocXVhZCwgKmhpZ2hsaWdodENvbmZpZyk7CisgICAgbV9vdmVybGF5LT5oaWdo
bGlnaHRRdWFkKHN0ZDo6bW92ZShxdWFkKSwgKmhpZ2hsaWdodENvbmZpZyk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0
LCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCkKQEAgLTEwOTksNyAr
MTA5OCw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zCiAgICAgaWYgKCFub2RlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcg
PSBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KGVycm9yU3RyaW5nLCBoaWdobGln
aHRJbnNwZWN0b3JPYmplY3QuZ2V0KCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRD
b25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmpl
Y3QoZXJyb3JTdHJpbmcsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC5nZXQoKSk7CiAgICAgaWYg
KCFoaWdobGlnaHRDb25maWcpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTExNCw3ICsxMTEzLDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUoCiB7CiAgICAgRnJhbWUq
IGZyYW1lID0gbV9wYWdlQWdlbnQtPmZyYW1lRm9ySWQoZnJhbWVJZCk7CiAgICAgaWYgKGZyYW1l
ICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewotICAgICAgICBPd25QdHI8SGlnaGxpZ2h0Q29u
ZmlnPiBoaWdobGlnaHRDb25maWcgPSBhZG9wdFB0cihuZXcgSGlnaGxpZ2h0Q29uZmlnKCkpOwor
ICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0
Q29uZmlnPigpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsgLy8g
QWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KICAgICAgICAgaGlnaGxpZ2h0Q29uZmln
LT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+
Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xvcik7CkBAIC0xNjQyLDcgKzE2
NDEsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRJbnZhbGlkYXRlU3R5bGVBdHRyKE5v
ZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9yZXZhbGlkYXRlU3R5bGVB
dHRyVGFzaykKLSAgICAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzayA9IGFkb3B0UHRyKG5l
dyBSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrKHRoaXMpKTsKKyAgICAgICAgbV9yZXZhbGlk
YXRlU3R5bGVBdHRyVGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8UmV2YWxpZGF0ZVN0eWxlQXR0cmli
dXRlVGFzaz4odGhpcyk7CiAgICAgbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzay0+c2NoZWR1bGVG
b3IodG9FbGVtZW50KG5vZGUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaAppbmRleCBmYTQxYzdmYTU1MjI2OTk4MjAwZTVhMTkxZmRmNTg2YTYy
NjBkNGE1Li43ZDMzYmJlOGFmMzc3ODIyMWYwMzJkNGYwZTRlNTFlNjRmYzE2ZWY5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtNDEsOCArNDEs
NiBAQAogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oPgpAQCAtMjEz
LDcgKzIxMSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2b2lkIHNldFNlYXJjaGluZ0Zv
ck5vZGUoRXJyb3JTdHJpbmcqLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KiBoaWdobGlnaHRDb25maWcpOwotICAgIFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBo
aWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgc3RkOjp1
bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9i
amVjdChFcnJvclN0cmluZyosIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJ
bnNwZWN0b3JPYmplY3QpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAgICAgdHlw
ZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKQEAgLTI0MSw3ICsy
MzksNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaXNjYXJkQmluZGluZ3MoKTsKIAotICAgIHZv
aWQgaW5uZXJIaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKTsKKyAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8
RmxvYXRRdWFkPiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiogY29s
b3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xv
ciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKIAogICAgIEluc3BlY3RvclBhZ2VB
Z2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpAQCAtMjUzLDcgKzI1MSw3IEBAIHByaXZhdGU6CiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgQmFja2VuZE5vZGVJZD4gTm9kZVRvQmFj
a2VuZElkTWFwOwogICAgIEhhc2hNYXA8U3RyaW5nLCBOb2RlVG9CYWNrZW5kSWRNYXA+IG1fbm9k
ZUdyb3VwVG9CYWNrZW5kSWRNYXA7CiAgICAgLy8gT3ducyBub2RlIG1hcHBpbmdzIGZvciBkYW5n
bGluZyBub2Rlcy4KLSAgICBWZWN0b3I8T3duUHRyPE5vZGVUb0lkTWFwPj4gbV9kYW5nbGluZ05v
ZGVUb0lkTWFwczsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPE5vZGVUb0lkTWFwPj4gbV9k
YW5nbGluZ05vZGVUb0lkTWFwczsKICAgICBIYXNoTWFwPGludCwgTm9kZSo+IG1faWRUb05vZGU7
CiAgICAgSGFzaE1hcDxpbnQsIE5vZGVUb0lkTWFwKj4gbV9pZFRvTm9kZXNNYXA7CiAgICAgSGFz
aFNldDxpbnQ+IG1fY2hpbGRyZW5SZXF1ZXN0ZWQ7CkBAIC0yNjMsMTIgKzI2MSwxMiBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICB0eXBlZGVmIEhhc2hN
YXA8U3RyaW5nLCBWZWN0b3I8UmVmUHRyPE5vZGU+Pj4gU2VhcmNoUmVzdWx0czsKICAgICBTZWFy
Y2hSZXN1bHRzIG1fc2VhcmNoUmVzdWx0czsKLSAgICBPd25QdHI8UmV2YWxpZGF0ZVN0eWxlQXR0
cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFzaz4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFz
azsKICAgICBSZWZQdHI8Tm9kZT4gbV9ub2RlVG9Gb2N1czsKICAgICBib29sIG1fc2VhcmNoaW5n
Rm9yTm9kZTsKLSAgICBPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBtX2luc3BlY3RNb2RlSGlnaGxp
Z2h0Q29uZmlnOwotICAgIE93blB0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7Ci0gICAg
T3duUHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hs
aWdodENvbmZpZz4gbV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZzsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxE
T01FZGl0b3I+IG1fZG9tRWRpdG9yOwogICAgIGJvb2wgbV9zdXBwcmVzc0F0dHJpYnV0ZU1vZGlm
aWVkRXZlbnQ7CiAgICAgYm9vbCBtX2RvY3VtZW50UmVxdWVzdGVkOwogfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4
IGViZTI2NjUwYWRiNmZhY2I4ZGVmMDczNzU5MzRhMmJlOTNlZWQ4MDIuLmZiOGY3OTg2MmRmMDg4
NWY0OTM4NzkzNzU3NTU3NjAwNDRiM2NjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtMzcsNyArMzcsNiBAQAog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgPGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgogI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKaW5kZXgg
NWFkMmI3ZTExZjRkMDk5ZmQyMmVlZjMzZjBmZWM2YjI4M2MwYmU4Ni4uZjdkYWQzMjg0YmI4NGQy
NWNhMzRhOTFkY2JlODZmNGM5NTAyZjBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtMzMsNyArMzMsNiBAQAogI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIlN0b3Jh
Z2VBcmVhLmgiCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5z
cGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
YXRhYmFzZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VBZ2VudC5oCmluZGV4IDMyMjk2MDc1N2MzYjQ5Y2E2NDQ0OTNkYzRjOWNhYWIxMzZhN2M3ZWIu
LjQ1ZGRkYzRlODViMDVkZGIxZjhkNWU5NjY2MWI2OTdmZjhkMzk4ZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaApAQCAtMzUsNyAr
MzUsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CmluZGV4IDRlODViYzUzMjk5NWVkNWRkYTk0OTY4NmM0ZGI2YWQwZGVhOWY4ZDAuLmJmMTc5MTg0
OGJiMWJjNDg4YTYxNzMzNTUzY2RjYjk1NmEyZDEzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAg
LTExNiwxNSArMTE2LDE1IEBAIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M6OnNldFByb3BlcnR5KGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0CiB7CiB9CiAKLUluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoSW5z
cGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdl
LCBQYXNzT3duUHRyPFNldHRpbmdzPiBzZXR0aW5ncykKK0luc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8
U2V0dGluZ3M+IHNldHRpbmdzKQogICAgIDogbV9pbnNwZWN0b3JDb250cm9sbGVyKGluc3BlY3Rv
ckNvbnRyb2xsZXIpCiAgICAgLCBtX2Zyb250ZW5kUGFnZShmcm9udGVuZFBhZ2UpCi0gICAgLCBt
X3NldHRpbmdzKHNldHRpbmdzKQorICAgICwgbV9zZXR0aW5ncyhzdGQ6Om1vdmUoc2V0dGluZ3Mp
KQogICAgICwgbV9mcm9udGVuZExvYWRlZChmYWxzZSkKICAgICAsIG1fZG9ja1NpZGUoVU5ET0NL
RUQpCiB7CiAgICAgbV9mcm9udGVuZFBhZ2UtPnNldHRpbmdzKCkuc2V0QWxsb3dGaWxlQWNjZXNz
RnJvbUZpbGVVUkxzKHRydWUpOwotICAgIG1fZGlzcGF0Y2hUYXNrID0gYWRvcHRQdHIobmV3IElu
c3BlY3RvckJhY2tlbmREaXNwYXRjaFRhc2soaW5zcGVjdG9yQ29udHJvbGxlcikpOworICAgIG1f
ZGlzcGF0Y2hUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hU
YXNrPihpbnNwZWN0b3JDb250cm9sbGVyKTsKIH0KIAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbDo6fkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKaW5kZXgg
ZWQyY2ZiMTBkMGMwOWEzZjAyNjhjZTE2YzNmYTJmOGZlNzc3OTNhOS4uMmY2MzdiMGYyNjBlNWI4
ZDFjZjVlOTc1YWYwZGY0ZTE3ZTY2YTE2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCkBAIC01NSw5ICs1NSw5
IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFByb3BlcnR5KGNvbnN0IFN0cmlu
ZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSk7CiAgICAgfTsKIAotICAgIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwoSW5zcGVjdG9yQ29udHJvbGxlciosIFBhZ2UqLCBQYXNzT3duUHRy
PFNldHRpbmdzPik7CisgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JD
b250cm9sbGVyKiwgUGFnZSosIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4pOwogICAgIHZpcnR1
YWwgfkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoKTsKLSAgICAKKwogICAgIHZpcnR1YWwg
dm9pZCB3aW5kb3dPYmplY3RDbGVhcmVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZy
b250ZW5kTG9hZGVkKCkgb3ZlcnJpZGU7CiAKQEAgLTk4LDcgKzk4LDcgQEAgcHVibGljOgogICAg
IHZvaWQgc2hvd0NvbnNvbGUoKTsKIAogICAgIHZvaWQgc2hvd01haW5SZXNvdXJjZUZvckZyYW1l
KEZyYW1lKik7Ci0gICAgCisKICAgICB2b2lkIHNob3dSZXNvdXJjZXMoKTsKIAogICAgIHZvaWQg
c2V0QXR0YWNoZWRXaW5kb3coRG9ja1NpZGUpOwpAQCAtMTE3LDExICsxMTcsMTEgQEAgcHJpdmF0
ZToKICAgICBQYWdlKiBtX2Zyb250ZW5kUGFnZTsKICAgICAvLyBUT0RPKHl1cnlzKTogdGhpcyBy
ZWYgc2hvdWxkbid0IGJlIG5lZWRlZC4KICAgICBSZWZQdHI8SW5zcGVjdG9yRnJvbnRlbmRIb3N0
PiBtX2Zyb250ZW5kSG9zdDsKLSAgICBPd25QdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6U2V0dGluZ3M+IG1fc2V0dGluZ3M7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBtX3NldHRpbmdzOwogICAgIGJvb2wgbV9mcm9u
dGVuZExvYWRlZDsKICAgICBEb2NrU2lkZSBtX2RvY2tTaWRlOwogICAgIFZlY3RvcjxTdHJpbmc+
IG1fZXZhbHVhdGVPbkxvYWQ7Ci0gICAgT3duUHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaFRh
c2s+IG1fZGlzcGF0Y2hUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JCYWNrZW5k
RGlzcGF0Y2hUYXNrPiBtX2Rpc3BhdGNoVGFzazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJv
ZmlsZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9m
aWxlckFnZW50LmgKaW5kZXggZjYwY2ViYTZhN2I3ZTk3YTQ4Y2JjNTA4ZDBjYzg1YjQ3YzNkNThj
Yy4uMWJjYTc5MDJjZjc2Y2E4ZjdlMWZhZjYwNTJlNmUzNTVjMDYyODI2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmgK
QEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3Rv
cnkuY3BwCmluZGV4IGJjZmVmNGE0YjVjNzdjMmQyYTUyZDA2NjIxYzZhZDRlZjA5ZDQ1ZDAuLjg3
M2E4Zjk1YjRmZjYyODMwODY0Y2JlMmViZTA1Njc2ZTBkOTNjYjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgU3Ry
aW5nIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6bWVyZ2VJZCgpCiAgICAgcmV0dXJuICIiOwog
fQogCi12b2lkIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6bWVyZ2UoUGFzc093blB0cjxBY3Rp
b24+KQordm9pZCBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb246Om1lcmdlKHN0ZDo6dW5pcXVlX3B0
cjxBY3Rpb24+KQogewogfQogCkBAIC04NywxNiArODcsMTYgQEAgSW5zcGVjdG9ySGlzdG9yeTo6
SW5zcGVjdG9ySGlzdG9yeSgpIDogbV9hZnRlckxhc3RBY3Rpb25JbmRleCgwKSB7IH0KIAogSW5z
cGVjdG9ySGlzdG9yeTo6fkluc3BlY3Rvckhpc3RvcnkoKSB7IH0KIAotYm9vbCBJbnNwZWN0b3JI
aXN0b3J5OjpwZXJmb3JtKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rpb24sIEV4Y2VwdGlvbkNvZGUm
IGVjKQorYm9vbCBJbnNwZWN0b3JIaXN0b3J5OjpwZXJmb3JtKHN0ZDo6dW5pcXVlX3B0cjxBY3Rp
b24+IGFjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7CiAgICAgaWYgKCFhY3Rpb24tPnBlcmZv
cm0oZWMpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoIWFjdGlvbi0+bWVyZ2VJ
ZCgpLmlzRW1wdHkoKSAmJiBtX2FmdGVyTGFzdEFjdGlvbkluZGV4ID4gMCAmJiBhY3Rpb24tPm1l
cmdlSWQoKSA9PSBtX2hpc3RvcnlbbV9hZnRlckxhc3RBY3Rpb25JbmRleCAtIDFdLT5tZXJnZUlk
KCkpCi0gICAgICAgIG1faGlzdG9yeVttX2FmdGVyTGFzdEFjdGlvbkluZGV4IC0gMV0tPm1lcmdl
KGFjdGlvbik7CisgICAgICAgIG1faGlzdG9yeVttX2FmdGVyTGFzdEFjdGlvbkluZGV4IC0gMV0t
Pm1lcmdlKHN0ZDo6bW92ZShhY3Rpb24pKTsKICAgICBlbHNlIHsKICAgICAgICAgbV9oaXN0b3J5
LnJlc2l6ZShtX2FmdGVyTGFzdEFjdGlvbkluZGV4KTsKLSAgICAgICAgbV9oaXN0b3J5LmFwcGVu
ZChhY3Rpb24pOworICAgICAgICBtX2hpc3RvcnkuYXBwZW5kKHN0ZDo6bW92ZShhY3Rpb24pKTsK
ICAgICAgICAgKyttX2FmdGVyTGFzdEFjdGlvbkluZGV4OwogICAgIH0KICAgICByZXR1cm4gdHJ1
ZTsKQEAgLTEwNCw3ICsxMDQsNyBAQCBib29sIEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oUGFz
c093blB0cjxBY3Rpb24+IGFjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgSW5zcGVj
dG9ySGlzdG9yeTo6bWFya1VuZG9hYmxlU3RhdGUoKQogewotICAgIHBlcmZvcm0oYWRvcHRQdHIo
bmV3IFVuZG9hYmxlU3RhdGVNYXJrKCkpLCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICBwZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8VW5kb2FibGVTdGF0ZU1hcms+KCksIElHTk9SRV9FWENFUFRJT04p
OwogfQogCiBib29sIEluc3BlY3Rvckhpc3Rvcnk6OnVuZG8oRXhjZXB0aW9uQ29kZSYgZWMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaAppbmRleCA3MjI0YTM5
M2VmYmI1YTlmYWMxZWJhZTk2ZDMxMzE1MjU3YzRkNmQ1Li5hMjJhYmI1MzBjYjRhZjQ0ZDc4Mjk1
MDM0NzdjYmQyYzJlYzU3YWYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIaXN0b3J5LmgKQEAgLTMzLDcgKzMzLDYgQEAKIAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUu
aCIKIAotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTU2LDcgKzU1LDcgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIFN0cmluZyB0b1N0cmluZygpOwogCiAgICAgICAgIHZpcnR1YWwg
U3RyaW5nIG1lcmdlSWQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NPd25QdHI8
QWN0aW9uPik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBtZXJnZShzdGQ6OnVuaXF1ZV9wdHI8QWN0
aW9uPik7CiAKICAgICAgICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYpID0g
MDsKIApAQCAtNzEsNyArNzAsNyBAQCBwdWJsaWM6CiAgICAgSW5zcGVjdG9ySGlzdG9yeSgpOwog
ICAgIHZpcnR1YWwgfkluc3BlY3Rvckhpc3RvcnkoKTsKIAotICAgIGJvb2wgcGVyZm9ybShQYXNz
T3duUHRyPEFjdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBib29sIHBlcmZvcm0oc3RkOjp1
bmlxdWVfcHRyPEFjdGlvbj4sIEV4Y2VwdGlvbkNvZGUmKTsKICAgICB2b2lkIG1hcmtVbmRvYWJs
ZVN0YXRlKCk7CiAKICAgICBib29sIHVuZG8oRXhjZXB0aW9uQ29kZSYpOwpAQCAtNzksNyArNzgs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldCgpOwogCiBwcml2YXRlOgotICAgIFZlY3RvcjxP
d25QdHI8QWN0aW9uPj4gbV9oaXN0b3J5OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8QWN0
aW9uPj4gbV9oaXN0b3J5OwogICAgIHNpemVfdCBtX2FmdGVyTGFzdEFjdGlvbkluZGV4OwogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWRE
QkFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdl
bnQuaAppbmRleCBkMDcxYTAwNGY5NDk2ZGYyOTY1MjAyODkyYTU5Y2QyZjBhZDliMTZkLi5hYWYx
ZmQ5M2JjNDUyNzFmZDg1OWNiN2E0MTJjZjIxMTQ5Yzc1NzI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtMzUsNyArMzUs
NiBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRB
Z2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaApp
bmRleCBmMTUyYWY2NDVmZDU4ODk5ZDA2YmRkZDI1YzJhMWE3NTQ0ZjA0Nzc4Li45MDkxZGE3M2E1
M2FjYmFlZjk2YjFhN2I4ZGUyZjNlNGVkZGU4YzBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5k
RGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yTGF5ZXJUcmVlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JMYXllclRyZWVBZ2VudC5oCmluZGV4IDc1NjFhYzc1NGRkNGEzYzhhOWNjNjg5MDg3N2U3OWUz
NDM2NWY4MGYuLjBhNWI4OGZjZTA3YTVkMjZkYWNhNGMwMjUyYzVmMjAyZjM0YzkwMjkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
CkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRj
aGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYlR5cGVCdWlsZGVycy5oIgogI2luY2x1ZGUg
IlJlbmRlckxheWVyLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yTWVtb3J5QWdlbnQuY3BwCmluZGV4IDE2NGQ5MTRkNmYzMzVkZmIwMWEyNzU5MWUwNWExZGJh
MDFlMmE2MzQuLjM1ZWUwMWUxMmFhMzNhMjJlYzJmNWEwY2ZlMTY4Y2M4NGNiNjRkNDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcApA
QCAtNDksOCArNDksNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4K
ICNpbmNsdWRlIDxydW50aW1lL0FycmF5QnVmZmVyVmlldy5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1
aWxkZXIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdJbXBsLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oCmluZGV4IDEyZjNhOWM1ZTU1
ZjI3MmViYzRkZmI4NTRiOGI4NjJlYjI2YjAxNDMuLmIzY2QyZmZlN2E2YzFjNWRiMmE3NmU3MjRm
ZThhOTY2MGFmMWRmY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JNZW1vcnlBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JNZW1vcnlBZ2VudC5oCkBAIC0zNSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JX
ZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMu
aCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck92ZXJsYXkuY3BwCmluZGV4IDUyNGQ5Mjk3YTAxNWQxOTY4ZDY0ZDA3NWZjODJlM2JhNDdj
NzQ2MTguLjM0Y2Q1YTRlMzBjOWJhOGY2NjlkNWRkMzM2OWU3NzBmNDQ1OGNmNTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKQEAgLTI4MCw3ICsy
ODAsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnNldFBhdXNlZEluRGVidWdnZXJNZXNzYWdl
KGNvbnN0IFN0cmluZyogbWVzc2FnZSkKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlkZUhpZ2hs
aWdodCgpCiB7CiAgICAgbV9oaWdobGlnaHROb2RlLmNsZWFyKCk7Ci0gICAgbV9oaWdobGlnaHRR
dWFkLmNsZWFyKCk7CisgICAgbV9oaWdobGlnaHRRdWFkLnJlc2V0KCk7CiAgICAgdXBkYXRlKCk7
CiB9CiAKQEAgLTI5MSwxMyArMjkxLDEzIEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxp
Z2h0Tm9kZShOb2RlKiBub2RlLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdoCiAgICAg
dXBkYXRlKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZChQYXNz
T3duUHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRD
b25maWcpCit2b2lkIEluc3BlY3Rvck92ZXJsYXk6OmhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVf
cHRyPEZsb2F0UXVhZD4gcXVhZCwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJiBoaWdobGlnaHRDb25m
aWcpCiB7CiAgICAgaWYgKG1fcXVhZEhpZ2hsaWdodENvbmZpZy51c2VQYWdlQ29vcmRpbmF0ZXMp
CiAgICAgICAgICpxdWFkIC09IG1fcGFnZS5tYWluRnJhbWUoKS52aWV3KCktPnNjcm9sbE9mZnNl
dCgpOwogCiAgICAgbV9xdWFkSGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnOwotICAg
IG1faGlnaGxpZ2h0UXVhZCA9IHF1YWQ7CisgICAgbV9oaWdobGlnaHRRdWFkID0gc3RkOjptb3Zl
KHF1YWQpOwogICAgIHVwZGF0ZSgpOwogfQogCkBAIC03NDgsNyArNzQ4LDcgQEAgUGFnZSogSW5z
cGVjdG9yT3ZlcmxheTo6b3ZlcmxheVBhZ2UoKQogCiAgICAgUGFnZTo6UGFnZUNsaWVudHMgcGFn
ZUNsaWVudHM7CiAgICAgZmlsbFdpdGhFbXB0eUNsaWVudHMocGFnZUNsaWVudHMpOwotICAgIG1f
b3ZlcmxheVBhZ2UgPSBhZG9wdFB0cihuZXcgUGFnZShwYWdlQ2xpZW50cykpOworICAgIG1fb3Zl
cmxheVBhZ2UgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2U+KHBhZ2VDbGllbnRzKTsKIAogICAgIFNl
dHRpbmdzJiBzZXR0aW5ncyA9IG1fcGFnZS5zZXR0aW5ncygpOwogICAgIFNldHRpbmdzJiBvdmVy
bGF5U2V0dGluZ3MgPSBtX292ZXJsYXlQYWdlLT5zZXR0aW5ncygpOwpAQCAtODE1LDcgKzgxNSw3
IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZXZhbHVhdGVJbk92ZXJsYXkoY29uc3QgU3RyaW5n
JiBtZXRob2QsIFBhc3NSZWZQdHI8SW5zcGVjCiAKIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6ZnJl
ZVBhZ2UoKQogewotICAgIG1fb3ZlcmxheVBhZ2UuY2xlYXIoKTsKKyAgICBtX292ZXJsYXlQYWdl
LnJlc2V0KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCmluZGV4IDdlM2QwMTdiMjM1ZmI3NzcyOTFmMjUw
ZmY0N2Y2ZjE4OTU3NDI0MzEuLmE3ZTZjNzg0OWIyM2EwMWY2MGE2OTgyNDQxNGIzNWRlNWEyMGM3
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaApAQCAt
MzIsOCArMzIsNiBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgi
CiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC0xMTcs
NyArMTE1LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBoaWRlSGlnaGxpZ2h0KCk7CiAgICAgdm9p
ZCBoaWdobGlnaHROb2RlKE5vZGUqLCBjb25zdCBIaWdobGlnaHRDb25maWcmKTsKLSAgICB2b2lk
IGhpZ2hsaWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBIaWdobGlnaHRDb25m
aWcmKTsKKyAgICB2b2lkIGhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4s
IGNvbnN0IEhpZ2hsaWdodENvbmZpZyYpOwogCiAgICAgTm9kZSogaGlnaGxpZ2h0ZWROb2RlKCkg
Y29uc3Q7CiAKQEAgLTE0MSw4ICsxMzksOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX3BhdXNl
ZEluRGVidWdnZXJNZXNzYWdlOwogICAgIFJlZlB0cjxOb2RlPiBtX2hpZ2hsaWdodE5vZGU7CiAg
ICAgSGlnaGxpZ2h0Q29uZmlnIG1fbm9kZUhpZ2hsaWdodENvbmZpZzsKLSAgICBPd25QdHI8Rmxv
YXRRdWFkPiBtX2hpZ2hsaWdodFF1YWQ7Ci0gICAgT3duUHRyPFBhZ2U+IG1fb3ZlcmxheVBhZ2U7
CisgICAgc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4gbV9oaWdobGlnaHRRdWFkOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQYWdlPiBtX292ZXJsYXlQYWdlOwogICAgIEhpZ2hsaWdodENvbmZpZyBt
X3F1YWRIaWdobGlnaHRDb25maWc7CiAgICAgSW50U2l6ZSBtX3NpemU7CiB9OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCmluZGV4
IDAzNWEzNDEyYzRlZWI5MDAxNjYyZTYxMTc4M2JiMzk5Njg4ZDAzYTUuLmRmODU2ZDg5ZjA5YzY0
ZmJkNDExYTU1MmY5NTZjNWJlNDg0YmI0YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTUwLDcgKzUwLDYgQEAKICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYvQ3VycmVudFRp
bWUuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5n
Q29uY2F0ZW5hdGUuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCmluZGV4IDRjMzM4
Y2U4YzRhODkxZTE3MzkwOTFmZjcyNjYwZDEwNTllMDU1ZGUuLmEzMzRlNjU0ZjFiY2FkN2U4NzE4
NmRmYzFmNmMyNzcwMDk3OTE4MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA0ODBi
ZGU5MDQ3MTg3ZjUwOGJlZGQ2OWMxMzBkODYxOTc1MDk3NDY2Li44OWU1Y2Y0OTVlZWFhNzg1MjMz
NjRiMTBkMTQ0YTE4MjU0ZjIxMmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC02NDMsNyArNjQzLDcgQEAgSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudDo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudChJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW4KICAgICA6IEluc3BlY3RvckFnZW50QmFzZShBU0NJSUxpdGVyYWwo
Ik5ldHdvcmsiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VB
Z2VudCkKICAgICAsIG1fY2xpZW50KGNsaWVudCkKLSAgICAsIG1fcmVzb3VyY2VzRGF0YShhZG9w
dFB0cihuZXcgTmV0d29ya1Jlc291cmNlc0RhdGEoKSkpCisgICAgLCBtX3Jlc291cmNlc0RhdGEo
c3RkOjptYWtlX3VuaXF1ZTxOZXR3b3JrUmVzb3VyY2VzRGF0YT4oKSkKICAgICAsIG1fZW5hYmxl
ZChmYWxzZSkKICAgICAsIG1fY2FjaGVEaXNhYmxlZChmYWxzZSkKICAgICAsIG1fbG9hZGluZ1hI
UlN5bmNocm9ub3VzbHkoZmFsc2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCBkMmNhMmEyOTRlYzljYTYzY2VmODVjZjM3YjFm
YTdlNWIzY2FlZTBmLi4xMmRhNzc4YzQ4ODNlNjg3ZWJhNDFlMTIyYWI1MDllNDhmNzZiOWI0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NPd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTE0NSw3ICsxNDQsNyBAQCBw
cml2YXRlOgogICAgIEluc3BlY3RvckNsaWVudCogbV9jbGllbnQ7CiAgICAgc3RkOjp1bmlxdWVf
cHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0Zyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9u
dGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yTmV0d29ya0Jh
Y2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwotICAgIE93blB0cjxOZXR3b3Jr
UmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxOZXR3
b3JrUmVzb3VyY2VzRGF0YT4gbV9yZXNvdXJjZXNEYXRhOwogICAgIGJvb2wgbV9lbmFibGVkOwog
ICAgIGJvb2wgbV9jYWNoZURpc2FibGVkOwogICAgIGJvb2wgbV9sb2FkaW5nWEhSU3luY2hyb25v
dXNseTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHls
ZVNoZWV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmNwcAppbmRleCBmMjdjM2IxMzdiYmJiNGNkZWFmZWExYTYxOWUyZWI3YjlhNTkyNTc0Li40ODY3
MGNkMWRmNzg0ZjI4OTAzYTFjN2JiNmM3MTRkZTlkZmQxN2FmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCkBAIC01OCw4ICs1OCw2IEBA
CiAjaW5jbHVkZSAiV2ViS2l0Q1NTS2V5ZnJhbWVzUnVsZS5oIgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmg+CiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3Rv
clZhbHVlcy5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8eWFyci9SZWd1bGFyRXhwcmVzc2lvbi5oPgpAQCAtNzcs
MTUgKzc1LDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0
KTsKICAgICBib29sIGhhc1RleHQoKSBjb25zdCB7IHJldHVybiBtX2hhc1RleHQ7IH0KICAgICBS
dWxlU291cmNlRGF0YUxpc3QqIHNvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3NvdXJjZURh
dGEuZ2V0KCk7IH0KLSAgICB2b2lkIHNldFNvdXJjZURhdGEoUGFzc093blB0cjxSdWxlU291cmNl
RGF0YUxpc3Q+KTsKLSAgICBib29sIGhhc1NvdXJjZURhdGEoKSBjb25zdCB7IHJldHVybiBtX3Nv
dXJjZURhdGE7IH0KKyAgICB2b2lkIHNldFNvdXJjZURhdGEoc3RkOjp1bmlxdWVfcHRyPFJ1bGVT
b3VyY2VEYXRhTGlzdD4pOworICAgIGJvb2wgaGFzU291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlRGF0YSAhPSBudWxscHRyOyB9CiAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpDU1NS
dWxlU291cmNlRGF0YT4gcnVsZVNvdXJjZURhdGFBdCh1bnNpZ25lZCkgY29uc3Q7CiAKIHByaXZh
dGU6CiAKICAgICBTdHJpbmcgbV90ZXh0OwogICAgIGJvb2wgbV9oYXNUZXh0OwotICAgIE93blB0
cjxSdWxlU291cmNlRGF0YUxpc3Q+IG1fc291cmNlRGF0YTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
UnVsZVNvdXJjZURhdGFMaXN0PiBtX3NvdXJjZURhdGE7CiB9OwogCiBQYXJzZWRTdHlsZVNoZWV0
OjpQYXJzZWRTdHlsZVNoZWV0KCkKQEAgLTExNSwxNCArMTEzLDE0IEBAIHN0YXRpYyB2b2lkIGZs
YXR0ZW5Tb3VyY2VEYXRhKFJ1bGVTb3VyY2VEYXRhTGlzdCogZGF0YUxpc3QsIFJ1bGVTb3VyY2VE
YXRhTGlzdCoKICAgICB9CiB9CiAKLXZvaWQgUGFyc2VkU3R5bGVTaGVldDo6c2V0U291cmNlRGF0
YShQYXNzT3duUHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gc291cmNlRGF0YSkKK3ZvaWQgUGFyc2Vk
U3R5bGVTaGVldDo6c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURhdGFM
aXN0PiBzb3VyY2VEYXRhKQogewogICAgIGlmICghc291cmNlRGF0YSkgewotICAgICAgICBtX3Nv
dXJjZURhdGEuY2xlYXIoKTsKKyAgICAgICAgbV9zb3VyY2VEYXRhLnJlc2V0KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBtX3NvdXJjZURhdGEgPSBhZG9wdFB0cihuZXcgUnVsZVNv
dXJjZURhdGFMaXN0KCkpOworICAgIG1fc291cmNlRGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8UnVs
ZVNvdXJjZURhdGFMaXN0PigpOwogCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgYSB0ZW1wb3Jhcnkg
c29sdXRpb24gdG8gcmV0YWluIHRoZSBvcmlnaW5hbCBmbGF0IHNvdXJjZURhdGEgc3RydWN0dXJl
CiAgICAgLy8gY29udGFpbmluZyBvbmx5IHN0eWxlIHJ1bGVzLCBldmVuIHRob3VnaCBDU1NQYXJz
ZXIgbm93IHByb3ZpZGVzIHRoZSBmdWxsIHJ1bGUgc291cmNlIGRhdGEgdHJlZS4KQEAgLTI4NCw5
ICsyODIsOSBAQCBzdGF0aWMgdm9pZCBmaWxsTWVkaWFMaXN0Q2hhaW4oQ1NTUnVsZSogcnVsZSwg
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOgogICAgIH0KIH0KIAotc3RhdGljIFBh
c3NPd25QdHI8Q1NTUGFyc2VyPiBjcmVhdGVDU1NQYXJzZXIoRG9jdW1lbnQqIGRvY3VtZW50KQor
c3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxDU1NQYXJzZXI+IGNyZWF0ZUNTU1BhcnNlcihEb2N1bWVu
dCogZG9jdW1lbnQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDU1NQYXJzZXIoZG9jdW1l
bnQgPyBDU1NQYXJzZXJDb250ZXh0KCpkb2N1bWVudCkgOiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0
KCkpKTsKKyAgICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxDU1NQYXJzZXI+KGRvY3VtZW50ID8g
Q1NTUGFyc2VyQ29udGV4dCgqZG9jdW1lbnQpIDogc3RyaWN0Q1NTUGFyc2VyQ29udGV4dCgpKTsK
IH0KIAogUGFzc1JlZlB0cjxJbnNwZWN0b3JTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OmNyZWF0ZShj
b25zdCBJbnNwZWN0b3JDU1NJZCYgc3R5bGVJZCwgUGFzc1JlZlB0cjxDU1NTdHlsZURlY2xhcmF0
aW9uPiBzdHlsZSwgSW5zcGVjdG9yU3R5bGVTaGVldCogcGFyZW50U3R5bGVTaGVldCkKQEAgLTUy
MSw3ICs1MTksNyBAQCBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkNTUzo6Q1NT
U3R5bGU+IEluc3BlY3RvclN0eWxlOjpzdHlsZVdpdGhQcm9wZQogICAgIEhhc2hTZXQ8U3RyaW5n
PiBmb3VuZFNob3J0aGFuZHM7CiAgICAgU3RyaW5nIHByZXZpb3VzUHJpb3JpdHk7CiAgICAgU3Ry
aW5nIHByZXZpb3VzU3RhdHVzOwotICAgIE93blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGlu
Z3MobV9wYXJlbnRTdHlsZVNoZWV0ID8gbV9wYXJlbnRTdHlsZVNoZWV0LT5saW5lRW5kaW5ncygp
IDogUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4oKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFZl
Y3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhtX3BhcmVudFN0eWxlU2hlZXQgPyBtX3BhcmVudFN0
eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkgOiBudWxscHRyKTsKICAgICBSZWZQdHI8Q1NTUnVsZVNv
dXJjZURhdGE+IHNvdXJjZURhdGEgPSBleHRyYWN0U291cmNlRGF0YSgpOwogICAgIHVuc2lnbmVk
IHJ1bGVCb2R5UmFuZ2VTdGFydCA9IHNvdXJjZURhdGEgPyBzb3VyY2VEYXRhLT5ydWxlQm9keVJh
bmdlLnN0YXJ0IDogMDsKIApAQCAtMTIxMSwxMCArMTIwOSwxMCBAQCBSZWZQdHI8Q1NTUnVsZVNv
dXJjZURhdGE+IEluc3BlY3RvclN0eWxlU2hlZXQ6OnJ1bGVTb3VyY2VEYXRhRm9yKENTU1N0eWxl
RGVjbGFyYQogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQtPnJ1bGVTb3VyY2VEYXRhQXQo
cnVsZUluZGV4QnlTdHlsZShzdHlsZSkpOwogfQogCi1QYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+
PiBJbnNwZWN0b3JTdHlsZVNoZWV0OjpsaW5lRW5kaW5ncygpIGNvbnN0CitzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fcGFyc2VkU3R5bGVTaGVldC0+aGFzVGV4dCgpKQotICAgICAgICBy
ZXR1cm4gUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4oKTsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcmV0dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdzKG1fcGFy
c2VkU3R5bGVTaGVldC0+dGV4dCgpKTsKIH0KIApAQCAtMTI3MCw5ICsxMjY4LDkgQEAgYm9vbCBJ
bnNwZWN0b3JTdHlsZVNoZWV0OjplbnN1cmVTb3VyY2VEYXRhKCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgUmVmUHRyPFN0eWxlU2hlZXRDb250ZW50cz4gbmV3U3R5bGVTaGVldCA9IFN0
eWxlU2hlZXRDb250ZW50czo6Y3JlYXRlKCk7Ci0gICAgT3duUHRyPFJ1bGVTb3VyY2VEYXRhTGlz
dD4gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBhZG9wdFB0cihuZXcgUnVsZVNvdXJjZURhdGFMaXN0
KCkpOworICAgIGF1dG8gcnVsZVNvdXJjZURhdGFSZXN1bHQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJ1
bGVTb3VyY2VEYXRhTGlzdD4oKTsKICAgICBjcmVhdGVDU1NQYXJzZXIobV9wYWdlU3R5bGVTaGVl
dC0+b3duZXJEb2N1bWVudCgpKS0+cGFyc2VTaGVldChuZXdTdHlsZVNoZWV0LmdldCgpLCBtX3Bh
cnNlZFN0eWxlU2hlZXQtPnRleHQoKSwgMCwgcnVsZVNvdXJjZURhdGFSZXN1bHQuZ2V0KCkpOwot
ICAgIG1fcGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0YShydWxlU291cmNlRGF0YVJlc3Vs
dC5yZWxlYXNlKCkpOworICAgIG1fcGFyc2VkU3R5bGVTaGVldC0+c2V0U291cmNlRGF0YShzdGQ6
Om1vdmUocnVsZVNvdXJjZURhdGFSZXN1bHQpKTsKICAgICByZXR1cm4gbV9wYXJzZWRTdHlsZVNo
ZWV0LT5oYXNTb3VyY2VEYXRhKCk7CiB9CiAKQEAgLTE0NzYsNyArMTQ3NCw3IEBAIGJvb2wgSW5z
cGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpzZXRTdHlsZVRleHQoQ1NTU3R5bGVEZWNs
YXJhdGlvbiogc3R5bGUsCiAgICAgcmV0dXJuICFlYzsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8
c2l6ZV90Pj4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpsaW5lRW5kaW5ncygp
IGNvbnN0CitzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hl
ZXRGb3JJbmxpbmVTdHlsZTo6bGluZUVuZGluZ3MoKSBjb25zdAogewogICAgIHJldHVybiBDb250
ZW50U2VhcmNoVXRpbGl0aWVzOjpsaW5lRW5kaW5ncyhlbGVtZW50U3R5bGVUZXh0KCkpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKaW5kZXgg
YmMxZjFhYzc5Y2IxZDdjMjM0Y2YxNTRhN2EyZmU1ODdjMWU1OTY3Ni4uOGIxOTFmZTA4NDM5YjVm
OGU3N2EyNzU5NTk3ZTYzM2RhOTllMGY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC0yMjYsNyArMjI2LDcgQEAgcHJvdGVjdGVkOgog
CiAgICAgLy8gQWxzbyBhY2Nlc3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUuCiAg
ICAgdmlydHVhbCBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3Qg
U3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxWZWN0b3I8
c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICB0
eXBlZGVmIFZlY3RvcjxSZWZQdHI8Q1NTU3R5bGVSdWxlPj4gQ1NTU3R5bGVSdWxlVmVjdG9yOwpA
QCAtMjc4LDcgKzI3OCw3IEBAIHByb3RlY3RlZDoKIAogICAgIC8vIEFsc28gYWNjZXNzZWQgYnkg
ZnJpZW5kIGNsYXNzIEluc3BlY3RvclN0eWxlLgogICAgIHZpcnR1YWwgYm9vbCBzZXRTdHlsZVRl
eHQoQ1NTU3R5bGVEZWNsYXJhdGlvbiosIGNvbnN0IFN0cmluZyYsIEV4Y2VwdGlvbkNvZGUmKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRp
bmdzKCkgY29uc3Qgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PHNpemVfdD4+IGxpbmVFbmRpbmdzKCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5bGUoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IGVmZjYyNWQ0
NjVlNWZlOWJmNGI0YWJjODI3ODgwZjM2YTA3MjA4NjkuLjAwY2E2YWUwYWEyNzFlMjUxYjA4NDY2
ZWNmOTNlMDhlZmE2NjkwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaApAQCAtMzgsNyArMzgsNiBAQAogI2luY2x1ZGUgIkluc3Bl
Y3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCiAj
aW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRy
Lmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3Jr
ZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuY3BwCmluZGV4IGI4MTA4YjU0ZjJjOWNhZjI1ZTJkMGViZmE0ZmMyYjkyZDE3NWMwZWMuLjg1
NzNkODZhYzQ1ZmEzMTRlMWFiMzRkMjg4YTBlYTM3OTMxMGEwZTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtNDAsNyArNDAs
NiBAQAogI2luY2x1ZGUgIlVSTC5oIgogI2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlUHJveHku
aCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBJbnNwZWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNv
bnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2Vu
dC5jcHAKaW5kZXggNTFiNTk4ZWNkOThlMDRjOGFlMmY0Yzk5NGMzOGRmOTJlZWY3NmRhMy4uMTA1
MWQ3YTY1NzIzNzJjMTA2NWY3ZjEzODI3ZTkzOGUwZjYzYzM1YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcApAQCAtNzUsNyArNzUsNyBAQCB2b2lk
IFBhZ2VDb25zb2xlQWdlbnQ6OmFkZEluc3BlY3RlZE5vZGUoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBpbnQgbm9kZUlkKQogICAgIH0KIAogICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3QqIGNv
bW1hbmRMaW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdlcio+
KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS0+Y29tbWFuZExpbmVBUElIb3N0KCkpCi0gICAgICAg
IGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KGFkb3B0UHRyKG5ldyBJbnNw
ZWN0YWJsZU5vZGUobm9kZSkpKTsKKyAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNw
ZWN0ZWRPYmplY3Qoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0YWJsZU5vZGU+KG5vZGUpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdl
UnVudGltZUFnZW50LmgKaW5kZXggMDIwNThkNmY0M2I0MzIxY2IzNGM0NzJmMjQxZTlkZjBkMzg1
YTAwOS4uZmQ0N2M3NDA3MGRkNTQ0YmRkYmUzMWIyNmIxZDcwODkyNTlmZjI1YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCkBAIC0zNSw3ICszNSw2IEBA
CiAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9ySlNGcm9udGVuZERpc3BhdGNoZXJzLmg+
CiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaD4KLSNp
bmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIEV4ZWNT
dGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJDb25zb2xlQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAKaW5k
ZXggZWMxMmQ4YTY3OWRlYmMzYzQ0NzQ3NDMxNWEzYWUwZTY0YTYyZmQ4ZC4uNTdjOGY0ZGQ4OGIx
NDc3NDg4NzczNGRmODA2MTFkZTExNjQ5MTU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCBwcml2YXRlOgogdm9p
ZCBXZWJDb25zb2xlQWdlbnQ6OmFkZEluc3BlY3RlZEhlYXBPYmplY3QoRXJyb3JTdHJpbmcqLCBp
bnQgaW5zcGVjdGVkSGVhcE9iamVjdElkKQogewogICAgIGlmIChDb21tYW5kTGluZUFQSUhvc3Qq
IGNvbW1hbmRMaW5lQVBJSG9zdCA9IHN0YXRpY19jYXN0PFdlYkluamVjdGVkU2NyaXB0TWFuYWdl
cio+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKS0+Y29tbWFuZExpbmVBUElIb3N0KCkpCi0gICAg
ICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KGFkb3B0UHRyKG5ldyBJ
bnNwZWN0YWJsZUhlYXBPYmplY3QoaW5zcGVjdGVkSGVhcE9iamVjdElkKSkpOworICAgICAgICBj
b21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPElu
c3BlY3RhYmxlSGVhcE9iamVjdD4oaW5zcGVjdGVkSGVhcE9iamVjdElkKSk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50
aW1lQWdlbnQuaAppbmRleCA5NWUyNTRkY2QyZWZmNjQ2NGI1ZTcwN2ZhNjRhM2Y0YzVkMDk4NmRk
Li41YzJkODYxNGIwYWIzZGJlNzJlODY1OGQxMGNkMTlmNzQyZGRjM2E3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCkBAIC0zNCw3ICszNCw2IEBA
CiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIAogI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0lu
dGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKaW5kZXgg
NjJlZDI0Y2IwZDZmNGY5MDhjNWI4YTQzZGIyODdiZTdkYzdlZmVjZC4uYjhkZGRkMWM5OTBkOWNm
YWU2MjE4MjhkZDczYThlMzBmZGMxOGRiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmNwcApAQCAtMTk0LDcgKzE5NCw3IEBAIHByb3RlY3RlZDoKIH07CiAKIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RHVtbXk6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50RHVtbXkoSW5zcGVjdG9yQ29u
dHJvbGxlciogY29udHJvbGxlciwgUGFnZSogcGFnZSkKLSAgICA6IEluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwoY29udHJvbGxlciwgcGFnZSwgYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzKCkpKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbChjb250cm9sbGVyLCBwYWdlLCBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPigpKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCmluZGV4
IDEyMGUxZmQzZGExMDFmODljZmRhNzIxMmFkNTRkY2JmNjMwNmVlNWUuLjYyMzMzZDk0MGFkOTVk
MTQzMTYwM2E1ZTU0ODBmOTk4MTRlNWVkNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2Yv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Q0YuY3BwCkBAIC0yNSw4ICsy
NSw4IEBACiAKIC8vIEZJWE1FOiBPbiBXaW5kb3dzLCB3ZSByZXF1aXJlIGFsbCBXZWJLaXQgc291
cmNlIGZpbGVzIHRvIGluY2x1ZGUgY29uZmlnLmgKIC8vIGJlZm9yZSBpbmNsdWRpbmcgYW55IG90
aGVyIGZpbGVzLiBGYWlsaW5nIHRvIGluY2x1ZGUgY29uZmlnLmggd2lsbCBsZWF2ZQotLy8gV1RG
X1VTRV9DRiB1bmRlZmluZWQsIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMgaW4gdGhpcyAKLS8vIGZp
bGUuIEJ1dCBNYWMgZG9lc24ndCBoYXZlIGEgY29uZmlnLmggZm9yIFdlYktpdCwgc28gd2UgY2Fu
J3QgaW5jbHVkZSB0aGUgCisvLyBXVEZfVVNFX0NGIHVuZGVmaW5lZCwgY2F1c2luZyBidWlsZCBm
YWlsdXJlcyBpbiB0aGlzCisvLyBmaWxlLiBCdXQgTWFjIGRvZXNuJ3QgaGF2ZSBhIGNvbmZpZy5o
IGZvciBXZWJLaXQsIHNvIHdlIGNhbid0IGluY2x1ZGUgdGhlCiAvLyBXaW5kb3dzIG9uZSBoZXJl
LiBGb3Igbm93IHdlIGNhbiBqdXN0IGRlZmluZSBXVEZfVVNFX0NGIGFuZAogLy8gV1RGX1VTRV9D
Rk5FVFdPUksgbWFudWFsbHksIGJ1dCB3ZSBuZWVkIGEgYmV0dGVyIGxvbmctdGVybSBzb2x1dGlv
bi4KICNpZm5kZWYgV1RGX1VTRV9DRgpAQCAtMTI0LDcgKzEyNCw3IEBAIHZvaWQgV2ViSW5zcGVj
dG9yQ2xpZW50OjpzZXRJbnNwZWN0b3JTdGFydHNBdHRhY2hlZChib29sIGF0dGFjaGVkKQogICAg
IHN0b3JlU2V0dGluZyhpbnNwZWN0b3JTdGFydHNBdHRhY2hlZFNldHRpbmcsIGF0dGFjaGVkID8g
InRydWUiIDogImZhbHNlIik7CiB9CiAKLVBhc3NPd25QdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpCitzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNsaWVudDo6Y3JlYXRlRnJvbnRl
bmRTZXR0aW5ncygpCiB7CiAgICAgY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGIDog
cHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzIHsK
ICAgICBwdWJsaWM6CkBAIC0xNDEsNSArMTQxLDUgQEAgUGFzc093blB0cjxXZWJDb3JlOjpJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gV2ViSW5zcGVjdG9yQ2xpZW50OjoK
ICAgICAgICAgICAgIHN0b3JlU2V0dGluZyhuYW1lLCB2YWx1ZSk7CiAgICAgICAgIH0KICAgICB9
OwotICAgIHJldHVybiBhZG9wdFB0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpTZXR0aW5ncz4obmV3IEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRigpKTsKKyAgICBy
ZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0Y+KCk7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JD
bGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9y
Q2xpZW50RWZsLmNwcAppbmRleCBiY2YyOGM5MjBjM2FiZDE5YWU0Nzc1MzlkNzc3OTgzOTRmMzk5
YmNhLi5hNGUyZjZiOTU3MGFiOTQ4NmEyNzMxMDlhZjEzYzg5NjBhZGY2ZjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5jcHAKQEAgLTE0OCw3ICsxNDgsNyBAQCBTdHJpbmcgSW5zcGVjdG9yQ2xpZW50RWZsOjppbnNw
ZWN0b3JGaWxlc1BhdGgoKQogfQogCiBJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbDo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRFZmwoRXZhc19PYmplY3QqIGluc3BlY3RlZFZpZXcsIEV2YXNfT2Jq
ZWN0KiBpbnNwZWN0b3JWaWV3LCBJbnNwZWN0b3JDbGllbnRFZmwqIGluc3BlY3RvckNsaWVudCkK
LSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJkVXS1ByaXZhdGU6OmNvcmVQYWdl
KGluc3BlY3RlZFZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIEVXS1ByaXZhdGU6OmNvcmVQ
YWdlKGluc3BlY3RvclZpZXcpLCBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5n
c0VmbCgpKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJkVXS1ByaXZhdGU6
OmNvcmVQYWdlKGluc3BlY3RlZFZpZXcpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIEVXS1ByaXZh
dGU6OmNvcmVQYWdlKGluc3BlY3RvclZpZXcpLCBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZy
b250ZW5kU2V0dGluZ3NFZmw+KCkpCiAgICAgLCBtX2luc3BlY3RlZFZpZXcoaW5zcGVjdGVkVmll
dykKICAgICAsIG1faW5zcGVjdG9yVmlldyhpbnNwZWN0b3JWaWV3KQogICAgICwgbV9pbnNwZWN0
b3JDbGllbnQoaW5zcGVjdG9yQ2xpZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcCBiL1NvdXJjZS9XZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKaW5kZXggY2Q5NDkzNGUxNjAx
MmY2Yzk4NDZlYTllNGZkNmNkMTk1ZWQ2Y2FkYy4uY2VlMWQzNDU3MWM5MzMxMzVmNjIwYzViYzYw
NTE5ZGY2OTMwYThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCkBAIC0xNTcsNyArMTU3LDcgQEAgYm9vbCBJ
bnNwZWN0b3JDbGllbnQ6OnNlbmRNZXNzYWdlVG9Gcm9udGVuZChjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UpCiB9CiAKIEluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpJbnNwZWN0b3JGcm9udGVuZENsaWVu
dChXZWJLaXRXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJLaXRXZWJWaWV3KiBpbnNwZWN0
b3JXZWJWaWV3LCBXZWJLaXRXZWJJbnNwZWN0b3IqIHdlYkluc3BlY3RvciwgUGFnZSogaW5zcGVj
dG9yUGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsKCZjb3JlKGluc3BlY3RlZFdlYlZpZXcpLT5pbnNwZWN0b3JD
b250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UsIGFkb3B0UHRyKG5ldyBJbnNwZWN0b3JGcm9udGVu
ZFNldHRpbmdzR3RrKCkpKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmY29y
ZShpbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdl
LCBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NHdGs+KCkpCiAgICAg
LCBtX2luc3BlY3RvcldlYlZpZXcoaW5zcGVjdG9yV2ViVmlldykKICAgICAsIG1faW5zcGVjdGVk
V2ViVmlldyhpbnNwZWN0ZWRXZWJWaWV3KQogICAgICwgbV93ZWJJbnNwZWN0b3Iod2ViSW5zcGVj
dG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50SU9TLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50SU9TLm1tCmluZGV4IDc1OTVmMTcwM2MzMTczYTEzNjBjZmQ0NTU1NmNl
YzNkYTIyNmRiY2UuLjAwMTE3OWFkYTRmOWY3M2IwYzhjYTFhNDA4NmI2MDJkYzYxNTlmZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnRJT1MubW0KQEAgLTM5LDcgKzM5LDYgQEAKICNpbXBvcnQgPFdlYkNvcmUvUGFn
ZS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9XZWJD
b3JlVGhyZWFkLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIApAQCAtMTEwLDggKzEwOSw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50
OjpkaWRTZXRTZWFyY2hpbmdGb3JOb2RlKGJvb2wgZW5hYmxlZCkKICNwcmFnbWEgbWFyayAtCiAj
cHJhZ21hIG1hcmsgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgSW1wbGVtZW50YXRpb24KIAot
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdl
YlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqIHdp
bmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIs
IFBhZ2UqIGZyb250ZW5kUGFnZSwgV1RGOjpQYXNzT3duUHRyPFNldHRpbmdzPiBzZXR0aW5ncykK
LSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdG9yQ29udHJvbGxlciwg
IGZyb250ZW5kUGFnZSwgc2V0dGluZ3MpCitXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2Vi
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5z
cGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwgSW5zcGVjdG9yQ29udHJv
bGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBzdGQ6OnVuaXF1
ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdzKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBzdGQ6Om1vdmUoc2V0dGlu
Z3MpKQogewogICAgIC8vIGlPUyBkb2VzIG5vdCBoYXZlIGEgbG9jYWwgaW5zcGVjdG9yLCB0aGlz
IHNob3VsZCBub3QgYmUgcmVhY2hlZC4KICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApp
bmRleCAwMWMxYzYwOGRlMzQ0ZTE5M2Q0MDg5NGNlMmFmYjYwN2RhN2Y4M2E1Li5mODE1Zjg3YjY5
Y2U3YjcyM2M1ZDFlNzU2YjIwNWQ3ZTA3MTUyY2EwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNiwxMyArNiwx
MyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
ICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTg5LDcgKzg5LDcgQEAgcHVibGljOgogICAgIHZvaWQg
cmVsZWFzZUZyb250ZW5kKCk7CiAKIHByaXZhdGU6Ci0gICAgUGFzc093blB0cjxXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0
aW5ncygpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpOwogCiAgICAgV2Vi
VmlldyAqbV93ZWJWaWV3OwogICAgIFJldGFpblB0cjxXZWJOb2RlSGlnaGxpZ2h0ZXI+IG1faGln
aGxpZ2h0ZXI7CkBAIC0xMDAsNyArMTAwLDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgV2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbCB7CiBwdWJsaWM6Ci0gICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmll
dyosIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqLCBXZWJDb3JlOjpJbnNwZWN0b3JDb250
cm9sbGVyKiwgV2ViQ29yZTo6UGFnZSosIFBhc3NPd25QdHI8U2V0dGluZ3M+KTsKKyAgICBXZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiwgV2ViSW5zcGVjdG9yV2luZG93Q29udHJv
bGxlciosIFdlYkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqLCBXZWJDb3JlOjpQYWdlKiwgc3Rk
Ojp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAKICAgICB2b2lkIGF0dGFjaEF2YWlsYWJpbGl0eUNo
YW5nZWQoYm9vbCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQppbmRleCBhZjg5ZDk0YmFkNjlkZTE1NTBhZTFiMjUz
YzA1NzJmZTYyYWE4ZjY2Li43OTEwZWEyYWE0OGIxMmNjNjI2MjcwMDAzMjRkZDY4NzBkNzc4Zjll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5z
cGVjdG9yQ2xpZW50Lm1tCkBAIC02LDEzICs2LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAg
KiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikg
bm9yIHRoZSBuYW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KICAqCiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtNTMs
NyArNTMsNiBAQAogI2ltcG9ydCA8V2ViQ29yZS9Tb2Z0TGlua2luZy5oPgogI2ltcG9ydCA8V2Vi
S2l0L0RPTUV4dGVuc2lvbnMuaD4KICNpbXBvcnQgPFdlYktpdFN5c3RlbUludGVyZmFjZS5oPgot
I2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgog
CiBTT0ZUX0xJTktfU1RBR0VEX0ZSQU1FV09SSyhXZWJJbnNwZWN0b3JVSSwgUHJpdmF0ZUZyYW1l
d29ya3MsIEEpCkBAIC0yMTAsOCArMjA5LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJl
bGVhc2VGcm9udGVuZCgpCiB9CiAKIAotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3Bl
Y3RvcldpbmRvd0NvbnRyb2xsZXIqIHdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xs
ZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgV1RGOjpQYXNzT3du
UHRyPFNldHRpbmdzPiBzZXR0aW5ncykKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9j
YWwoaW5zcGVjdG9yQ29udHJvbGxlciwgIGZyb250ZW5kUGFnZSwgc2V0dGluZ3MpCitXZWJJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyog
aW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29u
dHJvbGxlciwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSog
ZnJvbnRlbmRQYWdlLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdzKQorICAgIDog
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRl
bmRQYWdlLCBzdGQ6Om1vdmUoc2V0dGluZ3MpKQogICAgICwgbV9pbnNwZWN0ZWRXZWJWaWV3KGlu
c3BlY3RlZFdlYlZpZXcpCiAgICAgLCBtX3dpbmRvd0NvbnRyb2xsZXIod2luZG93Q29udHJvbGxl
cikKIHsKQEAgLTIzMyw3ICsyMzIsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50
Ojpmcm9udGVuZExvYWRlZCgpCiAgICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6ZnJv
bnRlbmRMb2FkZWQoKTsKIAogICAgIFdlYkZyYW1lICpmcmFtZSA9IFttX2luc3BlY3RlZFdlYlZp
ZXcgbWFpbkZyYW1lXTsKLSAgICAKKwogICAgIFdlYkZyYW1lTG9hZERlbGVnYXRlSW1wbGVtZW50
YXRpb25DYWNoZSogaW1wbGVtZW50YXRpb25zID0gV2ViVmlld0dldEZyYW1lTG9hZERlbGVnYXRl
SW1wbGVtZW50YXRpb25zKG1faW5zcGVjdGVkV2ViVmlldyk7CiAgICAgaWYgKGltcGxlbWVudGF0
aW9ucy0+ZGlkQ2xlYXJJbnNwZWN0b3JXaW5kb3dPYmplY3RGb3JGcmFtZUZ1bmMpCiAgICAgICAg
IENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZENsZWFySW5zcGVjdG9y
V2luZG93T2JqZWN0Rm9yRnJhbWVGdW5jLCBtX2luc3BlY3RlZFdlYlZpZXcsCkBAIC0zMTksMTQg
KzMxOCwxNCBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50Ojp1cGRhdGVXaW5kb3dU
aXRsZSgpIGNvbnN0CiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0
IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGJvb2wgYmFzZTY0
RW5jb2RlZCwgYm9vbCBmb3JjZVNhdmVEaWFsb2cpCiB7CiAgICAgQVNTRVJUKCFzdWdnZXN0ZWRV
UkwuaXNFbXB0eSgpKTsKLSAgICAKKwogICAgIE5TVVJMICpwbGF0Zm9ybVVSTCA9IG1fc3VnZ2Vz
dGVkVG9BY3R1YWxVUkxNYXAuZ2V0KHN1Z2dlc3RlZFVSTCkuZ2V0KCk7CiAgICAgaWYgKCFwbGF0
Zm9ybVVSTCkgewogICAgICAgICBwbGF0Zm9ybVVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnN1
Z2dlc3RlZFVSTF07CiAgICAgICAgIC8vIFRoZSB1c2VyIG11c3QgY29uZmlybSBuZXcgZmlsZW5h
bWVzIGJlZm9yZSB3ZSBjYW4gc2F2ZSB0byB0aGVtLgogICAgICAgICBmb3JjZVNhdmVEaWFsb2cg
PSB0cnVlOwogICAgIH0KLSAgICAKKwogICAgIEFTU0VSVChwbGF0Zm9ybVVSTCk7CiAgICAgaWYg
KCFwbGF0Zm9ybVVSTCkKICAgICAgICAgcmV0dXJuOwpAQCAtMzM3LDcgKzMzNiw3IEBAIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRV
UkwsIGNvbnN0IFN0cmluZyYKIAogICAgIGF1dG8gc2F2ZVRvVVJMID0gXihOU1VSTCAqYWN0dWFs
VVJMKSB7CiAgICAgICAgIEFTU0VSVChhY3R1YWxVUkwpOwotICAgICAgICAKKwogICAgICAgICBt
X3N1Z2dlc3RlZFRvQWN0dWFsVVJMTWFwLnNldChzdWdnZXN0ZWRVUkxDb3B5LCBhY3R1YWxVUkwp
OwogCiAgICAgICAgIGlmIChiYXNlNjRFbmNvZGVkKSB7CkBAIC0zNTYsNyArMzU1LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZFVSTCwgY29uc3QgU3RyaW5nJgogICAgICAgICBzYXZlVG9VUkwocGxhdGZvcm1VUkwpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgTlNTYXZlUGFuZWwgKnBhbmVsID0gW05T
U2F2ZVBhbmVsIHNhdmVQYW5lbF07CiAgICAgcGFuZWwubmFtZUZpZWxkU3RyaW5nVmFsdWUgPSBw
bGF0Zm9ybVVSTC5sYXN0UGF0aENvbXBvbmVudDsKICAgICBwYW5lbC5kaXJlY3RvcnlVUkwgPSBb
cGxhdGZvcm1VUkwgVVJMQnlEZWxldGluZ0xhc3RQYXRoQ29tcG9uZW50XTsKQEAgLTM3Miw3ICsz
NzEsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmlu
ZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5k
Q2xpZW50OjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
Y29udGVudCkKIHsKICAgICBBU1NFUlQoIXN1Z2dlc3RlZFVSTC5pc0VtcHR5KCkpOwotICAgIAor
CiAgICAgUmV0YWluUHRyPE5TVVJMPiBhY3R1YWxVUkwgPSBtX3N1Z2dlc3RlZFRvQWN0dWFsVVJM
TWFwLmdldChzdWdnZXN0ZWRVUkwpOwogICAgIC8vIGRvIG5vdCBhcHBlbmQgdW5sZXNzIHRoZSB1
c2VyIGhhcyBhbHJlYWR5IGNvbmZpcm1lZCB0aGlzIGZpbGVuYW1lIGluIHNhdmUoKS4KICAgICBp
ZiAoIWFjdHVhbFVSTCkKQEAgLTU4Miw3ICs1ODEsNyBAQCAtIChJQkFjdGlvbilzaG93V2luZG93
OihpZClzZW5kZXIKICAgICB9CiAKICAgICBfdmlzaWJsZSA9IFlFUzsKLSAgICAKKwogICAgIF9z
aG91bGRBdHRhY2ggPSBfaW5zcGVjdG9yQ2xpZW50LT5pbnNwZWN0b3JTdGFydHNBdHRhY2hlZCgp
ICYmIF9mcm9udGVuZENsaWVudC0+Y2FuQXR0YWNoV2luZG93KCkgJiYgIV9pbnNwZWN0b3JDbGll
bnQtPmluc3BlY3RvckF0dGFjaERpc2FibGVkKCk7CiAKICAgICBpZiAoX3Nob3VsZEF0dGFjaCkg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVj
dG9yQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5jcHAKaW5kZXggNzEzZTgzMDZkZmFmOWM2N2FjNTA5MWU5NTAzZmFiNjAwYWUx
N2E5Zi4uOWUyNzhiYTEzZWExZjczMTJkMzgwNzY0NTE5ZDZkOTBkZDNkMTBjZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCkBAIC02LDEzICs2LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAq
CiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtMjI0LDggKzIyNCw4
IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJvbnRlbmQoKQogICAgIG1fZnJv
bnRlbmRIYW5kbGUgPSAwOwogfQogCi1XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgSFdORCBpbnNw
ZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0cjxXZWJWaWV3
PiYgZnJvbnRlbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdlYkluc3BlY3Rv
ckNsaWVudCogaW5zcGVjdG9yQ2xpZW50LCBQYXNzT3duUHRyPFNldHRpbmdzPiBzZXR0aW5ncykK
LSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmluc3BlY3RlZFdlYlZpZXctPnBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCAgY29yZShmcm9udGVuZFdlYlZpZXcuZ2V0KCkp
LCBzZXR0aW5ncykKK1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBIV05EIGluc3BlY3RlZFdlYlZp
ZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwgY29uc3QgQ09NUHRyPFdlYlZpZXc+JiBmcm9udGVu
ZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHduZCwgV2ViSW5zcGVjdG9yQ2xpZW50KiBp
bnNwZWN0b3JDbGllbnQsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCisgICAg
OiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCkt
Pmluc3BlY3RvckNvbnRyb2xsZXIoKSwgIGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKSwgc3Rk
Ojptb3ZlKHNldHRpbmdzKSkKICAgICAsIG1faW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRXZWJW
aWV3KQogICAgICwgbV9pbnNwZWN0ZWRXZWJWaWV3SHduZChpbnNwZWN0ZWRXZWJWaWV3SHduZCkK
ICAgICAsIG1faW5zcGVjdG9yQ2xpZW50KGluc3BlY3RvckNsaWVudCkKQEAgLTI4OCw3ICsyODgs
NyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjphdHRhY2hXaW5kb3coRG9ja1Np
ZGUpCiAKICAgICBjbG9zZVdpbmRvd1dpdGhvdXROb3RpZmljYXRpb25zKCk7CiAgICAgLy8gV2Ug
bmVlZCB0byBzZXQgdGhlIGF0dGFjaGVkIHdpbmRvdydzIGhlaWdodCBiZWZvcmUgd2UgYWN0dWFs
bHkgYXR0YWNoIHRoZSB3aW5kb3cuCi0gICAgLy8gTWFrZSBzdXJlIHRoYXQgbV9hdHRhY2hlZCBp
cyB0cnVlIHNvIHRoYXQgY2FsbGluZyBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCBmcm9tIHJlc3Rv
cmVBdHRhY2hlZFdpbmRvd0hlaWdodCBkb2Vzbid0IHJldHVybiBlYXJseS4gCisgICAgLy8gTWFr
ZSBzdXJlIHRoYXQgbV9hdHRhY2hlZCBpcyB0cnVlIHNvIHRoYXQgY2FsbGluZyBzZXRBdHRhY2hl
ZFdpbmRvd0hlaWdodCBmcm9tIHJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCBkb2Vzbid0IHJl
dHVybiBlYXJseS4KICAgICBtX2F0dGFjaGVkID0gdHJ1ZTsKICAgICAvLyBJbW1lZGlhdGVseSBh
ZnRlciBjYWxsaW5nIHNob3dXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpLCB0aGUgcGFyZW50
IGZyYW1ldmlldydzIHZpc2libGVIZWlnaHQgaW5jb3JyZWN0bHkgcmV0dXJucyAwIGFsd2F5cyAo
V2luZG93cyBvbmx5KS4KICAgICAvLyBXZSBhcmUgZXhwZWN0aW5nIHRoaXMgdmFsdWUgdG8gYmUg
anVzdCB0aGUgaGVpZ2h0IG9mIHRoZSBwYXJlbnQgd2luZG93IHdoZW4gd2UgY2FsbCByZXN0b3Jl
QXR0YWNoZWRXaW5kb3dIZWlnaHQsIHdoaWNoIGl0IGlzIGJlZm9yZQpAQCAtMzMyLDcgKzMzMiw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNldEF0dGFjaGVkV2luZG93SGVp
Z2h0KHVuc2lnbmVkIGhlaWdodCkKICAgICAvLyBvZiB0aGUgaW5zcGVjdGVkIHdlYiB2aWV3IGhh
cHBlbnMgaW4gb25XZWJWaWV3V2luZG93UG9zQ2hhbmdpbmcsIG5vdCBoZXJlLgogICAgIFNldFdp
bmRvd1BvcyhtX2luc3BlY3RlZFdlYlZpZXdId25kLCAwLCAwLCAwLCB3ZWJWaWV3V2lkdGgsIHRv
dGFsSGVpZ2h0LCBTV1BfTk9aT1JERVIpOwogCi0gICAgUmVkcmF3V2luZG93KG1fZnJvbnRlbmRX
ZWJWaWV3SHduZCwgMCwgMCwgUkRXX0lOVkFMSURBVEUgfCBSRFdfQUxMQ0hJTERSRU4gfCBSRFdf
VVBEQVRFTk9XKTsgCisgICAgUmVkcmF3V2luZG93KG1fZnJvbnRlbmRXZWJWaWV3SHduZCwgMCwg
MCwgUkRXX0lOVkFMSURBVEUgfCBSRFdfQUxMQ0hJTERSRU4gfCBSRFdfVVBEQVRFTk9XKTsKICAg
ICBSZWRyYXdXaW5kb3cobV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgMCwgMCwgUkRXX0lOVkFMSURB
VEUgfCBSRFdfQUxMQ0hJTERSRU4gfCBSRFdfVVBEQVRFTk9XKTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmggYi9T
b3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAppbmRl
eCBkNjczNDA1YjIyNGJjZWQzZDBmOTE3MDViYTZkMWNlMWEwYTFmYzEzLi4yZmU2ZGUyMDkzNjdk
YTk2ZGU0ZWFmZTBiNTY0OTg0OWQyYWI5ZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaApAQCAtNiwxMyArNiwxMyBA
QAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUg
Q29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKICAqICAgICBpdHMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKICAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKQEAgLTgxLDcgKzgxLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgfldlYkluc3BlY3RvckNsaWVudCgpOwotICAgIFdURjo6UGFzc093blB0cjxX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJv
bnRlbmRTZXR0aW5ncygpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxXZWJDb3JlOjpJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gY3JlYXRlRnJvbnRlbmRTZXR0aW5ncygpOwog
CiAgICAgV2ViVmlldyogbV9pbnNwZWN0ZWRXZWJWaWV3OwogICAgIFdlYkNvcmU6OlBhZ2UqIG1f
ZnJvbnRlbmRQYWdlOwpAQCAtOTQsMTkgKzk0LDE5IEBAIHByaXZhdGU6CiAKIGNsYXNzIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5k
Q2xpZW50TG9jYWwsIFdlYkNvcmU6OldpbmRvd01lc3NhZ2VMaXN0ZW5lciB7CiBwdWJsaWM6Ci0g
ICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywg
SFdORCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0
cjxXZWJWaWV3PiYgZnJvdG5lbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdl
Ykluc3BlY3RvckNsaWVudCosIFdURjo6UGFzc093blB0cjxTZXR0aW5ncz4pOworICAgIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5z
cGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmll
dz4mIGZyb3RuZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0
b3JDbGllbnQqLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+KTsKICAgICB2aXJ0dWFsIH5XZWJJ
bnNwZWN0b3JGcm9udGVuZENsaWVudCgpOwogCiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kTG9h
ZGVkKCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIFdURjo6U3RyaW5nIGxvY2FsaXplZFN0cmluZ3NV
UkwoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBicmluZ1RvRnJvbnQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgY2xvc2VXaW5kb3coKTsKLSAgICAKKwogICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hX
aW5kb3coRG9ja1NpZGUpOwogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hXaW5kb3coKTsKLSAgICAK
KwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNpZ25lZCBoZWln
aHQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd1dpZHRoKHVuc2lnbmVkKTsK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0VG9vbGJhckhlaWdodCh1bnNpZ25lZCkgb3ZlcnJpZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCmluZGV4IGIzZTZlNDVm
OWIxOGE2ZTMyNzc5NjllN2VjYTZmZmFjNGUwNTMzOWUuLmJiNDU5YzQyNjkxNzIzYmExYWViODVh
ODY0NjNlYjViY2JkOWQyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQuY3BwCkBAIC00MSw3ICs0MSw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0
b3JGcm9udGVuZENsaWVudChXZWJQYWdlKiBwYWdlLCBXZWJQYWdlKiBpbnNwZWN0b3JQYWdlKQot
ICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmcGFnZS0+Y29yZVBhZ2UoKS0+aW5z
cGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBhZG9wdFB0cihu
ZXcgU2V0dGluZ3MoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZwYWdl
LT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNvcmVQ
YWdlKCksIHN0ZDo6bWFrZV91bmlxdWU8U2V0dGluZ3M+KCkpCiAgICAgLCBtX3BhZ2UocGFnZSkK
IHsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224122</attachid>
            <date>2014-02-13 15:37:11 -0800</date>
            <delta_ts>2014-02-17 08:13:16 -0800</delta_ts>
            <desc>v4...</desc>
            <filename>bug-128681-20140213203703.patch</filename>
            <type>text/plain</type>
            <size>100631</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MDY5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NjcyNzczYjkxYWZkMGY2MTVmNGZmNzczNTdlYWE4ZDA0Y2Y3OWRiLi44OTE1ZDhlMDUwYzY5MTlj
NDRhOWVmYzJhMTJiZTViNmEwZTNmZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMg
Z2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAg
V2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIg
ZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rp
bmcgd2VyZSB0b3VjaGVkLgorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKwog
MjAxNC0wMi0xMyAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDaGFuZ2UgRlRMIHN0YWNrIGNoZWNrIHRvIHVzZSBWTSdzIHN0YWNrTGltaXQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCAyNzkwMzMwMDdlNzY3ZTBmZDA5MDhiZGEzNzg0ZDMzYzVjNWI3YTcyLi5jYTViZjY0MTQz
YjY0OTI4MGNjZjYzOTk2YWUzZDcyZWMwMDk3NmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTgg
QEAKKzIwMTQtMDItMTMgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3Nh
Lm9yZz4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBz
dGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dhcmRzIGdldHRpbmcg
cmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAgICAgIFdlYkNvcmUv
aW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90aGVyIGZpbGVzIGlu
CisgICAgICAgIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciwgV2ViS2l0LywgV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0LworICAgICAgICBhbmQgV2ViQ29yZS90ZXN0aW5nIHdlcmUg
dG91Y2hlZC4KKworICAgICAgICBObyBuZXcgdGVzdHM7IG5vIG5ldyBiZWhhdmlvci4KKworICAg
ICAgICAqIFdlYkNvcmUuZXhwLmluOgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQ
SUhvc3QuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvRE9NRWRpdG9yLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9N
UGF0Y2hTdXBwb3J0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0Lmg6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yRGF0YWJhc2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIZWFwUHJvZmlsZXJB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oOgorICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJ
bnB1dEFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvck92
ZXJsYXkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hl
ZXQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgICogaW5z
cGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlUnVu
dGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHA6Cisg
ICAgICAgICogaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIHRlc3Rp
bmcvSW50ZXJuYWxzLmNwcDoKKwogMjAxNC0wMi0xMyAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0Bh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IHRoZSBBUk0gYnVpbGQgd2hlbiBIQVZFX0FSTV9ORU9O
X0lOVFJJTlNJQ1MgaXMgZW5hYmxlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA5ODhmZThjMWNjMGNmY2ZhMjI3NjUx
NTc1M2EzYjBiOWJmMjRlYjZmLi4yYzRkOWVjNDYzOTg1NzdjNjAzYWVmZjdiMTM4YmU0MmEwM2Yy
ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAyLTEzICBTZXJnaW8gQ29ycmVp
YSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1c2Vz
IG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5z
cGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
Mjg2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
bm90aGVyIHN0ZXAgdG93YXJkcyBnZXR0aW5nIHJpZCBvZiBQYXNzT3duUHRyL093blB0ciwgbm93
IHRhcmdldGluZworICAgICAgICBXZWJDb3JlL2luc3BlY3Rvci8qLiBCZXNpZGVzIGZpbGVzIGlu
IHRoZXJlLCBhIGZldyBvdGhlciBmaWxlcyBpbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IsIFdlYktpdC8sIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8KKyAgICAg
ICAgYW5kIFdlYkNvcmUvdGVzdGluZyB3ZXJlIHRvdWNoZWQuCisKKyAgICAgICAgKiBXZWJLaXQu
dmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW46CisKIDIw
MTQtMDItMTEgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAog
ICAgICAgICBGaXhlZCBsaW5raW5nIG9uIFdpbjY0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jZi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwppbmRleCA3NTYyMTVm
YzNjMDIzYTAxODZhMDFmMzRjNzUzNzk0NDNmMzZmOTlhLi5jZjgxMzg1MWUxOGEyNDQyOTVhMGM2
YzdlNTkwMmY3YTUzN2MyMDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE0
LTAyLTEzICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3NzYS5vcmc+CisK
KyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGggc3RkOjp1bmlx
dWVfcHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2ODEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBbm90aGVyIHN0ZXAgdG93YXJkcyBnZXR0aW5nIHJpZCBvZiBQ
YXNzT3duUHRyL093blB0ciwgbm93IHRhcmdldGluZworICAgICAgICBXZWJDb3JlL2luc3BlY3Rv
ci8qLiBCZXNpZGVzIGZpbGVzIGluIHRoZXJlLCBhIGZldyBvdGhlciBmaWxlcyBpbgorICAgICAg
ICBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IsIFdlYktpdC8sIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC8KKyAgICAgICAgYW5kIFdlYkNvcmUvdGVzdGluZyB3ZXJlIHRvdWNoZWQu
CisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHA6CisK
IDIwMTMtMTItMDMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBQdXNoIFJlbW90ZSBJbnNwZWN0b3IgZGVidWdnaW5nIGNvbm5l
Y3Rpb24gbWFuYWdlbWVudCBpbnRvIEphdmFTY3JpcHRDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXgg
NjgwYzc2YWNlZmZlMTRkZGI1YjY3OTVmYjYyMzQyZTQxMGUxNzIyZC4uZDJlMTVkM2JlZDczNjM5
ODAxNzJiMzNjMDBkZWI5OWI5YWIzNGI5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3
IEBACisyMDE0LTAyLTEzICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5jb3JyZWlhQG9wZW5ib3Nz
YS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFBhc3NPd25QdHIvT3duUHRyIHdpdGgg
c3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2ODEKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbm90aGVyIHN0ZXAgdG93YXJkcyBnZXR0aW5n
IHJpZCBvZiBQYXNzT3duUHRyL093blB0ciwgbm93IHRhcmdldGluZworICAgICAgICBXZWJDb3Jl
L2luc3BlY3Rvci8qLiBCZXNpZGVzIGZpbGVzIGluIHRoZXJlLCBhIGZldyBvdGhlciBmaWxlcyBp
bgorICAgICAgICBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IsIFdlYktpdC8sIFdlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8KKyAgICAgICAgYW5kIFdlYkNvcmUvdGVzdGluZyB3ZXJl
IHRvdWNoZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwu
Y3BwOgorCiAyMDE0LTAyLTEzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4K
IAogICAgICAgICBbRUZMXVtXSzFdIERvIG5vdCBpbmNsdWRlIGxpYnNvdXAgaGVhZGVyIGluIHRo
ZSBwdWJsaWMgaGVhZGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDExZjBkYmI0YjU2NWEzZjg3Yzhj
NzRiYzgzZTcyYTM5OWNiY2EwZjQuLjI3ODlmMGU5ODFmYjE2Mzk3MGMzOGFjZjE4YmQ2MmUyOTQy
YTg1YWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2Vy
Z2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJl
cGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBX
ZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9P
d25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRl
cyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNwcDoKKwogMjAxNC0wMi0xMSAg
WmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1YnBpeGVsIHJlbmRl
cmluZzogTWFrZSBHcmFwaGljc0xheWVyQ2xpZW50OjpwYWludENvbnRlbnRzJ3MgY2xpcCByZWN0
IHN1YnBpeGVsIGJhc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IGIyOGFlNTQwMjg4NTg5NWEzMTBk
ZWVhMDQ0ZDhmMGJiZjIwM2I4MjMuLmU5MGE1MzNlNDZlMzE4NTgwZjcxN2E4ZTE0NGI1NGVlYjU3
NDcwNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2Vy
Z2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJl
cGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBX
ZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9P
d25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRl
cyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBv
cnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorCiAyMDE0LTAyLTEy
ICBCZW5qYW1pbiBQb3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJd
W2lPU10gQWRkIGJhY2sgdGhlIHNwZWNpYWwgdmlld3BvcnQgZm9yIHRoZSBvbGQgeGh0bWwgbW9i
aWxlIGRvY3R5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCAxZGEyZDliNTAxYWNlZGNkMmUzYzVhZDlj
ODI2MDZhZmFhNzM2ZDA3Li5jOTc3OWIwZDQxMzljNDZhOTE0ZjczMWRjOGU1ODk4MDVmMDBkNWNh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTQtMDItMTMgIFNlcmdpbyBD
b3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXBsYWNl
IHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29y
ZS9pbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEyODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFub3RoZXIgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRy
LCBub3cgdGFyZ2V0aW5nCisgICAgICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmls
ZXMgaW4gdGhlcmUsIGEgZmV3IG90aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3JpcHRDb3Jl
L2luc3BlY3RvciwgV2ViS2l0LywgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0Lwor
ICAgICAgICBhbmQgV2ViQ29yZS90ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAgICAqIFdl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5tbToKKwogMjAxNC0wMi0xMyAgTXlsZXMgQy4gTWF4Zmll
bGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIER1cmluZyBhIGNvcHksIHBvc2l0
aW9uOmZpeGVkIGdldHMgY29udmVydGVkIHRvIHBvc2l0aW9uOmFic29sdXRlIGV2ZW4gaWYgb25s
eSBwYXJ0IG9mIHRoZSBkb2N1bWVudCBpcyBzZWxlY3RlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC93aW4vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDQz
YTM2ZDg5Y2U5NWVmOGU3MTY5Zjk2NmEyYTVhOTlhOGI0OTRiMTguLjU3MmQ2ZDRhNDY2MDM2OTY2
YjMyYTE3OGE1ZjVlYWJkNjk5N2MyNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eu
b3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0
ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyBy
aWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAgV2ViQ29yZS9p
bnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4K
KyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0
b3VjaGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNw
cDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuaDoKKwogMjAx
NC0wMi0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFN1YnBp
eGVsIHJlbmRlcmluZzogTWFrZSBHcmFwaGljc0xheWVyQ2xpZW50OjpwYWludENvbnRlbnRzJ3Mg
Y2xpcCByZWN0IHN1YnBpeGVsIGJhc2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGI4MjQ2MGI1NGExYTE0Y2M5
NmNmZTg3MWZiYTI4YTMwNjZhODcwYjYuLmQ4MmU0ZDk3NmYyZWZjNzY1NzRmOGYzOGY5OTRjY2I2
NmZiYjg1Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2VyZ2lv
IENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxh
Y2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJD
b3JlL2luc3BlY3RvcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25Q
dHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBm
aWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
CisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgICog
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHA6
CisKIDIwMTQtMDItMTMgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBBZGQgLVtXS1dlYlZpZXcgZ29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06XQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0
aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHAKaW5kZXggMjAyZDNmZGRhMDk5YjIyYjc2YmFjNThiMGI1ZjI3YzEzMjU1ZjY3
Mi4uNzQ0NWNlZmQwNzhmZjczMzI3NDNjNzE1NmUzMDE5YjE5NWZhYzhkMCAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGls
aXRpZXMuY3BwCkBAIC04Miw3ICs4Miw3IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPGludCwg
U3RyaW5nPj4gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKCiAgICAg
aWYgKHRleHQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gcmVzdWx0OwogCi0gICAgT3duUHRy
PFZlY3RvcjxzaXplX3Q+PiBlbmRpbmdzKGxpbmVFbmRpbmdzKHRleHQpKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGVuZGluZ3MobGluZUVuZGluZ3ModGV4dCkpOwogICAg
IHNpemVfdCBzaXplID0gZW5kaW5ncy0+c2l6ZSgpOwogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsK
ICAgICBmb3IgKHNpemVfdCBsaW5lTnVtYmVyID0gMDsgbGluZU51bWJlciA8IHNpemU7ICsrbGlu
ZU51bWJlcikgewpAQCAtMTAwLDkgKzEwMCw5IEBAIHN0YXRpYyBWZWN0b3I8c3RkOjpwYWlyPGlu
dCwgU3RyaW5nPj4gZ2V0UmVndWxhckV4cHJlc3Npb25NYXRjaGVzQnlMaW5lcyhjb25zdCBKCiAg
ICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVu
ZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0KQorc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+
PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmIHRleHQpCiB7Ci0gICAgT3duUHRyPFZlY3Rvcjxz
aXplX3Q+PiByZXN1bHQoYWRvcHRQdHIobmV3IFZlY3RvcjxzaXplX3Q+KCkpKTsKKyAgICBhdXRv
IHJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8VmVjdG9yPHNpemVfdD4+KCk7CiAKICAgICB1bnNp
Z25lZCBzdGFydCA9IDA7CiAgICAgd2hpbGUgKHN0YXJ0IDwgdGV4dC5sZW5ndGgoKSkgewpAQCAt
MTE1LDcgKzExNSw3IEBAIFBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNv
bnN0IFN0cmluZyYgdGV4dCkKICAgICB9CiAgICAgcmVzdWx0LT5hcHBlbmQodGV4dC5sZW5ndGgo
KSk7CiAKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gcmVzdWx0Owog
fQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpHZW5lcmljVHlw
ZXM6OlNlYXJjaE1hdGNoPiBidWlsZE9iamVjdEZvclNlYXJjaE1hdGNoKGludCBsaW5lTnVtYmVy
LCBjb25zdCBTdHJpbmcmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaAppbmRleCAzZWFhMDY2
NDFjM2RhNTQxYjc5ZGI0YmU0OWQ1N2QyMjA3ZDI3Mzg3Li4yYmMyZDNjN2MwZGQyZGUyZjFjMjJh
M2MyZGI2ZmExMWE2YjMyMmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaApAQCAtNDgsNyArNDgsNyBAQCBK
U19FWFBPUlRfUFJJVkFURSBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIGNyZWF0ZVNlYXJj
aFJlZ2V4KGNvbnN0IFN0cmluZyYgcQogSlNfRVhQT1JUX1BSSVZBVEUgaW50IGNvdW50UmVndWxh
ckV4cHJlc3Npb25NYXRjaGVzKGNvbnN0IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24mLCBj
b25zdCBTdHJpbmcmKTsKIEpTX0VYUE9SVF9QUklWQVRFIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpT
ZWFyY2hNYXRjaD4+IHNlYXJjaEluVGV4dEJ5TGluZXMoY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wgaXNS
ZWdleCk7CiBKU19FWFBPUlRfUFJJVkFURSBUZXh0UG9zaXRpb24gdGV4dFBvc2l0aW9uRnJvbU9m
ZnNldChzaXplX3Qgb2Zmc2V0LCBjb25zdCBWZWN0b3I8c2l6ZV90PiYgbGluZUVuZGluZ3MpOwot
SlNfRVhQT1JUX1BSSVZBVEUgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3Mo
Y29uc3QgU3RyaW5nJik7CitKU19FWFBPUlRfUFJJVkFURSBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9y
PHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYpOwogCiBKU19FWFBPUlRfUFJJVkFU
RSBTdHJpbmcgZmluZFNjcmlwdFNvdXJjZVVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwogSlNf
RVhQT1JUX1BSSVZBVEUgU3RyaW5nIGZpbmRTY3JpcHRTb3VyY2VNYXBVUkwoY29uc3QgU3RyaW5n
JiBjb250ZW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwCmluZGV4IGRiNmY5MTA2
Y2RlNmRhMTZhOGVlY2U5NDViN2Q5YjJlYTQ4OWU3ZWEuLjcyZjYwYzFmMjQyOTc1OGU1ZjczMWY0
MjM0MTgzNzlhYjk1ZmZiZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcApAQCAt
MzYsOCArMzYsNiBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKICNpbmNs
dWRlICJTY3JpcHRPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvQ3VycmVudFRpbWUuaD4KLSNpbmNs
dWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKQEAgLTEzMCw3ICsxMjgsNyBAQCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRk
TWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cAogICAgICAg
ICBjbGVhck1lc3NhZ2VzKCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRkQ29uc29sZU1lc3NhZ2Uo
YWRvcHRQdHIobmV3IENvbnNvbGVNZXNzYWdlKCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwgdHlw
ZSwgbGV2ZWwsIG1lc3NhZ2UsIGNhbGxTdGFjaywgcmVxdWVzdElkZW50aWZpZXIpKSk7CisgICAg
YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oIWlzV29y
a2VyQWdlbnQoKSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1
ZXN0SWRlbnRpZmllcikpOwogfQogCiB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVz
c2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSwgTWVz
c2FnZUxldmVsIGxldmVsLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsIEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGFyZ3VtZW50cywgdW5zaWduZWQgbG9u
ZyByZXF1ZXN0SWRlbnRpZmllcikKQEAgLTE0Myw3ICsxNDEsNyBAQCB2b2lkIEluc3BlY3RvckNv
bnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVz
c2FnZVR5cAogICAgICAgICBjbGVhck1lc3NhZ2VzKCZlcnJvcik7CiAgICAgfQogCi0gICAgYWRk
Q29uc29sZU1lc3NhZ2UoYWRvcHRQdHIobmV3IENvbnNvbGVNZXNzYWdlKCFpc1dvcmtlckFnZW50
KCksIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIGFyZ3VtZW50cywgc3RhdGUsIHJlcXVl
c3RJZGVudGlmaWVyKSkpOworICAgIGFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8
Q29uc29sZU1lc3NhZ2U+KCFpc1dvcmtlckFnZW50KCksIHNvdXJjZSwgdHlwZSwgbGV2ZWwsIG1l
c3NhZ2UsIGFyZ3VtZW50cywgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ug
c291cmNlLCBNZXNzYWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmlu
ZyYgbWVzc2FnZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgdW5zaWduZWQgbGluZU51bWJlciwg
dW5zaWduZWQgY29sdW1uTnVtYmVyLCBKU0M6OkV4ZWNTdGF0ZSogc3RhdGUsIHVuc2lnbmVkIGxv
bmcgcmVxdWVzdElkZW50aWZpZXIpCkBAIC0xNTcsNyArMTU1LDcgQEAgdm9pZCBJbnNwZWN0b3JD
b25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNvbGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXAKICAgICB9CiAKICAgICBib29sIGNhbkdlbmVyYXRlQ2FsbFN0YWNrID0gIWlzV29y
a2VyQWdlbnQoKSAmJiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBhZGRDb25zb2xlTWVzc2Fn
ZShhZG9wdFB0cihuZXcgQ29uc29sZU1lc3NhZ2UoY2FuR2VuZXJhdGVDYWxsU3RhY2ssIHNvdXJj
ZSwgdHlwZSwgbGV2ZWwsIG1lc3NhZ2UsIHNjcmlwdElELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIHN0YXRlLCByZXF1ZXN0SWRlbnRpZmllcikpKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShz
dGQ6Om1ha2VfdW5pcXVlPENvbnNvbGVNZXNzYWdlPihjYW5HZW5lcmF0ZUNhbGxTdGFjaywgc291
cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIFZlY3Rvcjx1bnNpZ25lZD4g
SW5zcGVjdG9yQ29uc29sZUFnZW50Ojpjb25zb2xlTWVzc2FnZUFyZ3VtZW50Q291bnRzKCkgY29u
c3QKQEAgLTIyOSw3ICsyMjcsNyBAQCBzdGF0aWMgYm9vbCBpc0dyb3VwTWVzc2FnZShNZXNzYWdl
VHlwZSB0eXBlKQogICAgICAgICB8fCB0eXBlID09IE1lc3NhZ2VUeXBlOjpFbmRHcm91cDsKIH0K
IAotdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKFBhc3NPd25Q
dHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGVNZXNzYWdlKQordm9pZCBJbnNwZWN0b3JDb25zb2xl
QWdlbnQ6OmFkZENvbnNvbGVNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4g
Y29uc29sZU1lc3NhZ2UpCiB7CiAgICAgQVNTRVJUKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5p
bnNwZWN0b3JFbnZpcm9ubWVudCgpLmRldmVsb3BlckV4dHJhc0VuYWJsZWQoKSk7CiAgICAgQVNT
RVJUX0FSRyhjb25zb2xlTWVzc2FnZSwgY29uc29sZU1lc3NhZ2UpOwpAQCAtMjQwLDcgKzIzOCw3
IEBAIHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRDb25zb2xlTWVzc2FnZShQYXNzT3du
UHRyPENvbnNvbGVNZXNzYWdlPiBjb25zb2xlCiAgICAgICAgICAgICBtX3ByZXZpb3VzTWVzc2Fn
ZS0+dXBkYXRlUmVwZWF0Q291bnRJbkNvbnNvbGUobV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCkp
OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlID0gY29uc29sZU1lc3Nh
Z2UuZ2V0KCk7Ci0gICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChjb25zb2xlTWVzc2Fn
ZSk7CisgICAgICAgIG1fY29uc29sZU1lc3NhZ2VzLmFwcGVuZChzdGQ6Om1vdmUoY29uc29sZU1l
c3NhZ2UpKTsKICAgICAgICAgaWYgKG1fZnJvbnRlbmREaXNwYXRjaGVyICYmIG1fZW5hYmxlZCkK
ICAgICAgICAgICAgIG1fcHJldmlvdXNNZXNzYWdlLT5hZGRUb0Zyb250ZW5kKG1fZnJvbnRlbmRE
aXNwYXRjaGVyLmdldCgpLCBtX2luamVjdGVkU2NyaXB0TWFuYWdlciwgdHJ1ZSk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQ29uc29sZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaAppbmRleCA0OWE3OWU2M2QzOTk4ZmEzOGEwNDExNWJj
YzU4YzdmMTVkMmY4M2EyLi5mODU3ZmM3OGE2YmI0NzhlODI2NGVmOGE1ODc3MDBiZDY4YzhjOGI1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDb25zb2xlQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaApAQCAtODMsMTMgKzgzLDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIGNvdW50KEpTQzo6RXhlY1N0YXRlKiwgUGFzc1JlZlB0cjxTY3JpcHRBcmd1
bWVudHM+KTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2UoUGFzc093
blB0cjxDb25zb2xlTWVzc2FnZT4pOworICAgIHZvaWQgYWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1
bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPik7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JD
b25zb2xlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yQ29uc29sZUJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogICAgIENvbnNvbGVNZXNzYWdlKiBtX3ByZXZpb3VzTWVzc2FnZTsKLSAgICBWZWN0b3I8T3du
UHRyPENvbnNvbGVNZXNzYWdlPj4gbV9jb25zb2xlTWVzc2FnZXM7CisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxDb25zb2xlTWVzc2FnZT4+IG1fY29uc29sZU1lc3NhZ2VzOwogICAgIGludCBt
X2V4cGlyZWRDb25zb2xlTWVzc2FnZUNvdW50OwogICAgIEhhc2hNYXA8U3RyaW5nLCB1bnNpZ25l
ZD4gbV9jb3VudHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIGRvdWJsZT4gbV90aW1lczsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5leHAuaW4KaW5kZXggOWY4OGRiM2RiMTUxNzZhN2ZhN2M3NWJiMmU1NWJjMDg0YjFjZTkw
ZS4uNmYwY2NhNjc5MzQyN2YyMmFiODZiMjc4YjU4NDU1YmFjZDZiZjE5NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5leHAuaW4KQEAgLTI4MzIsNyArMjgzMiw3IEBAIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDI3cmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0RXYKIF9fWk43V2Vi
Q29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDI3c2V0VGltZWxpbmVQcm9maWxpbmdF
bmFibGVkRWIKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDMwY29u
c3RyYWluZWRBdHRhY2hlZFdpbmRvd1dpZHRoRWpqCiBfX1pON1dlYkNvcmUyOEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWwzMWNvbnN0cmFpbmVkQXR0YWNoZWRXaW5kb3dIZWlnaHRFamoKLV9f
Wk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3BlY3Rv
ckNvbnRyb2xsZXJFUE5TXzRQYWdlRU4zV1RGMTBQYXNzT3duUHRySU5TMF84U2V0dGluZ3NFRUUK
K19fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEMyRVBOU18xOUluc3Bl
Y3RvckNvbnRyb2xsZXJFUE5TXzRQYWdlRVN0MTB1bmlxdWVfcHRySU5TXzhTZXR0aW5nc0VTdDE0
ZGVmYXVsdF9kZWxldGVJUzZfRUUKIF9fWk43V2ViQ29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbEQyRXYKIF9fWk43V2ViQ29yZTR0b0pTRVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNE
T01HbG9iYWxPYmplY3RFUE5TXzlET01XaW5kb3dFCiBfX1pON1dlYkNvcmU5RE9NV2luZG93NG9w
ZW5FUktOM1dURjZTdHJpbmdFUktOUzFfMTJBdG9taWNTdHJpbmdFUzRfUlMwX1M4XwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAppbmRleCBmNDA0
YTUyZmViZWYxMTFmODI3OTdiYzFhZGEyMmE5MTdiMGY1MTVhLi4xZTBmYWQzN2ZhNzk4ZjJiYWVi
NzcxMWI3ZjQyMDY0YzkzYWU0ZjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
Q29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtNzQsNyArNzQsNyBAQCBDb21tYW5kTGluZUFQSUhv
c3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCgpCiAgICAgLCBtX2RhdGFiYXNlQWdlbnQobnVsbHB0cikK
ICNlbmRpZgogewotICAgIG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0ID0gYWRvcHRQdHIobmV3
IEluc3BlY3RhYmxlT2JqZWN0KTsKKyAgICBtX2RlZmF1bHRJbnNwZWN0YWJsZU9iamVjdCA9IHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmplY3Q+KCk7CiB9CiAKIENvbW1hbmRMaW5lQVBJ
SG9zdDo6fkNvbW1hbmRMaW5lQVBJSG9zdCgpCkBAIC0xMjQsOSArMTI0LDkgQEAgRGVwcmVjYXRl
ZDo6U2NyaXB0VmFsdWUgQ29tbWFuZExpbmVBUElIb3N0OjpJbnNwZWN0YWJsZU9iamVjdDo6Z2V0
KEpTQzo6RXhlY1N0YXQKICAgICByZXR1cm4gRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIH07
CiAKLXZvaWQgQ29tbWFuZExpbmVBUElIb3N0OjphZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0
cjxDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0PiBvYmplY3QpCit2b2lkIENv
bW1hbmRMaW5lQVBJSG9zdDo6YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6dW5pcXVlX3B0cjxDb21t
YW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2JqZWN0PiBvYmplY3QpCiB7Ci0gICAgbV9pbnNw
ZWN0ZWRPYmplY3RzLmluc2VydCgwLCBvYmplY3QpOworICAgIG1faW5zcGVjdGVkT2JqZWN0cy5p
bnNlcnQoMCwgc3RkOjptb3ZlKG9iamVjdCkpOwogICAgIHdoaWxlIChtX2luc3BlY3RlZE9iamVj
dHMuc2l6ZSgpID4gNSkKICAgICAgICAgbV9pbnNwZWN0ZWRPYmplY3RzLnJlbW92ZUxhc3QoKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhv
c3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaAppbmRl
eCAwOGYwYzE1ZDYxZWMxZjAwMThkODhlZTc3MzgxYWUwZjVkOGM3MmFhLi42MTc4ZWVlYzI4ZTdm
OWRjZDgxZTUwMjViMGNkZDhhYzY3YjY4MGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oCkBAIC05Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKTsK
ICAgICAgICAgdmlydHVhbCB+SW5zcGVjdGFibGVPYmplY3QoKSB7IH0KICAgICB9OwotICAgIHZv
aWQgYWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25QdHI8SW5zcGVjdGFibGVPYmplY3Q+KTsKKyAg
ICB2b2lkIGFkZEluc3BlY3RlZE9iamVjdChzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdGFibGVPYmpl
Y3Q+KTsKICAgICB2b2lkIGNsZWFySW5zcGVjdGVkT2JqZWN0cygpOwogICAgIEluc3BlY3RhYmxl
T2JqZWN0KiBpbnNwZWN0ZWRPYmplY3QodW5zaWduZWQgaW5kZXgpOwogICAgIHZvaWQgaW5zcGVj
dEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3Bl
Y3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gaGludHMpOwpAQCAtMTE1
LDggKzExNSw4IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudCogbV9kYXRh
YmFzZUFnZW50OwogI2VuZGlmCiAKLSAgICBWZWN0b3I8T3duUHRyPEluc3BlY3RhYmxlT2JqZWN0
Pj4gbV9pbnNwZWN0ZWRPYmplY3RzOwotICAgIE93blB0cjxJbnNwZWN0YWJsZU9iamVjdD4gbV9k
ZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbnNw
ZWN0YWJsZU9iamVjdD4+IG1faW5zcGVjdGVkT2JqZWN0czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdGFibGVPYmplY3Q+IG1fZGVmYXVsdEluc3BlY3RhYmxlT2JqZWN0OwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApp
bmRleCA3ZjJmYWI4YmI2ZTcxYWJiODlkMzI5NmNkMjBhMjNiZmY4MGFmOWUzLi5iOTEyZDE0ZWY2
ZDhjZjZlMjQyYjE5ZTU2NDI5NDQ2YWU4YjkxYjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NRWRpdG9yLmNwcApAQCAtOTIsNyArOTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29s
IHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAo
bV9ub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24g
PSBhZG9wdFB0cihuZXcgUmVtb3ZlQ2hpbGRBY3Rpb24obV9ub2RlLT5wYXJlbnROb2RlKCksIG1f
bm9kZS5nZXQoKSkpOworICAgICAgICAgICAgbV9yZW1vdmVDaGlsZEFjdGlvbiA9IHN0ZDo6bWFr
ZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KG1fbm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUu
Z2V0KCkpOwogICAgICAgICAgICAgaWYgKCFtX3JlbW92ZUNoaWxkQWN0aW9uLT5wZXJmb3JtKGVj
KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KQEAgLTExOSw3ICsx
MTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxOb2RlPiBtX3BhcmVudE5vZGU7CiAgICAgUmVm
UHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8Tm9kZT4gbV9hbmNob3JOb2RlOwotICAgIE93
blB0cjxSZW1vdmVDaGlsZEFjdGlvbj4gbV9yZW1vdmVDaGlsZEFjdGlvbjsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVtb3ZlQ2hpbGRBY3Rpb24+IG1fcmVtb3ZlQ2hpbGRBY3Rpb247CiB9OwogCiBj
bGFzcyBET01FZGl0b3I6OlJlbW92ZUF0dHJpYnV0ZUFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JI
aXN0b3J5OjpBY3Rpb24gewpAQCAtMjA4LDggKzIwOCw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBt
X25leHRTaWJsaW5nKG5vZGUubmV4dFNpYmxpbmcoKSkKICAgICAgICAgLCBtX2h0bWwoaHRtbCkK
ICAgICAgICAgLCBtX25ld05vZGUobnVsbHB0cikKLSAgICAgICAgLCBtX2hpc3RvcnkoYWRvcHRQ
dHIobmV3IEluc3BlY3Rvckhpc3RvcnkoKSkpCi0gICAgICAgICwgbV9kb21FZGl0b3IoYWRvcHRQ
dHIobmV3IERPTUVkaXRvcihtX2hpc3RvcnkuZ2V0KCkpKSkKKyAgICAgICAgLCBtX2hpc3Rvcnko
c3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIaXN0b3J5PigpKQorICAgICAgICAsIG1fZG9tRWRp
dG9yKHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPihtX2hpc3RvcnkuZ2V0KCkpKQogICAgIHsK
ICAgICB9CiAKQEAgLTI0Miw4ICsyNDIsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBtX2h0bWw7
CiAgICAgU3RyaW5nIG1fb2xkSFRNTDsKICAgICBOb2RlKiBtX25ld05vZGU7Ci0gICAgT3duUHRy
PEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKLSAgICBPd25QdHI8RE9NRWRpdG9yPiBtX2Rv
bUVkaXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5
OworICAgIHN0ZDo6dW5pcXVlX3B0cjxET01FZGl0b3I+IG1fZG9tRWRpdG9yOwogfTsKIAogY2xh
c3MgRE9NRWRpdG9yOjpSZXBsYWNlV2hvbGVUZXh0QWN0aW9uIDogcHVibGljIEluc3BlY3Rvckhp
c3Rvcnk6OkFjdGlvbiB7CkBAIC0zNTIsMjkgKzM1MiwyOSBAQCBET01FZGl0b3I6On5ET01FZGl0
b3IoKSB7IH0KIAogYm9vbCBET01FZGl0b3I6Omluc2VydEJlZm9yZShOb2RlKiBwYXJlbnROb2Rl
LCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUqIGFuY2hvck5vZGUsIEV4Y2VwdGlvbkNvZGUm
IGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IEluc2Vy
dEJlZm9yZUFjdGlvbihwYXJlbnROb2RlLCBub2RlLCBhbmNob3JOb2RlKSksIGVjKTsKKyAgICBy
ZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8SW5zZXJ0QmVmb3JlQWN0
aW9uPihwYXJlbnROb2RlLCBub2RlLCBhbmNob3JOb2RlKSwgZWMpOwogfQogCiBib29sIERPTUVk
aXRvcjo6cmVtb3ZlQ2hpbGQoTm9kZSogcGFyZW50Tm9kZSwgTm9kZSogbm9kZSwgRXhjZXB0aW9u
Q29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcg
UmVtb3ZlQ2hpbGRBY3Rpb24ocGFyZW50Tm9kZSwgbm9kZSkpLCBlYyk7CisgICAgcmV0dXJuIG1f
aGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJl
bnROb2RlLCBub2RlKSwgZWMpOwogfQogCiBib29sIERPTUVkaXRvcjo6c2V0QXR0cmlidXRlKEVs
ZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwg
RXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9w
dFB0cihuZXcgU2V0QXR0cmlidXRlQWN0aW9uKGVsZW1lbnQsIG5hbWUsIHZhbHVlKSksIGVjKTsK
KyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0cmli
dXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1ZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0
b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50KiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRv
cHRQdHIobmV3IFJlbW92ZUF0dHJpYnV0ZUFjdGlvbihlbGVtZW50LCBuYW1lKSksIGVjKTsKKyAg
ICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQXR0cmli
dXRlQWN0aW9uPihlbGVtZW50LCBuYW1lKSwgZWMpOwogfQogCiBib29sIERPTUVkaXRvcjo6c2V0
T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0cmluZyYgaHRtbCwgTm9kZSoqIG5ld05vZGUs
IEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE93blB0cjxTZXRPdXRlckhUTUxBY3Rpb24+IGFj
dGlvbiA9IGFkb3B0UHRyKG5ldyBTZXRPdXRlckhUTUxBY3Rpb24obm9kZSwgaHRtbCkpOworICAg
IGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUs
IGh0bWwpOwogICAgIFNldE91dGVySFRNTEFjdGlvbiogcmF3QWN0aW9uID0gYWN0aW9uLmdldCgp
OwotICAgIGJvb2wgcmVzdWx0ID0gbV9oaXN0b3J5LT5wZXJmb3JtKGFjdGlvbi5yZWxlYXNlKCks
IGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1vdmUoYWN0
aW9uKSwgZWMpOwogICAgIGlmIChyZXN1bHQpCiAgICAgICAgICpuZXdOb2RlID0gcmF3QWN0aW9u
LT5uZXdOb2RlKCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM4MiwxNyArMzgyLDE3IEBAIGJv
b2wgRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1s
LCBOb2RlKiogbmV3Tm9kZSwgRXhjCiAKIGJvb2wgRE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0
KFRleHQqIHRleHROb2RlLCBjb25zdCBTdHJpbmcmIHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQog
ewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlcGxhY2VXaG9s
ZVRleHRBY3Rpb24odGV4dE5vZGUsIHRleHQpKSwgZWMpOworICAgIHJldHVybiBtX2hpc3Rvcnkt
PnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBsYWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9k
ZSwgdGV4dCksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnJlcGxhY2VDaGlsZChOb2RlKiBw
YXJlbnROb2RlLCBQYXNzUmVmUHRyPE5vZGU+IG5ld05vZGUsIE5vZGUqIG9sZE5vZGUsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIo
bmV3IFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24ocGFyZW50Tm9kZSwgbmV3Tm9kZSwgb2xkTm9kZSkp
LCBlYyk7CisgICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJl
cGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5vZGUsIG5ld05vZGUsIG9sZE5vZGUpLCBlYyk7
CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpzZXROb2RlVmFsdWUoTm9kZSogbm9kZSwgY29uc3QgU3Ry
aW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+
cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0Tm9kZVZhbHVlQWN0aW9uKG5vZGUsIHZhbHVlKSksIGVj
KTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0Tm9k
ZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSksIGVjKTsKIH0KIAogc3RhdGljIHZvaWQgcG9wdWxh
dGVFcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25Db2RlJiBlYywgRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3Vw
cG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApp
bmRleCA5NDNlMThhMWEzYjM3Y2FlMjM5Y2U0MGU2Y2NlM2Q5OGYyNzA3M2RhLi5mNmEzOGM1MDlk
MjU5ZWNiZGRmYjNhMGZjYWU0ZDhhMzJlOGUyYjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAtNjYsNyArNjYsNyBAQCBzdHJ1Y3QgRE9NUGF0
Y2hTdXBwb3J0OjpEaWdlc3QgewogICAgIFN0cmluZyBtX3NoYTE7CiAgICAgU3RyaW5nIG1fYXR0
cnNTSEExOwogICAgIE5vZGUqIG1fbm9kZTsKLSAgICBWZWN0b3I8T3duUHRyPERpZ2VzdD4+IG1f
Y2hpbGRyZW47CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiBtX2NoaWxkcmVu
OwogfTsKIAogdm9pZCBET01QYXRjaFN1cHBvcnQ6OnBhdGNoRG9jdW1lbnQoRG9jdW1lbnQqIGRv
Y3VtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCkKQEAgLTEwNSw4ICsxMDUsOCBAQCB2b2lkIERP
TVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudChjb25zdCBTdHJpbmcmIG1hcmt1cCkKICAgICBw
YXJzZXItPmZpbmlzaCgpOwogICAgIHBhcnNlci0+ZGV0YWNoKCk7CiAKLSAgICBPd25QdHI8RGln
ZXN0PiBvbGRJbmZvID0gY3JlYXRlRGlnZXN0KG1fZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgp
LCBudWxscHRyKTsKLSAgICBPd25QdHI8RGlnZXN0PiBuZXdJbmZvID0gY3JlYXRlRGlnZXN0KG5l
d0RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwgJm1fdW51c2VkTm9kZXNNYXApOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+IG9sZEluZm8gPSBjcmVhdGVEaWdlc3QobV9kb2N1bWVudC0+
ZG9jdW1lbnRFbGVtZW50KCksIG51bGxwdHIpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+
IG5ld0luZm8gPSBjcmVhdGVEaWdlc3QobmV3RG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCAm
bV91bnVzZWROb2Rlc01hcCk7CiAKICAgICBpZiAoIWlubmVyUGF0Y2hOb2RlKG9sZEluZm8uZ2V0
KCksIG5ld0luZm8uZ2V0KCksIElHTk9SRV9FWENFUFRJT04pKSB7CiAgICAgICAgIC8vIEZhbGwg
YmFjayB0byByZXdyaXRlLgpAQCAtMTMzLDEzICsxMzMsMTMgQEAgTm9kZSogRE9NUGF0Y2hTdXBw
b3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIEV4Y2VwdGlv
bkNvZGUKIAogICAgIC8vIENvbXBvc2UgdGhlIG9sZCBsaXN0LgogICAgIENvbnRhaW5lck5vZGUq
IHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGUoKTsKLSAgICBWZWN0b3I8T3duUHRyPERpZ2Vz
dD4+IG9sZExpc3Q7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiBvbGRMaXN0
OwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBwYXJlbnROb2RlLT5maXJzdENoaWxkKCk7IGNoaWxk
OyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKQogICAgICAgICBvbGRMaXN0LmFwcGVuZChj
cmVhdGVEaWdlc3QoY2hpbGQsIG51bGxwdHIpKTsKIAogICAgIC8vIENvbXBvc2UgdGhlIG5ldyBs
aXN0LgogICAgIFN0cmluZyBtYXJrdXBDb3B5ID0gbWFya3VwLmxvd2VyKCk7Ci0gICAgVmVjdG9y
PE93blB0cjxEaWdlc3Q+PiBuZXdMaXN0OworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGln
ZXN0Pj4gbmV3TGlzdDsKICAgICBmb3IgKE5vZGUqIGNoaWxkID0gcGFyZW50Tm9kZS0+Zmlyc3RD
aGlsZCgpOyBjaGlsZCAhPSAmbm9kZTsgY2hpbGQgPSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAg
ICAgICAgbmV3TGlzdC5hcHBlbmQoY3JlYXRlRGlnZXN0KGNoaWxkLCBudWxscHRyKSk7CiAgICAg
Zm9yIChOb2RlKiBjaGlsZCA9IGZyYWdtZW50LT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7CkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBET01QYXRj
aFN1cHBvcnQ6OmlubmVyUGF0Y2hOb2RlKERpZ2VzdCogb2xkRGlnZXN0LCBEaWdlc3QqIG5ld0Rp
Z2VzdCwgRXhjZXAKIH0KIAogc3RkOjpwYWlyPERPTVBhdGNoU3VwcG9ydDo6UmVzdWx0TWFwLCBE
T01QYXRjaFN1cHBvcnQ6OlJlc3VsdE1hcD4KLURPTVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBW
ZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2Vz
dD4+JiBuZXdMaXN0KQorRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxzdGQ6OnVu
aXF1ZV9wdHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8
RGlnZXN0Pj4mIG5ld0xpc3QpCiB7CiAgICAgUmVzdWx0TWFwIG5ld01hcChuZXdMaXN0LnNpemUo
KSk7CiAgICAgUmVzdWx0TWFwIG9sZE1hcChvbGRMaXN0LnNpemUoKSk7CkBAIC0yOTUsNyArMjk1
LDcgQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4m
IG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIKICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIo
b2xkTWFwLCBuZXdNYXApOwogfQogCi1ib29sIERPTVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENo
aWxkcmVuKENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGln
ZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG5ld0xpc3QsIEV4
Y2VwdGlvbkNvZGUmIGVjKQorYm9vbCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJl
bihDb250YWluZXJOb2RlKiBwYXJlbnROb2RlLCBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PERpZ2VzdD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+
JiBuZXdMaXN0LCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBzdGQ6OnBhaXI8UmVzdWx0TWFw
LCBSZXN1bHRNYXA+IHJlc3VsdE1hcHMgPSBkaWZmKG9sZExpc3QsIG5ld0xpc3QpOwogICAgIFJl
c3VsdE1hcCYgb2xkTWFwID0gcmVzdWx0TWFwcy5maXJzdDsKQEAgLTQwNywxMCArNDA3LDkgQEAg
c3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNIQTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3Ry
aW5nKQogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
Y1N0cmluZy5kYXRhKCkpLCBjU3RyaW5nLmxlbmd0aCgpKTsKIH0KIAotUGFzc093blB0cjxET01Q
YXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSog
bm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5vZGVzTWFwKQorc3RkOjp1bmlxdWVfcHRyPERP
TVBhdGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2Rl
KiBub2RlLCBVbnVzZWROb2Rlc01hcCogdW51c2VkTm9kZXNNYXApCiB7Ci0gICAgRGlnZXN0KiBk
aWdlc3QgPSBuZXcgRGlnZXN0KG5vZGUpOwotCisgICAgYXV0byBkaWdlc3QgPSBzdGQ6Om1ha2Vf
dW5pcXVlPERpZ2VzdD4obm9kZSk7CiAgICAgU0hBMSBzaGExOwogCiAgICAgTm9kZTo6Tm9kZVR5
cGUgbm9kZVR5cGUgPSBub2RlLT5ub2RlVHlwZSgpOwpAQCAtNDIxLDEwICs0MjAsMTAgQEAgUGFz
c093blB0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVE
aWdlc3QoTm9kZSogbm9kZSwgVW4KICAgICBpZiAobm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpF
TEVNRU5UX05PREUpIHsKICAgICAgICAgTm9kZSogY2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7
CiAgICAgICAgIHdoaWxlIChjaGlsZCkgewotICAgICAgICAgICAgT3duUHRyPERpZ2VzdD4gY2hp
bGRJbmZvID0gY3JlYXRlRGlnZXN0KGNoaWxkLCB1bnVzZWROb2Rlc01hcCk7CisgICAgICAgICAg
ICBzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0PiBjaGlsZEluZm8gPSBjcmVhdGVEaWdlc3QoY2hpbGQs
IHVudXNlZE5vZGVzTWFwKTsKICAgICAgICAgICAgIGFkZFN0cmluZ1RvU0hBMShzaGExLCBjaGls
ZEluZm8tPm1fc2hhMSk7CiAgICAgICAgICAgICBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
OwotICAgICAgICAgICAgZGlnZXN0LT5tX2NoaWxkcmVuLmFwcGVuZChjaGlsZEluZm8ucmVsZWFz
ZSgpKTsKKyAgICAgICAgICAgIGRpZ2VzdC0+bV9jaGlsZHJlbi5hcHBlbmQoc3RkOjptb3ZlKGNo
aWxkSW5mbykpOwogICAgICAgICB9CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1l
bnQobm9kZSk7CiAKQEAgLTQ0NSw4ICs0NDQsOSBAQCBQYXNzT3duUHRyPERPTVBhdGNoU3VwcG9y
dDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlKiBub2RlLCBVbgog
ICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7CiAgICAgZGlnZXN0LT5tX3NoYTEgPSBiYXNlNjRF
bmNvZGUoaGFzaC5kYXRhKCksIDEwKTsKICAgICBpZiAodW51c2VkTm9kZXNNYXApCi0gICAgICAg
IHVudXNlZE5vZGVzTWFwLT5hZGQoZGlnZXN0LT5tX3NoYTEsIGRpZ2VzdCk7Ci0gICAgcmV0dXJu
IGFkb3B0UHRyKGRpZ2VzdCk7CisgICAgICAgIHVudXNlZE5vZGVzTWFwLT5hZGQoZGlnZXN0LT5t
X3NoYTEsIGRpZ2VzdC5nZXQoKSk7CisKKyAgICByZXR1cm4gZGlnZXN0OwogfQogCiBib29sIERP
TVBhdGNoU3VwcG9ydDo6aW5zZXJ0QmVmb3JlQW5kTWFya0FzVXNlZChDb250YWluZXJOb2RlKiBw
YXJlbnROb2RlLCBEaWdlc3QqIGRpZ2VzdCwgTm9kZSogYW5jaG9yLCBFeGNlcHRpb25Db2RlJiBl
YykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaAppbmRleCBhZDU0
NDg0ODc2NGRiNzljNWJiMDkyY2U3ZDFmY2I0ODdhMTFmYjRhLi42YTk2MGU4NWRlZjU3NjJmMWUy
MjJlYjY2N2M2MTkyMTQzMDcyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvRE9NUGF0Y2hTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBh
dGNoU3VwcG9ydC5oCkBAIC0zNCw4ICszNCw2IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKQEAgLTY1LDkgKzYzLDkgQEAgcHJpdmF0ZToK
ICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBEaWdlc3QqPiBVbnVzZWROb2Rlc01hcDsKIAog
ICAgIGJvb2wgaW5uZXJQYXRjaE5vZGUoRGlnZXN0KiBvbGROb2RlLCBEaWdlc3QqIG5ld05vZGUs
IEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGQ6OnBhaXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IGRp
ZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgb2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3Rv
cjxPd25QdHI8RGlnZXN0Pj4mIG5ld0NoaWxkcmVuKTsKLSAgICBib29sIGlubmVyUGF0Y2hDaGls
ZHJlbihDb250YWluZXJOb2RlKiwgY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiYgb2xkQ2hp
bGRyZW4sIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG5ld0NoaWxkcmVuLCBFeGNlcHRp
b25Db2RlJik7Ci0gICAgUGFzc093blB0cjxEaWdlc3Q+IGNyZWF0ZURpZ2VzdChOb2RlKiwgVW51
c2VkTm9kZXNNYXAqKTsKKyAgICBzdGQ6OnBhaXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IGRpZmYo
Y29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiYgb2xkQ2hpbGRyZW4sIGNvbnN0
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4mIG5ld0NoaWxkcmVuKTsKKyAgICBib29s
IGlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlKiwgY29uc3QgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxEaWdlc3Q+PiYgb2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9w
dHI8RGlnZXN0Pj4mIG5ld0NoaWxkcmVuLCBFeGNlcHRpb25Db2RlJik7CisgICAgc3RkOjp1bmlx
dWVfcHRyPERpZ2VzdD4gY3JlYXRlRGlnZXN0KE5vZGUqLCBVbnVzZWROb2Rlc01hcCopOwogICAg
IGJvb2wgaW5zZXJ0QmVmb3JlQW5kTWFya0FzVXNlZChDb250YWluZXJOb2RlKiwgRGlnZXN0Kiwg
Tm9kZSogYW5jaG9yLCBFeGNlcHRpb25Db2RlJik7CiAgICAgYm9vbCByZW1vdmVDaGlsZEFuZE1v
dmVUb05ldyhEaWdlc3QqLCBFeGNlcHRpb25Db2RlJik7CiAgICAgdm9pZCBtYXJrTm9kZUFzVXNl
ZChEaWdlc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaAppbmRleCA1MmQ4ZTBlZGU1ZDU1YzUyMzhiY2Q2
MjdkZTE5NWY2NWE2MGVhZWRhLi5hOWM3NjQyODg3MTI1ZDdjYjcwZGE1MGE5MjQ1OTcxNjFmM2Y4
ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGlj
YXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJv
bnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5z
cGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDkzMzliYmE3ZmZlMGYw
NzJiYjdjMGUzN2NiYzEzZmZlZjQ4NWU4OWIuLmJkYzJjOWM3Zjk5MjA3ZTMxNGMxMTk5NGIzYjYz
Y2U2ZjBmN2NlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHZvaWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFz
azo6dGltZXJGaXJlZChUaW1lcjxVcGRhdGVSZWdpb25MYXlvdXRUYXNrPiYpCiAgICAgaWYgKCFt
X25hbWVkRmxvd3MuaXNFbXB0eSgpICYmICFtX3RpbWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1f
dGltZXIuc3RhcnRPbmVTaG90KDApOwogfQotICAgIAorCiBjbGFzcyBDaGFuZ2VSZWdpb25PdmVy
c2V0VGFzayB7CiBwdWJsaWM6CiAgICAgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2soSW5zcGVjdG9y
Q1NTQWdlbnQqKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1bnNjaGVk
dWxlKFdlYktpdE5hbWVkRmxvdyopOwogICAgIHZvaWQgcmVzZXQoKTsKICAgICB2b2lkIHRpbWVy
RmlyZWQoVGltZXI8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+Jik7Ci0gICAgCisKIHByaXZhdGU6
CiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1fY3NzQWdlbnQ7CiAgICAgVGltZXI8Q2hhbmdlUmVn
aW9uT3ZlcnNldFRhc2s+IG1fdGltZXI7CkBAIC0xODksNyArMTg5LDcgQEAgQ2hhbmdlUmVnaW9u
T3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrKEluc3BlY3RvckNTU0FnZW50KiBj
c3NBZ2VudCkKIHZvaWQgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OnNjaGVkdWxlRm9yKFdlYktp
dE5hbWVkRmxvdyogbmFtZWRGbG93LCBpbnQgZG9jdW1lbnROb2RlSWQpCiB7CiAgICAgbV9uYW1l
ZEZsb3dzLmFkZChuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKLSAgICAKKwogICAgIGlmICgh
bV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBtX3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0K
QEAgLTI2Niw3ICsyNjYsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiU2V0U3R5bGVTaGVldFRleHQgJXMiLCBtX3N0eWxlU2hlZXQtPmlkKCkudXRmOCgpLmRhdGEo
KSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NPd25QdHI8QWN0aW9uPiBh
Y3Rpb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxB
Y3Rpb24+IGFjdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVChhY3Rpb24tPm1l
cmdlSWQoKSA9PSBtZXJnZUlkKCkpOwogCkBAIC0zMTAsNyArMzEwLDcgQEAgcHVibGljOgogICAg
ICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlNldFN0eWxlVGV4dCAlczoldSIsIG1fc3R5bGVT
aGVldC0+aWQoKS51dGY4KCkuZGF0YSgpLCBtX2Nzc0lkLm9yZGluYWwoKSk7CiAgICAgfQogCi0g
ICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRl
CisgICAgdmlydHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikg
b3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVChhY3Rpb24tPm1lcmdlSWQoKSA9PSBtZXJn
ZUlkKCkpOwogCkBAIC0zNjksNyArMzY5LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3Ry
aW5nOjpmb3JtYXQoIlNldFByb3BlcnR5VGV4dCAlczoldTolcyIsIG1fc3R5bGVTaGVldC0+aWQo
KS51dGY4KCkuZGF0YSgpLCBtX3Byb3BlcnR5SW5kZXgsIG1fb3ZlcndyaXRlID8gInRydWUiIDog
ImZhbHNlIik7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NPd25QdHI8QWN0
aW9uPiBhY3Rpb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVl
X3B0cjxBY3Rpb24+IGFjdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VSVChhY3Rp
b24tPm1lcmdlSWQoKSA9PSBtZXJnZUlkKCkpOwogCkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5hbWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQs
IFdlYktpdE5hbWVkRmxvdyoKIAogICAgIGlmIChtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2spCiAg
ICAgICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzay0+dW5zY2hlZHVsZShuYW1lZEZsb3cpOwot
ICAgIAorCiAgICAgaWYgKG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2spCiAgICAgICAgIG1fY2hh
bmdlUmVnaW9uT3ZlcnNldFRhc2stPnVuc2NoZWR1bGUobmFtZWRGbG93KTsKIApAQCAtNTk2LDcg
KzU5Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dChE
b2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvCiAgICAgICAgIHJldHVybjsKIAogICAg
IGlmICghbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrKQotICAgICAgICBtX3VwZGF0ZVJlZ2lvbkxh
eW91dFRhc2sgPSBhZG9wdFB0cihuZXcgVXBkYXRlUmVnaW9uTGF5b3V0VGFzayh0aGlzKSk7Cisg
ICAgICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzayA9IHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRl
UmVnaW9uTGF5b3V0VGFzaz4odGhpcyk7CiAgICAgbV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5z
Y2hlZHVsZUZvcihuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKIH0KIApAQCAtNjE2LDkgKzYx
Niw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9j
dW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZsCiAgICAgaW50IGRvY3VtZW50Tm9kZUlkID0g
ZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dzSWQoZG9jdW1lbnQpOwogICAgIGlmICghZG9j
dW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIGlmICghbV9jaGFuZ2VS
ZWdpb25PdmVyc2V0VGFzaykKLSAgICAgICAgbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzayA9IGFk
b3B0UHRyKG5ldyBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayh0aGlzKSk7CisgICAgICAgIG1fY2hh
bmdlUmVnaW9uT3ZlcnNldFRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPENoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrPih0aGlzKTsKICAgICBtX2NoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrLT5zY2hlZHVsZUZv
cihuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsKIH0KIApAQCAtNjI2LDEwICs2MjYsMTAgQEAg
dm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9uT3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRG
bG93KiBuYW1lZEZsb3csIGludCBkb2MKIHsKICAgICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUo
KSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0ZU51bGwpCiAgICAgICAgIHJldHVybjsKLSAg
ICAKKwogICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwogICAgIFJlZjxXZWJLaXROYW1lZEZs
b3c+IHByb3RlY3QoKm5hbWVkRmxvdyk7Ci0gICAgCisKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+cmVnaW9uT3ZlcnNldENoYW5nZWQoYnVpbGRPYmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3Ry
aW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKSk7CiB9CiAKQEAgLTgwMyw3ICs4MDMsNyBA
QCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAKICAgICBFeGNlcHRp
b25Db2RlIGVjID0gMDsKLSAgICBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQ
dHIobmV3IFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uKGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQp
KSwgZWMpOworICAgIG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5p
cXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihpbnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSwg
ZWMpOwogICAgICplcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5n
KGVjKTsKIH0KIApAQCAtODE3LDcgKzgxNyw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNl
dFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwCiAg
ICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIGJvb2wgc3Vj
Y2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0U3R5
bGVUZXh0QWN0aW9uKGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHRleHQpKSwgZWMp
OworICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6
Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29t
cG91bmRJZCwgdGV4dCksIGVjKTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgcmVzdWx0ID0g
aW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShpbnNwZWN0b3JTdHlsZVNo
ZWV0LT5zdHlsZUZvcklkKGNvbXBvdW5kSWQpKTsKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0
b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlUZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgY29uc3QgUmVmUHRyPEkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3Jt
KGFkb3B0UHRyKG5ldyBTZXRQcm9wZXJ0eVRleHRBY3Rpb24oaW5zcGVjdG9yU3R5bGVTaGVldCwg
Y29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgdGV4dCwgb3ZlcndyaXRlKSksIGVjKTsKKyAgICBi
b29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3Vu
aXF1ZTxTZXRQcm9wZXJ0eVRleHRBY3Rpb24+KGluc3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5k
SWQsIHByb3BlcnR5SW5kZXgsIHRleHQsIG92ZXJ3cml0ZSksIGVjKTsKICAgICBpZiAoc3VjY2Vz
cykKICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JT
dHlsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5zdHlsZUZvcklkKGNvbXBvdW5kSWQpKTsKICAgICAq
ZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CkBAIC04
NDksNyArODQ5LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW4KICAgICAgICAgcmV0dXJuOwog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2Vu
dC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBUb2dnbGVQcm9wZXJ0eUFjdGlvbihp
bnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElkLCBwcm9wZXJ0eUluZGV4LCBkaXNhYmxlKSks
IGVjKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0o
c3RkOjptYWtlX3VuaXF1ZTxUb2dnbGVQcm9wZXJ0eUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVl
dCwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgZGlzYWJsZSksIGVjKTsKICAgICBpZiAoc3Vj
Y2VzcykKICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RG
b3JTdHlsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5zdHlsZUZvcklkKGNvbXBvdW5kSWQpKTsKICAg
ICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CkBA
IC04NjUsNyArODY1LDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9y
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9kb21B
Z2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBTZXRSdWxlU2VsZWN0b3JBY3Rp
b24oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpKSwgZWMpOworICAg
IGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2Vf
dW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91
bmRJZCwgc2VsZWN0b3IpLCBlYyk7CiAKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgcmVzdWx0
ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JSdWxlKGluc3BlY3RvclN0eWxl
U2hlZXQtPnJ1bGVGb3JJZChjb21wb3VuZElkKSk7CkBAIC04ODUsOSArODg1LDkgQEAgdm9pZCBJ
bnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IGludCBjb250ZXh0Tm9kZUkKICAgICB9CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBPd25QdHI8QWRkUnVsZUFjdGlvbj4gYWN0aW9uID0gYWRvcHRQdHIobmV3IEFkZFJ1bGVBY3Rp
b24oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpKTsKKyAgICBhdXRvIGFjdGlvbiA9IHN0
ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0
b3IpOwogICAgIEFkZFJ1bGVBY3Rpb24qIHJhd0FjdGlvbiA9IGFjdGlvbi5nZXQoKTsKLSAgICBi
b29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oYWN0aW9uLnJlbGVh
c2UoKSwgZWMpOworICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVy
Zm9ybShzdGQ6Om1vdmUoYWN0aW9uKSwgZWMpOwogICAgIGlmICghc3VjY2VzcykgewogICAgICAg
ICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0Fn
ZW50LmgKaW5kZXggMTBiNGZlOTFmODI5MGE0NzNlZTg0NmE0MzljYmI2Nzg3ZGIxMTViOS4uMjBi
M2MxNTA3NTk4OTk3ODgzMzljOTM2MjQ5MGZiNTAyMWY5ZmQzMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKQEAgLTE4MSw4ICsxODEsOCBAQCBwcml2
YXRlOgogICAgIERvY3VtZW50VG9WaWFJbnNwZWN0b3JTdHlsZVNoZWV0IG1fZG9jdW1lbnRUb0lu
c3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgTm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZSBtX25vZGVJ
ZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAgICAgSGFzaFNldDxpbnQ+IG1fbmFtZWRGbG93Q29sbGVj
dGlvbnNSZXF1ZXN0ZWQ7Ci0gICAgT3duUHRyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdXBk
YXRlUmVnaW9uTGF5b3V0VGFzazsKLSAgICBPd25QdHI8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+
IG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZVJl
Z2lvbkxheW91dFRhc2s+IG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+IG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7
CiAKICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElkOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggYTlhMzhlMjM3YmY1YjA4YThi
OWU5MDAyYjRjMTliZTZmMTkwODIwNC4uZmJlMzJjMjNmZDdjNTFhY2QxNTNhM2E2ODMxODhmOWNm
ZGM2ODM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0FnZW50LmgKQEAgLTM5LDcgKzM5LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVp
bGRlcnMuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCA5MDNkN2Q1ZjEwMzJkMzQw
NmY0YzJjZmRmOTY0N2UxZDM0NDliNzdiLi4xMWRjMjM5NDJlYzg3OTBiMDQ2NjVjMjM0Zjc1ZTcz
YTRlMTFhYzJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01B
Z2VudC5jcHAKQEAgLTk2LDcgKzk2LDYgQEAKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8cnVudGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9XVEZTdHJpbmcuaD4KQEAgLTIzNiw4ICsyMzUsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9u
dGVuZAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0
b3JET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5k
RGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTUJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2Vu
ZERpc3BhdGNoZXIsIHRoaXMpOwogCi0gICAgbV9oaXN0b3J5ID0gYWRvcHRQdHIobmV3IEluc3Bl
Y3Rvckhpc3RvcnkoKSk7Ci0gICAgbV9kb21FZGl0b3IgPSBhZG9wdFB0cihuZXcgRE9NRWRpdG9y
KG1faGlzdG9yeS5nZXQoKSkpOworICAgIG1faGlzdG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5z
cGVjdG9ySGlzdG9yeT4oKTsKKyAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9N
RWRpdG9yPihtX2hpc3RvcnkuZ2V0KCkpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5z
ZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKICAgICBtX2RvY3VtZW50ID0gbV9wYWdlQWdlbnQt
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwpAQCAtMjUxLDggKzI1MCw4IEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nv
bm5lY3RSZWFzb24pCiAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1f
YmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAotICAgIG1faGlzdG9yeS5jbGVhcigpOwotICAg
IG1fZG9tRWRpdG9yLmNsZWFyKCk7CisgICAgbV9oaXN0b3J5LnJlc2V0KCk7CisgICAgbV9kb21F
ZGl0b3IucmVzZXQoKTsKIAogICAgIEVycm9yU3RyaW5nIGVycm9yOwogICAgIHNldFNlYXJjaGlu
Z0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CkBAIC01ODQsNyArNTgzLDcgQEAgaW50IEluc3Bl
Y3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zyb250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAg
ICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVyUGFyZW50Tm9kZShub2RlKTsKICAgICAgICAgaWYg
KCFwYXJlbnQpIHsKICAgICAgICAgICAgIC8vIE5vZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFjaGVk
IC0+IHB1c2ggc3VidHJlZSByb290LgotICAgICAgICAgICAgT3duUHRyPE5vZGVUb0lkTWFwPiBu
ZXdNYXAgPSBhZG9wdFB0cihuZXcgTm9kZVRvSWRNYXApOworICAgICAgICAgICAgYXV0byBuZXdN
YXAgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lkTWFwPigpOwogICAgICAgICAgICAgZGFuZ2xp
bmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAgICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBz
LmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKICAgICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBj
aGlsZHJlbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwpAQCAtMTAzMiwxNCArMTAzMSwxNCBAQCB2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgYm9vbCBlbmFibAogICAgIG1fb3ZlcmxheS0+ZGlkU2V0U2VhcmNoaW5nRm9yTm9k
ZShtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi1QYXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4g
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJy
b3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rv
ck9iamVjdCkKK3N0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpCiB7CiAg
ICAgaWYgKCFoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpIHsKICAgICAgICAgKmVycm9yU3RyaW5n
ID0gIkludGVybmFsIGVycm9yOiBoaWdobGlnaHQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaXMg
bWlzc2luZyI7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAgIE93blB0cjxI
aWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRD
b25maWcoKSk7CisgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhp
Z2hsaWdodENvbmZpZz4oKTsKICAgICBib29sIHNob3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6
IGZhbHNlIChkbyBub3Qgc2hvdyBhIHRvb2x0aXApLgogICAgIGhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdC0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCAmc2hvd0luZm8pOwogICAgIGhpZ2hsaWdodENv
bmZpZy0+c2hvd0luZm8gPSBzaG93SW5mbzsKQEAgLTEwNTEsNyArMTA1MCw3IEBAIFBhc3NPd25Q
dHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJv
bUluc3BlY3Rvck9iamVjCiAgICAgaGlnaGxpZ2h0Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VDb25m
aWdDb2xvcigicGFkZGluZ0NvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKICAgICBo
aWdobGlnaHRDb25maWctPmJvcmRlciA9IHBhcnNlQ29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwg
aGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKICAgICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9
IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0
KTsKLSAgICByZXR1cm4gaGlnaGxpZ2h0Q29uZmlnLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaGln
aGxpZ2h0Q29uZmlnOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9k
ZUVuYWJsZWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGlnaHRDb25maWcpCkBAIC0xMDYxLDI3ICsxMDYw
LDI3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGJvb2wgZW5hCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29v
cmRpbmF0ZXMpCiB7Ci0gICAgT3duUHRyPEZsb2F0UXVhZD4gcXVhZCA9IGFkb3B0UHRyKG5ldyBG
bG9hdFF1YWQoRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKSk7Ci0gICAgaW5uZXJIaWdo
bGlnaHRRdWFkKHF1YWQucmVsZWFzZSgpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29v
cmRpbmF0ZXMpOworICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihG
bG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkpOworICAgIGlubmVySGlnaGxpZ2h0UXVhZChz
dGQ6Om1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBxdWFkQXJyYXksIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQog
ewotICAgIE93blB0cjxGbG9hdFF1YWQ+IHF1YWQgPSBhZG9wdFB0cihuZXcgRmxvYXRRdWFkKCkp
OworICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPigpOwogICAgIGlm
ICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5nZXQoKSkpIHsKICAgICAgICAgKmVycm9yU3Ry
aW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IGlubmVySGlnaGxpZ2h0UXVhZChxdWFkLnJlbGVhc2UoKSwgY29sb3IsIG91dGxpbmVDb2xvciwg
dXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjptb3ZlKHF1
YWQpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogfQogCi12b2lk
IEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hsaWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1
YWQ+IHF1YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0
ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwg
Y29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIE93blB0cjxIaWdobGlnaHRD
b25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25maWcoKSk7
CisgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENv
bmZpZz4oKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9y
KTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRs
aW5lQ29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZpZy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNl
UGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29yZGluYXRlcyA6IGZhbHNlOwotICAgIG1fb3Zl
cmxheS0+aGlnaGxpZ2h0UXVhZChxdWFkLCAqaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBtX292ZXJs
YXktPmhpZ2hsaWdodFF1YWQoc3RkOjptb3ZlKHF1YWQpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0K
IAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBoaWdobGlnaHRJbnNwZWN0
b3JPYmplY3QsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKQpAQCAt
MTA5OSw3ICsxMDk4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnMKICAgICBpZiAoIW5vZGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdo
dENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoZXJyb3JTdHJpbmcs
IGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC5nZXQoKSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhp
Z2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3Bl
Y3Rvck9iamVjdChlcnJvclN0cmluZywgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LmdldCgpKTsK
ICAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykKICAgICAgICAgcmV0dXJuOwogCkBAIC0xMTE0LDcg
KzExMTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSgKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZnJhbWVGb3JJZChmcmFtZUlkKTsKICAgICBp
ZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7Ci0gICAgICAgIE93blB0cjxIaWdo
bGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25m
aWcoKSk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxI
aWdobGlnaHRDb25maWc+KCk7CiAgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0
cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBmb3IgZnJhbWVzLgogICAgICAgICBoaWdobGln
aHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKQEAgLTE2
NDIsNyArMTY0MSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHls
ZUF0dHIoTm9kZSogbm9kZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrKQotICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gYWRv
cHRQdHIobmV3IFJldmFsaWRhdGVTdHlsZUF0dHJpYnV0ZVRhc2sodGhpcykpOworICAgICAgICBt
X3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gc3RkOjptYWtlX3VuaXF1ZTxSZXZhbGlkYXRlU3R5
bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5z
Y2hlZHVsZUZvcih0b0VsZW1lbnQobm9kZSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IGZhNDFjN2ZhNTUyMjY5OTgyMDBlNWExOTFm
ZGY1ODZhNjI2MGQ0YTUuLjdkMzNiYmU4YWYzNzc4MjIxZjAzMmQ0ZjBlNGU1MWU2NGZjMTZlZjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC00
MSw4ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+
CkBAIC0yMTMsNyArMjExLDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIHZvaWQgc2V0U2Vh
cmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7Ci0gICAgUGFzc093blB0cjxIaWdobGlnaHRD
b25maWc+IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqLCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5z
cGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4K
ICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAt
MjQxLDcgKzIzOSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwog
Ci0gICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1
c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIHZvaWQgaW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5p
cXVlX3B0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0
bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogCiAgICAgSW5zcGVj
dG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0
TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CkBAIC0yNTMsNyArMjUxLDcgQEAgcHJp
dmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBCYWNrZW5kTm9kZUlkPiBO
b2RlVG9CYWNrZW5kSWRNYXA7CiAgICAgSGFzaE1hcDxTdHJpbmcsIE5vZGVUb0JhY2tlbmRJZE1h
cD4gbV9ub2RlR3JvdXBUb0JhY2tlbmRJZE1hcDsKICAgICAvLyBPd25zIG5vZGUgbWFwcGluZ3Mg
Zm9yIGRhbmdsaW5nIG5vZGVzLgotICAgIFZlY3RvcjxPd25QdHI8Tm9kZVRvSWRNYXA+PiBtX2Rh
bmdsaW5nTm9kZVRvSWRNYXBzOworICAgIFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVRvSWRN
YXA+PiBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzOwogICAgIEhhc2hNYXA8aW50LCBOb2RlKj4gbV9p
ZFRvTm9kZTsKICAgICBIYXNoTWFwPGludCwgTm9kZVRvSWRNYXAqPiBtX2lkVG9Ob2Rlc01hcDsK
ICAgICBIYXNoU2V0PGludD4gbV9jaGlsZHJlblJlcXVlc3RlZDsKQEAgLTI2MywxMiArMjYxLDEy
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWZQdHI8Tm9kZT4+PiBTZWFyY2hSZXN1bHRzOwog
ICAgIFNlYXJjaFJlc3VsdHMgbV9zZWFyY2hSZXN1bHRzOwotICAgIE93blB0cjxSZXZhbGlkYXRl
U3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrOworICAgIHN0ZDo6
dW5pcXVlX3B0cjxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHls
ZUF0dHJUYXNrOwogICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJvb2wgbV9z
ZWFyY2hpbmdGb3JOb2RlOwotICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IG1faW5zcGVjdE1v
ZGVIaWdobGlnaHRDb25maWc7Ci0gICAgT3duUHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9y
eTsKLSAgICBPd25QdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9w
dHI8SGlnaGxpZ2h0Q29uZmlnPiBtX2luc3BlY3RNb2RlSGlnaGxpZ2h0Q29uZmlnOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JIaXN0b3J5PiBtX2hpc3Rvcnk7CisgICAgc3RkOjp1bmlx
dWVfcHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7CiAgICAgYm9vbCBtX3N1cHByZXNzQXR0cmli
dXRlTW9kaWZpZWRFdmVudDsKICAgICBib29sIG1fZG9jdW1lbnRSZXF1ZXN0ZWQ7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmgKaW5kZXggZWJlMjY2NTBhZGI2ZmFjYjhkZWYwNzM3NTkzNGEyYmU5M2VlZDgwMi4uZmI4Zjc5
ODYyZGYwODg1ZjQ5Mzg3OTM3NTc1NTc2MDA0NGIzY2NmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0zNyw3ICsz
Nyw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5j
bHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQu
aAppbmRleCA1YWQyYjdlMTFmNGQwOTlmZDIyZWVmMzNmMGZlYzZiMjgzYzBiZTg2Li5mN2RhZDMy
ODRiYjg0ZDI1Y2EzNGE5MWRjYmU4NmY0Yzk1MDJmMGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC0zMyw3ICszMyw2
IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVk
ZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggMzIyOTYwNzU3YzNiNDljYTY0NDQ5M2RjNGM5Y2FhYjEz
NmE3YzdlYi4uNDVkZGRjNGU4NWIwNWRkYjFmOGQ1ZTk2NjYxYjY5N2ZmOGQzOThkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBA
IC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJz
LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5jcHAKaW5kZXggNGU4NWJjNTMyOTk1ZWQ1ZGRhOTQ5Njg2YzRkYjZhZDBkZWE5ZjhkMC4u
YmYxNzkxODQ4YmIxYmM0ODhhNjE3MzM1NTNjZGNiOTU2YTJkMTMyOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcApAQCAtMTE2LDE1ICsxMTYsMTUgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsOjpTZXR0aW5nczo6c2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiwgY29uc3QgU3QKIHsKIH0K
IAotSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9u
dGVuZFBhZ2UsIFBhc3NPd25QdHI8U2V0dGluZ3M+IHNldHRpbmdzKQorSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250
cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5p
cXVlX3B0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCiAgICAgOiBtX2luc3BlY3RvckNvbnRyb2xsZXIo
aW5zcGVjdG9yQ29udHJvbGxlcikKICAgICAsIG1fZnJvbnRlbmRQYWdlKGZyb250ZW5kUGFnZSkK
LSAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCisgICAgLCBtX3NldHRpbmdzKHN0ZDo6bW92ZShz
ZXR0aW5ncykpCiAgICAgLCBtX2Zyb250ZW5kTG9hZGVkKGZhbHNlKQogICAgICwgbV9kb2NrU2lk
ZShVTkRPQ0tFRCkKIHsKICAgICBtX2Zyb250ZW5kUGFnZS0+c2V0dGluZ3MoKS5zZXRBbGxvd0Zp
bGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7Ci0gICAgbV9kaXNwYXRjaFRhc2sgPSBhZG9wdFB0
cihuZXcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoVGFzayhpbnNwZWN0b3JDb250cm9sbGVyKSk7
CisgICAgbV9kaXNwYXRjaFRhc2sgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckJhY2tlbmRE
aXNwYXRjaFRhc2s+KGluc3BlY3RvckNvbnRyb2xsZXIpOwogfQogCiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsOjp+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
aAppbmRleCBlZDJjZmIxMGQwYzA5YTNmMDI2OGNlMTZjM2ZhMmY4ZmU3Nzc5M2E5Li4yZjYzN2Iw
ZjI2MGU1YjhkMWNmNWU5NzVhZjBkZjRlMTdlNjZhMTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmgKQEAgLTU1
LDkgKzU1LDkgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHkoY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIHZhbHVlKTsKICAgICB9OwogCi0gICAgSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250cm9sbGVyKiwgUGFnZSosIFBh
c3NPd25QdHI8U2V0dGluZ3M+KTsKKyAgICBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKElu
c3BlY3RvckNvbnRyb2xsZXIqLCBQYWdlKiwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAg
ICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgpOwotICAgIAorCiAgICAg
dmlydHVhbCB2b2lkIHdpbmRvd09iamVjdENsZWFyZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlkZTsKIApAQCAtOTgsNyArOTgsNyBAQCBwdWJs
aWM6CiAgICAgdm9pZCBzaG93Q29uc29sZSgpOwogCiAgICAgdm9pZCBzaG93TWFpblJlc291cmNl
Rm9yRnJhbWUoRnJhbWUqKTsKLSAgICAKKwogICAgIHZvaWQgc2hvd1Jlc291cmNlcygpOwogCiAg
ICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvdyhEb2NrU2lkZSk7CkBAIC0xMTcsMTEgKzExNywxMSBA
QCBwcml2YXRlOgogICAgIFBhZ2UqIG1fZnJvbnRlbmRQYWdlOwogICAgIC8vIFRPRE8oeXVyeXMp
OiB0aGlzIHJlZiBzaG91bGRuJ3QgYmUgbmVlZGVkLgogICAgIFJlZlB0cjxJbnNwZWN0b3JGcm9u
dGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OwotICAgIE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsOjpTZXR0aW5ncz4gbV9zZXR0aW5nczsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgYm9v
bCBtX2Zyb250ZW5kTG9hZGVkOwogICAgIERvY2tTaWRlIG1fZG9ja1NpZGU7CiAgICAgVmVjdG9y
PFN0cmluZz4gbV9ldmFsdWF0ZU9uTG9hZDsKLSAgICBPd25QdHI8SW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoVGFzaz4gbV9kaXNwYXRjaFRhc2s7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rv
ckJhY2tlbmREaXNwYXRjaFRhc2s+IG1fZGlzcGF0Y2hUYXNrOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckhlYXBQcm9maWxlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SGVhcFByb2ZpbGVyQWdlbnQuaAppbmRleCBmNjBjZWJhNmE3YjdlOTdhNDhjYmM1MDhkMGNjODVi
NDdjM2Q1OGNjLi4xYmNhNzkwMmNmNzZjYThmN2UxZmFmNjA1MmU2ZTM1NWMwNjI4MjYyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuaApAQCAtMzksNyArMzksNiBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySGlzdG9yeS5jcHAKaW5kZXggYmNmZWY0YTRiNWM3N2MyZDJhNTJkMDY2MjFjNmFkNGVmMDlk
NDVkMC4uODczYThmOTViNGZmNjI4MzA4NjRjYmUyZWJlMDU2NzZlMGQ5M2NiNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmNwcApAQCAtNzksNyArNzks
NyBAQCBTdHJpbmcgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uOjptZXJnZUlkKCkKICAgICByZXR1
cm4gIiI7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGlzdG9yeTo6QWN0aW9uOjptZXJnZShQYXNzT3du
UHRyPEFjdGlvbj4pCit2b2lkIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbjo6bWVyZ2Uoc3RkOjp1
bmlxdWVfcHRyPEFjdGlvbj4pCiB7CiB9CiAKQEAgLTg3LDE2ICs4NywxNiBAQCBJbnNwZWN0b3JI
aXN0b3J5OjpJbnNwZWN0b3JIaXN0b3J5KCkgOiBtX2FmdGVyTGFzdEFjdGlvbkluZGV4KDApIHsg
fQogCiBJbnNwZWN0b3JIaXN0b3J5Ojp+SW5zcGVjdG9ySGlzdG9yeSgpIHsgfQogCi1ib29sIElu
c3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oUGFzc093blB0cjxBY3Rpb24+IGFjdGlvbiwgRXhjZXB0
aW9uQ29kZSYgZWMpCitib29sIEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oc3RkOjp1bmlxdWVf
cHRyPEFjdGlvbj4gYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIHsKICAgICBpZiAoIWFjdGlv
bi0+cGVyZm9ybShlYykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghYWN0aW9u
LT5tZXJnZUlkKCkuaXNFbXB0eSgpICYmIG1fYWZ0ZXJMYXN0QWN0aW9uSW5kZXggPiAwICYmIGFj
dGlvbi0+bWVyZ2VJZCgpID09IG1faGlzdG9yeVttX2FmdGVyTGFzdEFjdGlvbkluZGV4IC0gMV0t
Pm1lcmdlSWQoKSkKLSAgICAgICAgbV9oaXN0b3J5W21fYWZ0ZXJMYXN0QWN0aW9uSW5kZXggLSAx
XS0+bWVyZ2UoYWN0aW9uKTsKKyAgICAgICAgbV9oaXN0b3J5W21fYWZ0ZXJMYXN0QWN0aW9uSW5k
ZXggLSAxXS0+bWVyZ2Uoc3RkOjptb3ZlKGFjdGlvbikpOwogICAgIGVsc2UgewogICAgICAgICBt
X2hpc3RvcnkucmVzaXplKG1fYWZ0ZXJMYXN0QWN0aW9uSW5kZXgpOwotICAgICAgICBtX2hpc3Rv
cnkuYXBwZW5kKGFjdGlvbik7CisgICAgICAgIG1faGlzdG9yeS5hcHBlbmQoc3RkOjptb3ZlKGFj
dGlvbikpOwogICAgICAgICArK21fYWZ0ZXJMYXN0QWN0aW9uSW5kZXg7CiAgICAgfQogICAgIHJl
dHVybiB0cnVlOwpAQCAtMTA0LDcgKzEwNCw3IEBAIGJvb2wgSW5zcGVjdG9ySGlzdG9yeTo6cGVy
Zm9ybShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9uLCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9p
ZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2FibGVTdGF0ZSgpCiB7Ci0gICAgcGVyZm9ybShh
ZG9wdFB0cihuZXcgVW5kb2FibGVTdGF0ZU1hcmsoKSksIElHTk9SRV9FWENFUFRJT04pOworICAg
IHBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxVbmRvYWJsZVN0YXRlTWFyaz4oKSwgSUdOT1JFX0VY
Q0VQVElPTik7CiB9CiAKIGJvb2wgSW5zcGVjdG9ySGlzdG9yeTo6dW5kbyhFeGNlcHRpb25Db2Rl
JiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0
b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5oCmluZGV4
IDcyMjRhMzkzZWZiYjVhOWZhYzFlYmFlOTZkMzEzMTUyNTdjNGQ2ZDUuLmEyMmFiYjUzMGNiNGFm
NDRkNzgyOTUwMzQ3N2NiZDJjMmVjNTdhZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckhpc3RvcnkuaApAQCAtMzMsNyArMzMsNiBAQAogCiAjaW5jbHVkZSAiRXhjZXB0
aW9uQ29kZS5oIgogCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTYsNyArNTUsNyBA
QCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nIHRvU3RyaW5nKCk7CiAKICAgICAgICAg
dmlydHVhbCBTdHJpbmcgbWVyZ2VJZCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgbWVyZ2UoUGFz
c093blB0cjxBY3Rpb24+KTsKKyAgICAgICAgdmlydHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVl
X3B0cjxBY3Rpb24+KTsKIAogICAgICAgICB2aXJ0dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25D
b2RlJikgPSAwOwogCkBAIC03MSw3ICs3MCw3IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JIaXN0
b3J5KCk7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9ySGlzdG9yeSgpOwogCi0gICAgYm9vbCBwZXJm
b3JtKFBhc3NPd25QdHI8QWN0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIGJvb2wgcGVyZm9y
bShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiwgRXhjZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgbWFy
a1VuZG9hYmxlU3RhdGUoKTsKIAogICAgIGJvb2wgdW5kbyhFeGNlcHRpb25Db2RlJik7CkBAIC03
OSw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlc2V0KCk7CiAKIHByaXZhdGU6Ci0gICAg
VmVjdG9yPE93blB0cjxBY3Rpb24+PiBtX2hpc3Rvcnk7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVl
X3B0cjxBY3Rpb24+PiBtX2hpc3Rvcnk7CiAgICAgc2l6ZV90IG1fYWZ0ZXJMYXN0QWN0aW9uSW5k
ZXg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRl
eGVkREJBZ2VudC5oCmluZGV4IGQwNzFhMDA0Zjk0OTZkZjI5NjUyMDI4OTJhNTljZDJmMGFkOWIx
NmQuLmFhZjFmZDkzYmM0NTI3MWZkODU5Y2I3YTQxMmNmMjExNDljNzU3MjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC0z
NSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlIDx3dGYvUGFz
c093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnB1dEFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRB
Z2VudC5oCmluZGV4IGYxNTJhZjY0NWZkNTg4OTlkMDZiZGRkMjVjMmExYTc1NDRmMDQ3NzguLjkw
OTFkYTczYTUzYWNiYWVmOTZiMWE3YjhkZTJmM2U0ZWRkZThjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0QWdlbnQuaApAQCAtMzYsNyArMzYsNiBAQAog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2lu
Y2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5kZXggNzU2MWFjNzU0ZGQ0YTNjOGE5Y2M2ODkw
ODc3ZTc5ZTM0MzY1ZjgwZi4uMGE1Yjg4ZmNlMDdhNWQyNmRhY2E0YzAyNTJjNWYyMDJmMzRjOTAy
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJl
ZUFnZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVu
ZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAj
aW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2lu
Y2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5kZXggMTY0ZDkxNGQ2ZjMzNWRmYjAxYTI3NTkx
ZTA1YTFkYmEwMWUyYTYzNC4uMzVlZTAxZTEyYWEzM2EyMmVjMmY1YTBjZmUxNjhjYzg0Y2I2NGQ0
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdl
bnQuY3BwCkBAIC00OSw4ICs0OSw2IEBACiAjaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZh
bHVlcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8
d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
U3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0ltcGwuaD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKaW5kZXggMTJm
M2E5YzVlNTVmMjcyZWJjNGRmYjg1NGI4Yjg2MmViMjZiMDE0My4uYjNjZDJmZmU3YTZjMWM1ZGIy
YTc2ZTcyNGZlOGE5NjYwYWYxZGZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAKIAogI2luY2x1ZGUgIklu
c3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNw
YXRjaGVycy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXggNTI0ZDkyOTdhMDE1ZDE5NjhkNjRkMDc1ZmM4
MmUzYmE0N2M3NDYxOC4uMzRjZDVhNGUzMGM5YmE4ZjY2OWQ1ZGQzMzY5ZTc3MGY0NDU4Y2Y1OSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAt
MjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6c2V0UGF1c2VkSW5EZWJ1Z2dl
ck1lc3NhZ2UoY29uc3QgU3RyaW5nKiBtZXNzYWdlKQogdm9pZCBJbnNwZWN0b3JPdmVybGF5Ojpo
aWRlSGlnaGxpZ2h0KCkKIHsKICAgICBtX2hpZ2hsaWdodE5vZGUuY2xlYXIoKTsKLSAgICBtX2hp
Z2hsaWdodFF1YWQuY2xlYXIoKTsKKyAgICBtX2hpZ2hsaWdodFF1YWQucmVzZXQoKTsKICAgICB1
cGRhdGUoKTsKIH0KIApAQCAtMjkxLDEzICsyOTEsMTMgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5
OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUsIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxp
Z2gKICAgICB1cGRhdGUoKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRR
dWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhp
Z2hsaWdodENvbmZpZykKK3ZvaWQgSW5zcGVjdG9yT3ZlcmxheTo6aGlnaGxpZ2h0UXVhZChzdGQ6
OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hs
aWdodENvbmZpZykKIHsKICAgICBpZiAobV9xdWFkSGlnaGxpZ2h0Q29uZmlnLnVzZVBhZ2VDb29y
ZGluYXRlcykKICAgICAgICAgKnF1YWQgLT0gbV9wYWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+c2Ny
b2xsT2Zmc2V0KCk7CiAKICAgICBtX3F1YWRIaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25m
aWc7Ci0gICAgbV9oaWdobGlnaHRRdWFkID0gcXVhZDsKKyAgICBtX2hpZ2hsaWdodFF1YWQgPSBz
dGQ6Om1vdmUocXVhZCk7CiAgICAgdXBkYXRlKCk7CiB9CiAKQEAgLTc0OCw3ICs3NDgsNyBAQCBQ
YWdlKiBJbnNwZWN0b3JPdmVybGF5OjpvdmVybGF5UGFnZSgpCiAKICAgICBQYWdlOjpQYWdlQ2xp
ZW50cyBwYWdlQ2xpZW50czsKICAgICBmaWxsV2l0aEVtcHR5Q2xpZW50cyhwYWdlQ2xpZW50cyk7
Ci0gICAgbV9vdmVybGF5UGFnZSA9IGFkb3B0UHRyKG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7Cisg
ICAgbV9vdmVybGF5UGFnZSA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZT4ocGFnZUNsaWVudHMpOwog
CiAgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9wYWdlLnNldHRpbmdzKCk7CiAgICAgU2V0dGlu
Z3MmIG92ZXJsYXlTZXR0aW5ncyA9IG1fb3ZlcmxheVBhZ2UtPnNldHRpbmdzKCk7CkBAIC04MTUs
NyArODE1LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpldmFsdWF0ZUluT3ZlcmxheShjb25z
dCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJbnNwZWMKIAogdm9pZCBJbnNwZWN0b3JPdmVy
bGF5OjpmcmVlUGFnZSgpCiB7Ci0gICAgbV9vdmVybGF5UGFnZS5jbGVhcigpOworICAgIG1fb3Zl
cmxheVBhZ2UucmVzZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmgKaW5kZXggN2UzZDAxN2IyMzVmYjc3
NzI5MWYyNTBmZjQ3ZjZmMTg5NTc0MjQzMS4uYTdlNmM3ODQ5YjIzYTAxZjYwYTY5ODI0NDE0YjM1
ZGU1YTIwYzc4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ck92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3Zlcmxh
eS5oCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9h
dFF1YWQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
QEAgLTExNyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsK
ICAgICB2b2lkIGhpZ2hsaWdodE5vZGUoTm9kZSosIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYpOwot
ICAgIHZvaWQgaGlnaGxpZ2h0UXVhZChQYXNzT3duUHRyPEZsb2F0UXVhZD4sIGNvbnN0IEhpZ2hs
aWdodENvbmZpZyYpOworICAgIHZvaWQgaGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8Rmxv
YXRRdWFkPiwgY29uc3QgSGlnaGxpZ2h0Q29uZmlnJik7CiAKICAgICBOb2RlKiBoaWdobGlnaHRl
ZE5vZGUoKSBjb25zdDsKIApAQCAtMTQxLDggKzEzOSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fcGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2U7CiAgICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0
Tm9kZTsKICAgICBIaWdobGlnaHRDb25maWcgbV9ub2RlSGlnaGxpZ2h0Q29uZmlnOwotICAgIE93
blB0cjxGbG9hdFF1YWQ+IG1faGlnaGxpZ2h0UXVhZDsKLSAgICBPd25QdHI8UGFnZT4gbV9vdmVy
bGF5UGFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBtX2hpZ2hsaWdodFF1YWQ7
CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG1fb3ZlcmxheVBhZ2U7CiAgICAgSGlnaGxpZ2h0
Q29uZmlnIG1fcXVhZEhpZ2hsaWdodENvbmZpZzsKICAgICBJbnRTaXplIG1fc2l6ZTsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5j
cHAKaW5kZXggMDM1YTM0MTJjNGVlYjkwMDE2NjJlNjExNzgzYmIzOTk2ODhkMDNhNS4uZGY4NTZk
ODlmMDljNjRmYmQ0MTFhNTUyZjk1NmM1YmU0ODRiYjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmNwcApAQCAtNTAsNyArNTAs
NiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oPgogI2luY2x1ZGUgPHd0Zi9D
dXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5k
ZXggNGMzMzhjZThjNGE4OTFlMTczOTA5MWZmNzI2NjBkMTA1OWUwNTVkZS4uYTMzNGU2NTRmMWJj
YWQ3ZTg3MTg2ZGZjMWY2YzI3NzAwOTc5MTgyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmlu
ZGV4IDQ4MGJkZTkwNDcxODdmNTA4YmVkZDY5YzEzMGQ4NjE5NzUwOTc0NjYuLjg5ZTVjZjQ5NWVl
YWE3ODUyMzM2NGIxMGQxNDRhMTgyNTRmMjEyZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTY0Myw3ICs2NDMsNyBA
QCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJ
TGl0ZXJhbCgiTmV0d29yayIpLCBpbnN0cnVtZW50aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdl
bnQocGFnZUFnZW50KQogICAgICwgbV9jbGllbnQoY2xpZW50KQotICAgICwgbV9yZXNvdXJjZXNE
YXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3VyY2VzRGF0YSgpKSkKKyAgICAsIG1fcmVzb3Vy
Y2VzRGF0YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdvcmtSZXNvdXJjZXNEYXRhPigpKQogICAgICwg
bV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9jYWNoZURpc2FibGVkKGZhbHNlKQogICAgICwgbV9s
b2FkaW5nWEhSU3luY2hyb25vdXNseShmYWxzZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oCmluZGV4IGQyY2EyYTI5NGVjOWNhNjNjZWY4
NWNmMzdiMWZhN2U1YjNjYWVlMGYuLjEyZGE3NzhjNDg4M2U2ODdlYmE0MWUxMjJhYjUwOWU0OGY3
NmI5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291
cmNlQWdlbnQuaApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlIDx3dGYv
UGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtMTQ1LDcgKzE0
NCw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVy
PiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JO
ZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7Ci0gICAgT3duUHRy
PE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CisgICAgc3RkOjp1bmlxdWVf
cHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291cmNlc0RhdGE7CiAgICAgYm9vbCBtX2Vu
YWJsZWQ7CiAgICAgYm9vbCBtX2NhY2hlRGlzYWJsZWQ7CiAgICAgYm9vbCBtX2xvYWRpbmdYSFJT
eW5jaHJvbm91c2x5OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0
eWxlU2hlZXQuY3BwCmluZGV4IGYyN2MzYjEzN2JiYmI0Y2RlYWZlYTFhNjE5ZTJlYjdiOWE1OTI1
NzQuLjQ4NjcwY2QxZGY3ODRmMjg5MDNhMWM3YmI2YzcxNGRlOWRmZDE3YWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5jcHAKQEAgLTU4LDgg
KzU4LDYgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NLZXlmcmFtZXNSdWxlLmgiCiAjaW5jbHVkZSA8
aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
SW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+
CkBAIC03NywxNSArNzUsMTUgQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJp
bmcmIHRleHQpOwogICAgIGJvb2wgaGFzVGV4dCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzVGV4dDsg
fQogICAgIFJ1bGVTb3VyY2VEYXRhTGlzdCogc291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
c291cmNlRGF0YS5nZXQoKTsgfQotICAgIHZvaWQgc2V0U291cmNlRGF0YShQYXNzT3duUHRyPFJ1
bGVTb3VyY2VEYXRhTGlzdD4pOwotICAgIGJvb2wgaGFzU291cmNlRGF0YSgpIGNvbnN0IHsgcmV0
dXJuIG1fc291cmNlRGF0YTsgfQorICAgIHZvaWQgc2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9w
dHI8UnVsZVNvdXJjZURhdGFMaXN0Pik7CisgICAgYm9vbCBoYXNTb3VyY2VEYXRhKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VEYXRhICE9IG51bGxwdHI7IH0KICAgICBQYXNzUmVmUHRyPFdlYkNv
cmU6OkNTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291cmNlRGF0YUF0KHVuc2lnbmVkKSBjb25zdDsK
IAogcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3RleHQ7CiAgICAgYm9vbCBtX2hhc1RleHQ7Ci0g
ICAgT3duUHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4gbV9zb3VyY2VEYXRhOworICAgIHN0ZDo6dW5p
cXVlX3B0cjxSdWxlU291cmNlRGF0YUxpc3Q+IG1fc291cmNlRGF0YTsKIH07CiAKIFBhcnNlZFN0
eWxlU2hlZXQ6OlBhcnNlZFN0eWxlU2hlZXQoKQpAQCAtMTE1LDE0ICsxMTMsMTQgQEAgc3RhdGlj
IHZvaWQgZmxhdHRlblNvdXJjZURhdGEoUnVsZVNvdXJjZURhdGFMaXN0KiBkYXRhTGlzdCwgUnVs
ZVNvdXJjZURhdGFMaXN0KgogICAgIH0KIH0KIAotdm9pZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRT
b3VyY2VEYXRhKFBhc3NPd25QdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBzb3VyY2VEYXRhKQordm9p
ZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291
cmNlRGF0YUxpc3Q+IHNvdXJjZURhdGEpCiB7CiAgICAgaWYgKCFzb3VyY2VEYXRhKSB7Ci0gICAg
ICAgIG1fc291cmNlRGF0YS5jbGVhcigpOworICAgICAgICBtX3NvdXJjZURhdGEucmVzZXQoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fc291cmNlRGF0YSA9IGFkb3B0UHRyKG5l
dyBSdWxlU291cmNlRGF0YUxpc3QoKSk7CisgICAgbV9zb3VyY2VEYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAKICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRl
bXBvcmFyeSBzb2x1dGlvbiB0byByZXRhaW4gdGhlIG9yaWdpbmFsIGZsYXQgc291cmNlRGF0YSBz
dHJ1Y3R1cmUKICAgICAvLyBjb250YWluaW5nIG9ubHkgc3R5bGUgcnVsZXMsIGV2ZW4gdGhvdWdo
IENTU1BhcnNlciBub3cgcHJvdmlkZXMgdGhlIGZ1bGwgcnVsZSBzb3VyY2UgZGF0YSB0cmVlLgpA
QCAtMjg0LDkgKzI4Miw5IEBAIHN0YXRpYyB2b2lkIGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxl
KiBydWxlLCBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpDU1M6CiAgICAgfQogfQogCi1z
dGF0aWMgUGFzc093blB0cjxDU1NQYXJzZXI+IGNyZWF0ZUNTU1BhcnNlcihEb2N1bWVudCogZG9j
dW1lbnQpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPENTU1BhcnNlcj4gY3JlYXRlQ1NTUGFyc2Vy
KERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICByZXR1cm4gYWRvcHRQdHIobmV3IENTU1BhcnNl
cihkb2N1bWVudCA/IENTU1BhcnNlckNvbnRleHQoKmRvY3VtZW50KSA6IHN0cmljdENTU1BhcnNl
ckNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPENTU1BhcnNlcj4oZG9j
dW1lbnQgPyBDU1NQYXJzZXJDb250ZXh0KCpkb2N1bWVudCkgOiBzdHJpY3RDU1NQYXJzZXJDb250
ZXh0KCkpOwogfQogCiBQYXNzUmVmUHRyPEluc3BlY3RvclN0eWxlPiBJbnNwZWN0b3JTdHlsZTo6
Y3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBzdHlsZUlkLCBQYXNzUmVmUHRyPENTU1N0eWxl
RGVjbGFyYXRpb24+IHN0eWxlLCBJbnNwZWN0b3JTdHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0
KQpAQCAtNTIxLDcgKzUxOSw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6OnN0eWxlV2l0aFByb3BlCiAgICAgSGFzaFNl
dDxTdHJpbmc+IGZvdW5kU2hvcnRoYW5kczsKICAgICBTdHJpbmcgcHJldmlvdXNQcmlvcml0eTsK
ICAgICBTdHJpbmcgcHJldmlvdXNTdGF0dXM7Ci0gICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBs
aW5lRW5kaW5ncyhtX3BhcmVudFN0eWxlU2hlZXQgPyBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVF
bmRpbmdzKCkgOiBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PigpKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKG1fcGFyZW50U3R5bGVTaGVldCA/IG1f
cGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3MoKSA6IG51bGxwdHIpOwogICAgIFJlZlB0cjxD
U1NSdWxlU291cmNlRGF0YT4gc291cmNlRGF0YSA9IGV4dHJhY3RTb3VyY2VEYXRhKCk7CiAgICAg
dW5zaWduZWQgcnVsZUJvZHlSYW5nZVN0YXJ0ID0gc291cmNlRGF0YSA/IHNvdXJjZURhdGEtPnJ1
bGVCb2R5UmFuZ2Uuc3RhcnQgOiAwOwogCkBAIC0xMjExLDEwICsxMjA5LDEwIEBAIFJlZlB0cjxD
U1NSdWxlU291cmNlRGF0YT4gSW5zcGVjdG9yU3R5bGVTaGVldDo6cnVsZVNvdXJjZURhdGFGb3Io
Q1NTU3R5bGVEZWNsYXJhCiAgICAgcmV0dXJuIG1fcGFyc2VkU3R5bGVTaGVldC0+cnVsZVNvdXJj
ZURhdGFBdChydWxlSW5kZXhCeVN0eWxlKHN0eWxlKSk7CiB9CiAKLVBhc3NPd25QdHI8VmVjdG9y
PHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXQ6OmxpbmVFbmRpbmdzKCkgY29uc3QKK3N0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gSW5zcGVjdG9yU3R5bGVTaGVldDo6bGluZUVuZGlu
Z3MoKSBjb25zdAogewogICAgIGlmICghbV9wYXJzZWRTdHlsZVNoZWV0LT5oYXNUZXh0KCkpCi0g
ICAgICAgIHJldHVybiBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PigpOworICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ29udGVudFNlYXJjaFV0aWxpdGllczo6bGluZUVuZGlu
Z3MobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCkpOwogfQogCkBAIC0xMjcwLDkgKzEyNjgsOSBA
QCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVuc3VyZVNvdXJjZURhdGEoKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8U3R5bGVTaGVldENvbnRlbnRzPiBuZXdTdHlsZVNo
ZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVhdGUoKTsKLSAgICBPd25QdHI8UnVsZVNvdXJj
ZURhdGFMaXN0PiBydWxlU291cmNlRGF0YVJlc3VsdCA9IGFkb3B0UHRyKG5ldyBSdWxlU291cmNl
RGF0YUxpc3QoKSk7CisgICAgYXV0byBydWxlU291cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91
bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwogICAgIGNyZWF0ZUNTU1BhcnNlcihtX3BhZ2VT
dHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpLT5wYXJzZVNoZWV0KG5ld1N0eWxlU2hlZXQuZ2V0
KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgpLCAwLCBydWxlU291cmNlRGF0YVJlc3VsdC5n
ZXQoKSk7Ci0gICAgbV9wYXJzZWRTdHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKHJ1bGVTb3VyY2VE
YXRhUmVzdWx0LnJlbGVhc2UoKSk7CisgICAgbV9wYXJzZWRTdHlsZVNoZWV0LT5zZXRTb3VyY2VE
YXRhKHN0ZDo6bW92ZShydWxlU291cmNlRGF0YVJlc3VsdCkpOwogICAgIHJldHVybiBtX3BhcnNl
ZFN0eWxlU2hlZXQtPmhhc1NvdXJjZURhdGEoKTsKIH0KIApAQCAtMTQ3Niw3ICsxNDc0LDcgQEAg
Ym9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OnNldFN0eWxlVGV4dChDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSwKICAgICByZXR1cm4gIWVjOwogfQogCi1QYXNzT3duUHRy
PFZlY3RvcjxzaXplX3Q+PiBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmxpbmVF
bmRpbmdzKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gSW5zcGVjdG9y
U3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpsaW5lRW5kaW5ncygpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmxpbmVFbmRpbmdzKGVsZW1lbnRTdHlsZVRleHQo
KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5
bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQu
aAppbmRleCBiYzFmMWFjNzljYjFkN2MyMzRjZjE1NGE3YTJmZTU4N2MxZTU5Njc2Li44YjE5MWZl
MDg0MzliNWY4ZTc3YTI3NTk1OTdlNjMzZGE5OWUwZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTIyNiw3ICsyMjYsNyBAQCBwcm90
ZWN0ZWQ6CiAKICAgICAvLyBBbHNvIGFjY2Vzc2VkIGJ5IGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JT
dHlsZS4KICAgICB2aXJ0dWFsIGJvb2wgc2V0U3R5bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24q
LCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRy
PFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncygpIGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjp1
bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncygpIGNvbnN0OwogCiBwcml2YXRl
OgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxDU1NTdHlsZVJ1bGU+PiBDU1NTdHlsZVJ1bGVW
ZWN0b3I7CkBAIC0yNzgsNyArMjc4LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgLy8gQWxzbyBhY2Nl
c3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9yU3R5bGUuCiAgICAgdmlydHVhbCBib29sIHNl
dFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9u
Q29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4g
bGluZUVuZGluZ3MoKSBjb25zdCBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0
ZToKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXgg
ZWZmNjI1ZDQ2NWU1ZmU5YmY0YjRhYmM4Mjc4ODBmMzZhMDcyMDg2OS4uMDBjYTZhZTBhYTI3MWUy
NTFiMDg0NjZlY2Y5M2UwOGVmYTY2OTBjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVk
ZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkxheW91dFJl
Y3QuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3Rm
L1dlYWtQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JX
b3JrZXJBZ2VudC5jcHAKaW5kZXggYjgxMDhiNTRmMmM5Y2FmMjVlMmQwZWJmYTRmYzJiOTJkMTc1
YzBlYy4uODU3M2Q4NmFjNDVmYTMxNGUxYWIzNGQyODhhMGVhMzc5MzEwYTBlOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC00
MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiVVJMLmgiCiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2Nv
cGVQcm94eS5oIgogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcg
bmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlQ29uc29sZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29u
c29sZUFnZW50LmNwcAppbmRleCA1MWI1OThlY2Q5OGUwNGM4YWUyZjRjOTk0YzM4ZGY5MmVlZjc2
ZGEzLi4xMDUxZDdhNjU3MjM3MmMxMDY1ZjdmMTM4MjdlOTM4ZTBmNjNjMzVjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25zb2xlQWdlbnQuY3BwCkBAIC03NSw3ICs3NSw3
IEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAgfQogCiAgICAgaWYgKENvbW1hbmRMaW5lQVBJ
SG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLT5jb21tYW5kTGluZUFQSUhvc3QoKSkK
LSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3QoYWRvcHRQdHIo
bmV3IEluc3BlY3RhYmxlTm9kZShub2RlKSkpOworICAgICAgICBjb21tYW5kTGluZUFQSUhvc3Qt
PmFkZEluc3BlY3RlZE9iamVjdChzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9k
ZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCAwMjA1OGQ2ZjQzYjQzMjFjYjM0YzQ3MmYyNDFl
OWRmMGQzODVhMDA5Li5mZDQ3Yzc0MDcwZGQ1NDRiZGRiZTMxYjI2YjFkNzA4OTI1OWZmMjVjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlUnVudGltZUFnZW50LmgKQEAgLTM1LDcg
KzM1LDYgQEAKIAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0
Y2hlcnMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xh
c3MgRXhlY1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNv
bnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50
LmNwcAppbmRleCBlYzEyZDhhNjc5ZGViYzNjNDQ3NDc0MzE1YTNhZTBlNjRhNjJmZDhkLi41N2M4
ZjRkZDg4YjE0Nzc0ODg3NzM0ZGY4MDYxMWRlMTE2NDkxNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZh
dGU6CiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6YWRkSW5zcGVjdGVkSGVhcE9iamVjdChFcnJvclN0
cmluZyosIGludCBpbnNwZWN0ZWRIZWFwT2JqZWN0SWQpCiB7CiAgICAgaWYgKENvbW1hbmRMaW5l
QVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gc3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKj4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIpLT5jb21tYW5kTGluZUFQSUhvc3Qo
KSkKLSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5hZGRJbnNwZWN0ZWRPYmplY3QoYWRvcHRQ
dHIobmV3IEluc3BlY3RhYmxlSGVhcE9iamVjdChpbnNwZWN0ZWRIZWFwT2JqZWN0SWQpKSk7Cisg
ICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRkSW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91
bmlxdWU8SW5zcGVjdGFibGVIZWFwT2JqZWN0PihpbnNwZWN0ZWRIZWFwT2JqZWN0SWQpKTsKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDk1ZTI1NGRjZDJlZmY2NDY0YjVlNzA3ZmE2NGEzZjRj
NWQwOTg2ZGQuLjVjMmQ4NjE0YjBhYjNkYmU3MmU4NjU4ZDEwY2QxOWY3NDJkZGMzYTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50LmgKQEAgLTM0LDcg
KzM0LDYgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogCiAjaW5jbHVkZSA8aW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNw
cAppbmRleCA2MmVkMjRjYjBkNmY0ZjkwOGM1YjhhNDNkYjI4N2JlN2RjN2VmZWNkLi5iOGRkZGQx
Yzk5MGQ5Y2ZhZTYyMTgyOGRkNzNhOGUzMGZkYzE4ZGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCkBAIC0xOTQsNyArMTk0LDcgQEAgcHJvdGVjdGVkOgogfTsKIAogSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnREdW1teTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teShJbnNw
ZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyLCBQYWdlKiBwYWdlKQotICAgIDogSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbChjb250cm9sbGVyLCBwYWdlLCBhZG9wdFB0cihuZXcgSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3MoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsKGNvbnRyb2xsZXIsIHBhZ2UsIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ovV2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktp
dEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBv
cnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KaW5kZXggMmVjZDQ1Mjc2MTk4YzcwMDFk
NjM2NzRhODEyNjUzNjAyNDZjOTQzYS4uYzMzY2M3ZTg2M2ZmNDFjNWNhNWY0YzU1YWU1ZjBmY2M4
OTQxOTRhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRF
eHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4K
QEAgLTIxNiw3ICsyMTYsNyBAQCBFWFBPUlRTCiAgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9p
bnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZUBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29y
ZUBAQ0FQQVZJbnN0cnVtZW50aW5nQWdlbnRzQDJAUEFWUGFnZUAyQEBaLCA/aW5zdHJ1bWVudGlu
Z0FnZW50c0ZvclBhZ2VASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQENBUEVBVklu
c3RydW1lbnRpbmdBZ2VudHNAMkBQRUFWUGFnZUAyQEBaKQogICAgICAgICA/c19mcm9udGVuZENv
dW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uQFdlYkNvcmVAQDBIQQogICAgICAgICBzeW1i
b2xXaXRoUG9pbnRlcig/aXNVbmRlclRlc3RASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBX
ZWJDb3JlQEBVQUVfTlhaLCA/aXNVbmRlclRlc3RASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bEBXZWJDb3JlQEBVRUFBX05YWikKLSAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoPz8wSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBRQUVAUEFWSW5zcGVjdG9yQ29udHJvbGxl
ckAxQFBBVlBhZ2VAMUBWPyRQYXNzT3duUHRyQFZTZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsQFdlYkNvcmVAQEBXVEZAQEBaLCA/PzBJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsQFdlYkNvcmVAQFFFQUFAUEVBVkluc3BlY3RvckNvbnRyb2xsZXJAMUBQRUFWUGFnZUAxQFY/
JFBhc3NPd25QdHJAVlNldHRpbmdzQEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29y
ZUBAQFdURkBAQFopCisgICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD8/MEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAUUFFQFBBVkluc3BlY3RvckNvbnRyb2xsZXJAMUBQQVZQ
YWdlQDFAVj8kdW5pcXVlX3B0ckBWU2V0dGluZ3NAV2ViQ29yZUBAVT8kZGVmYXVsdF9kZWxldGVA
VlNldHRpbmdzQFdlYkNvcmVAQEBzdGRAQEBzdGRAQEBaLCA/PzBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsQFdlYkNvcmVAQFFFQUFAUEVBVkluc3BlY3RvckNvbnRyb2xsZXJAMUBQRUFWUGFn
ZUAxQFY/JHVuaXF1ZV9wdHJAVlNldHRpbmdzQFdlYkNvcmVAQFU/JGRlZmF1bHRfZGVsZXRlQFZT
ZXR0aW5nc0BXZWJDb3JlQEBAc3RkQEBAc3RkQEBAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50
ZXIoPz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVAWFosID8/MUlu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQUBYWikKICAgICAgICAgc3lt
Ym9sV2l0aFBvaW50ZXIoP2NoYW5nZUF0dGFjaGVkV2luZG93SGVpZ2h0QEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2NoYW5nZUF0dGFjaGVkV2luZG93SGVp
Z2h0QEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUVBQVhJQFopCiAgICAg
ICAgIHN5bWJvbFdpdGhQb2ludGVyKD9jaGFuZ2VBdHRhY2hlZFdpbmRvd1dpZHRoQEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAVUFFWElAWiwgP2NoYW5nZUF0dGFjaGVkV2lu
ZG93V2lkdGhASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBWElAWikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2YvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9y
Q2xpZW50Q0YuY3BwIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0
b3JDbGllbnRDRi5jcHAKaW5kZXggMTIwZTFmZDNkYTEwMWY4OWNmZGE3MjEyYWQ1NGRjYmY2MzA2
ZWU1ZS4uNjIzMzNkOTQwYWQ5NWQxNDMxNjAzYTVlNTQ4MGY5OTgxNGU1ZWQ2NyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jZi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnRDRi5jcHAKQEAgLTI1LDggKzI1LDggQEAKIAogLy8gRklYTUU6IE9uIFdpbmRvd3MsIHdlIHJl
cXVpcmUgYWxsIFdlYktpdCBzb3VyY2UgZmlsZXMgdG8gaW5jbHVkZSBjb25maWcuaAogLy8gYmVm
b3JlIGluY2x1ZGluZyBhbnkgb3RoZXIgZmlsZXMuIEZhaWxpbmcgdG8gaW5jbHVkZSBjb25maWcu
aCB3aWxsIGxlYXZlCi0vLyBXVEZfVVNFX0NGIHVuZGVmaW5lZCwgY2F1c2luZyBidWlsZCBmYWls
dXJlcyBpbiB0aGlzIAotLy8gZmlsZS4gQnV0IE1hYyBkb2Vzbid0IGhhdmUgYSBjb25maWcuaCBm
b3IgV2ViS2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZSAKKy8vIFdURl9VU0VfQ0YgdW5kZWZp
bmVkLCBjYXVzaW5nIGJ1aWxkIGZhaWx1cmVzIGluIHRoaXMKKy8vIGZpbGUuIEJ1dCBNYWMgZG9l
c24ndCBoYXZlIGEgY29uZmlnLmggZm9yIFdlYktpdCwgc28gd2UgY2FuJ3QgaW5jbHVkZSB0aGUK
IC8vIFdpbmRvd3Mgb25lIGhlcmUuIEZvciBub3cgd2UgY2FuIGp1c3QgZGVmaW5lIFdURl9VU0Vf
Q0YgYW5kCiAvLyBXVEZfVVNFX0NGTkVUV09SSyBtYW51YWxseSwgYnV0IHdlIG5lZWQgYSBiZXR0
ZXIgbG9uZy10ZXJtIHNvbHV0aW9uLgogI2lmbmRlZiBXVEZfVVNFX0NGCkBAIC0xMjQsNyArMTI0
LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnNldEluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
KGJvb2wgYXR0YWNoZWQpCiAgICAgc3RvcmVTZXR0aW5nKGluc3BlY3RvclN0YXJ0c0F0dGFjaGVk
U2V0dGluZywgYXR0YWNoZWQgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKIH0KIAotUGFzc093blB0cjxX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gV2ViSW5zcGVj
dG9yQ2xpZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkKK3N0ZDo6dW5pcXVlX3B0cjxXZWJD
b3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gV2ViSW5zcGVjdG9y
Q2xpZW50OjpjcmVhdGVGcm9udGVuZFNldHRpbmdzKCkKIHsKICAgICBjbGFzcyBJbnNwZWN0b3JG
cm9udGVuZFNldHRpbmdzQ0YgOiBwdWJsaWMgV2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbDo6U2V0dGluZ3MgewogICAgIHB1YmxpYzoKQEAgLTE0MSw1ICsxNDEsNSBAQCBQYXNz
T3duUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBX
ZWJJbnNwZWN0b3JDbGllbnQ6OgogICAgICAgICAgICAgc3RvcmVTZXR0aW5nKG5hbWUsIHZhbHVl
KTsKICAgICAgICAgfQogICAgIH07Ci0gICAgcmV0dXJuIGFkb3B0UHRyPFdlYkNvcmU6Okluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPihuZXcgSW5zcGVjdG9yRnJvbnRlbmRT
ZXR0aW5nc0NGKCkpOworICAgIHJldHVybiBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckZyb250
ZW5kU2V0dGluZ3NDRj4oKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCmluZGV4IGJjZjI4YzkyMGMzYWJkMTlh
ZTQ3NzUzOWQ3Nzc5ODM5NGYzOTliY2EuLmE0ZTJmNmI5NTcwYWI5NDg2YTI3MzEwOWFmMTNjODk2
MGFkZjZmMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0lu
c3BlY3RvckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcApAQCAtMTQ4LDcgKzE0OCw3IEBAIFN0cmluZyBJbnNw
ZWN0b3JDbGllbnRFZmw6Omluc3BlY3RvckZpbGVzUGF0aCgpCiB9CiAKIEluc3BlY3RvckZyb250
ZW5kQ2xpZW50RWZsOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudEVmbChFdmFzX09iamVjdCogaW5z
cGVjdGVkVmlldywgRXZhc19PYmplY3QqIGluc3BlY3RvclZpZXcsIEluc3BlY3RvckNsaWVudEVm
bCogaW5zcGVjdG9yQ2xpZW50KQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgm
RVdLUHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVjdGVkVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIo
KSwgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVjdG9yVmlldyksIGFkb3B0UHRyKG5ldyBJbnNw
ZWN0b3JGcm9udGVuZFNldHRpbmdzRWZsKCkpKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnRMb2NhbCgmRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVjdGVkVmlldyktPmluc3BlY3RvckNv
bnRyb2xsZXIoKSwgRVdLUHJpdmF0ZTo6Y29yZVBhZ2UoaW5zcGVjdG9yVmlldyksIHN0ZDo6bWFr
ZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0VmbD4oKSkKICAgICAsIG1faW5zcGVj
dGVkVmlldyhpbnNwZWN0ZWRWaWV3KQogICAgICwgbV9pbnNwZWN0b3JWaWV3KGluc3BlY3RvclZp
ZXcpCiAgICAgLCBtX2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3Bw
IGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50R3RrLmNw
cAppbmRleCBjZDk0OTM0ZTE2MDEyZjZjOTg0NmVhOWU0ZmQ2Y2QxOTVlZDZjYWRjLi5jZWUxZDM0
NTcxYzkzMzEzNWY2MjBjNWJjNjA1MTlkZjY5MzBhOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAKQEAgLTE1
Nyw3ICsxNTcsNyBAQCBib29sIEluc3BlY3RvckNsaWVudDo6c2VuZE1lc3NhZ2VUb0Zyb250ZW5k
KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIH0KIAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6Oklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYktpdFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdl
YktpdFdlYlZpZXcqIGluc3BlY3RvcldlYlZpZXcsIFdlYktpdFdlYkluc3BlY3Rvciogd2ViSW5z
cGVjdG9yLCBQYWdlKiBpbnNwZWN0b3JQYWdlLCBJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNs
aWVudCkKLSAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmNvcmUoaW5zcGVjdGVk
V2ViVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZSwgYWRvcHRQdHIo
bmV3IEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NHdGsoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsKCZjb3JlKGluc3BlY3RlZFdlYlZpZXcpLT5pbnNwZWN0b3JDb250cm9s
bGVyKCksIGluc3BlY3RvclBhZ2UsIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRT
ZXR0aW5nc0d0az4oKSkKICAgICAsIG1faW5zcGVjdG9yV2ViVmlldyhpbnNwZWN0b3JXZWJWaWV3
KQogICAgICwgbV9pbnNwZWN0ZWRXZWJWaWV3KGluc3BlY3RlZFdlYlZpZXcpCiAgICAgLCBtX3dl
Ykluc3BlY3Rvcih3ZWJJbnNwZWN0b3IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L2lv
cy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1MubW0KaW5kZXggNzU5NWYxNzAz
YzMxNzNhMTM2MGNmZDQ1NTU2Y2VjM2RhMjI2ZGJjZS4uMDAxMTc5YWRhNGY5ZjczYjBjOGNhMWE0
MDg2YjYwMmRjNjE1OWZlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1
cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudElPUy5tbQpAQCAtMzksNyArMzksNiBAQAog
I2ltcG9ydCA8V2ViQ29yZS9QYWdlLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NldHRpbmdzLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1dlYkNvcmVUaHJlYWQuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC0xMTAsOCArMTA5LDggQEAgdm9p
ZCBXZWJJbnNwZWN0b3JDbGllbnQ6OmRpZFNldFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVk
KQogI3ByYWdtYSBtYXJrIC0KICNwcmFnbWEgbWFyayBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dCBJbXBsZW1lbnRhdGlvbgogCi1XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViSW5zcGVjdG9y
V2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxlciwgSW5zcGVjdG9yQ29udHJvbGxlciog
aW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRlbmRQYWdlLCBXVEY6OlBhc3NPd25QdHI8
U2V0dGluZ3M+IHNldHRpbmdzKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChp
bnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdlLCBzZXR0aW5ncykKK1dlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNw
ZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9s
bGVyLCBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9u
dGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCisgICAgOiBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGluc3BlY3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBh
Z2UsIHN0ZDo6bW92ZShzZXR0aW5ncykpCiB7CiAgICAgLy8gaU9TIGRvZXMgbm90IGhhdmUgYSBs
b2NhbCBpbnNwZWN0b3IsIHRoaXMgc2hvdWxkIG5vdCBiZSByZWFjaGVkLgogICAgIG5vdEltcGxl
bWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dl
Ykluc3BlY3RvckNsaWVudC5oCmluZGV4IDAxYzFjNjA4ZGUzNDRlMTkzZDQwODk0Y2UyYWZiNjA3
ZGE3ZjgzYTUuLmY4MTVmODdiNjljZTdiNzIzYzVkMWU3NTZiMjA1ZDdlMDcxNTJjYTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oCkBAIC02LDEzICs2LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhp
cyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAq
CiAgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVU
T1JTICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtODksNyArODksNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZWxlYXNlRnJvbnRlbmQoKTsKIAogcHJpdmF0ZToKLSAgICBQ
YXNzT3duUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdz
PiBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCk7CisgICAgc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6
Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBjcmVhdGVGcm9udGVuZFNl
dHRpbmdzKCk7CiAKICAgICBXZWJWaWV3ICptX3dlYlZpZXc7CiAgICAgUmV0YWluUHRyPFdlYk5v
ZGVIaWdobGlnaHRlcj4gbV9oaWdobGlnaHRlcjsKQEAgLTEwMCw3ICsxMDAsNyBAQCBwcml2YXRl
OgogCiBjbGFzcyBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsIHsKIHB1YmxpYzoKLSAgICBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXZWJWaWV3KiwgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciosIFdl
YkNvcmU6Okluc3BlY3RvckNvbnRyb2xsZXIqLCBXZWJDb3JlOjpQYWdlKiwgUGFzc093blB0cjxT
ZXR0aW5ncz4pOworICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqLCBXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiwgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcios
IFdlYkNvcmU6OlBhZ2UqLCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+KTsKIAogICAgIHZvaWQg
YXR0YWNoQXZhaWxhYmlsaXR5Q2hhbmdlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tIGIvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50Lm1tCmluZGV4IGFmODlk
OTRiYWQ2OWRlMTU1MGFlMWIyNTNjMDU3MmZlNjJhYThmNjYuLjc5MTBlYTJhYTQ4YjEyY2M2MjYy
NzAwMDMyNGRkNjg3MGQ3NzhmOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQubW0KQEAgLTYsMTMgKzYsMTMgQEAKICAq
IGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECkBAIC01Myw3ICs1Myw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1NvZnRMaW5r
aW5nLmg+CiAjaW1wb3J0IDxXZWJLaXQvRE9NRXh0ZW5zaW9ucy5oPgogI2ltcG9ydCA8V2ViS2l0
U3lzdGVtSW50ZXJmYWNlLmg+Ci0jaW1wb3J0IDx3dGYvUGFzc093blB0ci5oPgogI2ltcG9ydCA8
d3RmL3RleHQvQmFzZTY0Lmg+CiAKIFNPRlRfTElOS19TVEFHRURfRlJBTUVXT1JLKFdlYkluc3Bl
Y3RvclVJLCBQcml2YXRlRnJhbWV3b3JrcywgQSkKQEAgLTIxMCw4ICsyMDksOCBAQCB2b2lkIFdl
Ykluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKIH0KIAogCi1XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldywgV2ViSW5zcGVjdG9yV2luZG93Q29udHJvbGxlciogd2luZG93Q29udHJvbGxl
ciwgSW5zcGVjdG9yQ29udHJvbGxlciogaW5zcGVjdG9yQ29udHJvbGxlciwgUGFnZSogZnJvbnRl
bmRQYWdlLCBXVEY6OlBhc3NPd25QdHI8U2V0dGluZ3M+IHNldHRpbmdzKQotICAgIDogSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbChpbnNwZWN0b3JDb250cm9sbGVyLCAgZnJvbnRlbmRQYWdl
LCBzZXR0aW5ncykKK1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9u
dGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5kb3dD
b250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0
b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5n
cz4gc2V0dGluZ3MpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGluc3BlY3Rv
ckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIHN0ZDo6bW92ZShzZXR0aW5ncykpCiAgICAgLCBt
X2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKICAgICAsIG1fd2luZG93Q29udHJv
bGxlcih3aW5kb3dDb250cm9sbGVyKQogewpAQCAtMjMzLDcgKzIzMiw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OmZyb250ZW5kTG9hZGVkKCkKICAgICBJbnNwZWN0b3JGcm9u
dGVuZENsaWVudExvY2FsOjpmcm9udGVuZExvYWRlZCgpOwogCiAgICAgV2ViRnJhbWUgKmZyYW1l
ID0gW21faW5zcGVjdGVkV2ViVmlldyBtYWluRnJhbWVdOwotICAgIAorCiAgICAgV2ViRnJhbWVM
b2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbkNhY2hlKiBpbXBsZW1lbnRhdGlvbnMgPSBXZWJWaWV3
R2V0RnJhbWVMb2FkRGVsZWdhdGVJbXBsZW1lbnRhdGlvbnMobV9pbnNwZWN0ZWRXZWJWaWV3KTsK
ICAgICBpZiAoaW1wbGVtZW50YXRpb25zLT5kaWRDbGVhckluc3BlY3RvcldpbmRvd09iamVjdEZv
ckZyYW1lRnVuYykKICAgICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9u
cy0+ZGlkQ2xlYXJJbnNwZWN0b3JXaW5kb3dPYmplY3RGb3JGcmFtZUZ1bmMsIG1faW5zcGVjdGVk
V2ViVmlldywKQEAgLTMxOSwxNCArMzE4LDE0IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnQ6OnVwZGF0ZVdpbmRvd1RpdGxlKCkgY29uc3QKIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYg
Y29udGVudCwgYm9vbCBiYXNlNjRFbmNvZGVkLCBib29sIGZvcmNlU2F2ZURpYWxvZykKIHsKICAg
ICBBU1NFUlQoIXN1Z2dlc3RlZFVSTC5pc0VtcHR5KCkpOwotICAgIAorCiAgICAgTlNVUkwgKnBs
YXRmb3JtVVJMID0gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5nZXQoc3VnZ2VzdGVkVVJMKS5n
ZXQoKTsKICAgICBpZiAoIXBsYXRmb3JtVVJMKSB7CiAgICAgICAgIHBsYXRmb3JtVVJMID0gW05T
VVJMIFVSTFdpdGhTdHJpbmc6c3VnZ2VzdGVkVVJMXTsKICAgICAgICAgLy8gVGhlIHVzZXIgbXVz
dCBjb25maXJtIG5ldyBmaWxlbmFtZXMgYmVmb3JlIHdlIGNhbiBzYXZlIHRvIHRoZW0uCiAgICAg
ICAgIGZvcmNlU2F2ZURpYWxvZyA9IHRydWU7CiAgICAgfQotICAgIAorCiAgICAgQVNTRVJUKHBs
YXRmb3JtVVJMKTsKICAgICBpZiAoIXBsYXRmb3JtVVJMKQogICAgICAgICByZXR1cm47CkBAIC0z
MzcsNyArMzM2LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25z
dCBTdHJpbmcmIHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJgogCiAgICAgYXV0byBzYXZlVG9V
UkwgPSBeKE5TVVJMICphY3R1YWxVUkwpIHsKICAgICAgICAgQVNTRVJUKGFjdHVhbFVSTCk7Ci0g
ICAgICAgIAorCiAgICAgICAgIG1fc3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXAuc2V0KHN1Z2dlc3Rl
ZFVSTENvcHksIGFjdHVhbFVSTCk7CiAKICAgICAgICAgaWYgKGJhc2U2NEVuY29kZWQpIHsKQEAg
LTM1Niw3ICszNTUsNyBAQCB2b2lkIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNv
bnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmCiAgICAgICAgIHNhdmVUb1VS
TChwbGF0Zm9ybVVSTCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBOU1Nh
dmVQYW5lbCAqcGFuZWwgPSBbTlNTYXZlUGFuZWwgc2F2ZVBhbmVsXTsKICAgICBwYW5lbC5uYW1l
RmllbGRTdHJpbmdWYWx1ZSA9IHBsYXRmb3JtVVJMLmxhc3RQYXRoQ29tcG9uZW50OwogICAgIHBh
bmVsLmRpcmVjdG9yeVVSTCA9IFtwbGF0Zm9ybVVSTCBVUkxCeURlbGV0aW5nTGFzdFBhdGhDb21w
b25lbnRdOwpAQCAtMzcyLDcgKzM3MSw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNvbnN0IFN0cmluZyYKIHZvaWQg
V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OmFwcGVuZChjb25zdCBTdHJpbmcmIHN1Z2dlc3Rl
ZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogewogICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJM
LmlzRW1wdHkoKSk7Ci0gICAgCisKICAgICBSZXRhaW5QdHI8TlNVUkw+IGFjdHVhbFVSTCA9IG1f
c3VnZ2VzdGVkVG9BY3R1YWxVUkxNYXAuZ2V0KHN1Z2dlc3RlZFVSTCk7CiAgICAgLy8gZG8gbm90
IGFwcGVuZCB1bmxlc3MgdGhlIHVzZXIgaGFzIGFscmVhZHkgY29uZmlybWVkIHRoaXMgZmlsZW5h
bWUgaW4gc2F2ZSgpLgogICAgIGlmICghYWN0dWFsVVJMKQpAQCAtNTgyLDcgKzU4MSw3IEBAIC0g
KElCQWN0aW9uKXNob3dXaW5kb3c6KGlkKXNlbmRlcgogICAgIH0KIAogICAgIF92aXNpYmxlID0g
WUVTOwotICAgIAorCiAgICAgX3Nob3VsZEF0dGFjaCA9IF9pbnNwZWN0b3JDbGllbnQtPmluc3Bl
Y3RvclN0YXJ0c0F0dGFjaGVkKCkgJiYgX2Zyb250ZW5kQ2xpZW50LT5jYW5BdHRhY2hXaW5kb3co
KSAmJiAhX2luc3BlY3RvckNsaWVudC0+aW5zcGVjdG9yQXR0YWNoRGlzYWJsZWQoKTsKIAogICAg
IGlmIChfc2hvdWxkQXR0YWNoKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcAppbmRleCA3MTNlODMwNmRmYWY5YzY3
YWM1MDkxZTk1MDNmYWI2MDBhZTE3YTlmLi45ZTI3OGJhMTNlYTFmNzMxMmQzODA3NjQ1MTlkNmQ5
MGRkM2QxMGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKQEAgLTYsMTMgKzYsMTMgQEAKICAqIGFyZSBtZXQ6
CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAyLiAgUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMu
ICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZy
b20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECkBAIC0yMjQsOCArMjI0LDggQEAgdm9pZCBXZWJJbnNwZWN0b3JDbGllbnQ6OnJlbGVhc2VG
cm9udGVuZCgpCiAgICAgbV9mcm9udGVuZEhhbmRsZSA9IDA7CiB9CiAKLVdlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0
ZWRXZWJWaWV3LCBIV05EIGluc3BlY3RlZFdlYlZpZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwg
Y29uc3QgQ09NUHRyPFdlYlZpZXc+JiBmcm9udGVuZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJW
aWV3SHduZCwgV2ViSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDbGllbnQsIFBhc3NPd25QdHI8
U2V0dGluZ3M+IHNldHRpbmdzKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgm
aW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksICBjb3JlKGZy
b250ZW5kV2ViVmlldy5nZXQoKSksIHNldHRpbmdzKQorV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcs
IEhXTkQgaW5zcGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01Q
dHI8V2ViVmlldz4mIGZyb250ZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBX
ZWJJbnNwZWN0b3JDbGllbnQqIGluc3BlY3RvckNsaWVudCwgc3RkOjp1bmlxdWVfcHRyPFNldHRp
bmdzPiBzZXR0aW5ncykKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmluc3Bl
Y3RlZFdlYlZpZXctPnBhZ2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCAgY29yZShmcm9udGVu
ZFdlYlZpZXcuZ2V0KCkpLCBzdGQ6Om1vdmUoc2V0dGluZ3MpKQogICAgICwgbV9pbnNwZWN0ZWRX
ZWJWaWV3KGluc3BlY3RlZFdlYlZpZXcpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZpZXdId25kKGlu
c3BlY3RlZFdlYlZpZXdId25kKQogICAgICwgbV9pbnNwZWN0b3JDbGllbnQoaW5zcGVjdG9yQ2xp
ZW50KQpAQCAtMjg4LDcgKzI4OCw3IEBAIHZvaWQgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6
OmF0dGFjaFdpbmRvdyhEb2NrU2lkZSkKIAogICAgIGNsb3NlV2luZG93V2l0aG91dE5vdGlmaWNh
dGlvbnMoKTsKICAgICAvLyBXZSBuZWVkIHRvIHNldCB0aGUgYXR0YWNoZWQgd2luZG93J3MgaGVp
Z2h0IGJlZm9yZSB3ZSBhY3R1YWxseSBhdHRhY2ggdGhlIHdpbmRvdy4KLSAgICAvLyBNYWtlIHN1
cmUgdGhhdCBtX2F0dGFjaGVkIGlzIHRydWUgc28gdGhhdCBjYWxsaW5nIHNldEF0dGFjaGVkV2lu
ZG93SGVpZ2h0IGZyb20gcmVzdG9yZUF0dGFjaGVkV2luZG93SGVpZ2h0IGRvZXNuJ3QgcmV0dXJu
IGVhcmx5LiAKKyAgICAvLyBNYWtlIHN1cmUgdGhhdCBtX2F0dGFjaGVkIGlzIHRydWUgc28gdGhh
dCBjYWxsaW5nIHNldEF0dGFjaGVkV2luZG93SGVpZ2h0IGZyb20gcmVzdG9yZUF0dGFjaGVkV2lu
ZG93SGVpZ2h0IGRvZXNuJ3QgcmV0dXJuIGVhcmx5LgogICAgIG1fYXR0YWNoZWQgPSB0cnVlOwog
ICAgIC8vIEltbWVkaWF0ZWx5IGFmdGVyIGNhbGxpbmcgc2hvd1dpbmRvd1dpdGhvdXROb3RpZmlj
YXRpb25zKCksIHRoZSBwYXJlbnQgZnJhbWV2aWV3J3MgdmlzaWJsZUhlaWdodCBpbmNvcnJlY3Rs
eSByZXR1cm5zIDAgYWx3YXlzIChXaW5kb3dzIG9ubHkpLgogICAgIC8vIFdlIGFyZSBleHBlY3Rp
bmcgdGhpcyB2YWx1ZSB0byBiZSBqdXN0IHRoZSBoZWlnaHQgb2YgdGhlIHBhcmVudCB3aW5kb3cg
d2hlbiB3ZSBjYWxsIHJlc3RvcmVBdHRhY2hlZFdpbmRvd0hlaWdodCwgd2hpY2ggaXQgaXMgYmVm
b3JlCkBAIC0zMzIsNyArMzMyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
c2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KQogICAgIC8vIG9mIHRoZSBp
bnNwZWN0ZWQgd2ViIHZpZXcgaGFwcGVucyBpbiBvbldlYlZpZXdXaW5kb3dQb3NDaGFuZ2luZywg
bm90IGhlcmUuCiAgICAgU2V0V2luZG93UG9zKG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIDAsIDAs
IDAsIHdlYlZpZXdXaWR0aCwgdG90YWxIZWlnaHQsIFNXUF9OT1pPUkRFUik7CiAKLSAgICBSZWRy
YXdXaW5kb3cobV9mcm9udGVuZFdlYlZpZXdId25kLCAwLCAwLCBSRFdfSU5WQUxJREFURSB8IFJE
V19BTExDSElMRFJFTiB8IFJEV19VUERBVEVOT1cpOyAKKyAgICBSZWRyYXdXaW5kb3cobV9mcm9u
dGVuZFdlYlZpZXdId25kLCAwLCAwLCBSRFdfSU5WQUxJREFURSB8IFJEV19BTExDSElMRFJFTiB8
IFJEV19VUERBVEVOT1cpOwogICAgIFJlZHJhd1dpbmRvdyhtX2luc3BlY3RlZFdlYlZpZXdId25k
LCAwLCAwLCBSRFdfSU5WQUxJREFURSB8IFJEV19BTExDSElMRFJFTiB8IFJEV19VUERBVEVOT1cp
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYklu
c3BlY3RvckNsaWVudC5oCmluZGV4IGQ2NzM0MDViMjI0YmNlZDNkMGY5MTcwNWJhNmQxY2UxYTBh
MWZjMTMuLjJmZTZkZTIwOTM2N2RhOTZkZTRlYWZlMGI1NjQ5ODQ5ZDJhYjllYWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5oCkBAIC02LDEzICs2LDEzIEBACiAgKiBhcmUgbWV0OgogICoKICAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4gCisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgogICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiAgKiAzLiAgTmVpdGhl
ciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1l
cyBvZgogICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICAqCiAg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQogICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRApAQCAtODEsNyArODEsNyBAQCBw
dWJsaWM6CiAKIHByaXZhdGU6CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9yQ2xpZW50KCk7Ci0g
ICAgV1RGOjpQYXNzT3duUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6
OlNldHRpbmdzPiBjcmVhdGVGcm9udGVuZFNldHRpbmdzKCk7CisgICAgc3RkOjp1bmlxdWVfcHRy
PFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OlNldHRpbmdzPiBjcmVhdGVG
cm9udGVuZFNldHRpbmdzKCk7CiAKICAgICBXZWJWaWV3KiBtX2luc3BlY3RlZFdlYlZpZXc7CiAg
ICAgV2ViQ29yZTo6UGFnZSogbV9mcm9udGVuZFBhZ2U7CkBAIC05NCwxOSArOTQsMTkgQEAgcHJp
dmF0ZToKIAogY2xhc3MgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQgOiBwdWJsaWMgV2ViQ29y
ZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCwgV2ViQ29yZTo6V2luZG93TWVzc2FnZUxp
c3RlbmVyIHsKIHB1YmxpYzoKLSAgICBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3
KiBpbnNwZWN0ZWRXZWJWaWV3LCBIV05EIGluc3BlY3RlZFdlYlZpZXdId25kLCBIV05EIGZyb250
ZW5kSHduZCwgY29uc3QgQ09NUHRyPFdlYlZpZXc+JiBmcm90bmVuZFdlYlZpZXcsIEhXTkQgZnJv
bnRlbmRXZWJWaWV3SHduZCwgV2ViSW5zcGVjdG9yQ2xpZW50KiwgV1RGOjpQYXNzT3duUHRyPFNl
dHRpbmdzPik7CisgICAgV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViVmlldyogaW5zcGVj
dGVkV2ViVmlldywgSFdORCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwgSFdORCBmcm9udGVuZEh3bmQs
IGNvbnN0IENPTVB0cjxXZWJWaWV3PiYgZnJvdG5lbmRXZWJWaWV3LCBIV05EIGZyb250ZW5kV2Vi
Vmlld0h3bmQsIFdlYkluc3BlY3RvckNsaWVudCosIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4p
OwogICAgIHZpcnR1YWwgfldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KCk7CiAKICAgICB2aXJ0
dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKTsKLSAgICAKKwogICAgIHZpcnR1YWwgV1RGOjpTdHJp
bmcgbG9jYWxpemVkU3RyaW5nc1VSTCgpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIGJyaW5n
VG9Gcm9udCgpOwogICAgIHZpcnR1YWwgdm9pZCBjbG9zZVdpbmRvdygpOwotICAgIAorCiAgICAg
dmlydHVhbCB2b2lkIGF0dGFjaFdpbmRvdyhEb2NrU2lkZSk7CiAgICAgdmlydHVhbCB2b2lkIGRl
dGFjaFdpbmRvdygpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2luZG93
SGVpZ2h0KHVuc2lnbmVkIGhlaWdodCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEF0dGFjaGVkV2lu
ZG93V2lkdGgodW5zaWduZWQpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRUb29sYmFySGVpZ2h0KHVu
c2lnbmVkKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5jcHAKaW5kZXggYjNlNmU0NWY5YjE4YTZlMzI3Nzk2OWU3ZWNhNmZmYWM0ZTA1MzM5ZS4uYmI0
NTljNDI2OTE3MjNiYTFhZWI4NWE4NjQ2M2ViNWJjYmQ5ZDI0NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudC5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogV2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlBhZ2UqIHBhZ2UsIFdlYlBh
Z2UqIGluc3BlY3RvclBhZ2UpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZw
YWdlLT5jb3JlUGFnZSgpLT5pbnNwZWN0b3JDb250cm9sbGVyKCksIGluc3BlY3RvclBhZ2UtPmNv
cmVQYWdlKCksIGFkb3B0UHRyKG5ldyBTZXR0aW5ncygpKSkKKyAgICA6IEluc3BlY3RvckZyb250
ZW5kQ2xpZW50TG9jYWwoJnBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwg
aW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwgc3RkOjptYWtlX3VuaXF1ZTxTZXR0aW5ncz4oKSkK
ICAgICAsIG1fcGFnZShwYWdlKQogewogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>224369</attachid>
            <date>2014-02-17 08:13:23 -0800</date>
            <delta_ts>2014-02-17 12:29:53 -0800</delta_ts>
            <desc>v6 - this might build</desc>
            <filename>bug-128681-20140217131314.patch</filename>
            <type>text/plain</type>
            <size>100660</size>
            <attacher name="Sergio Correia (qrwteyrutiyoup)">sergio</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY0MjIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
NGQ4MGI4MDcyZTJkMTJlY2M1M2FhNDFhOWVlZWM4MmZhZTM3MjdjLi43ZWMyYTI1MjdkMDkyZmUy
ZjVmYzdmNzI5OTUxZTdhMjNkNWE5MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMg
Z2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAg
V2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIg
ZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rp
bmcgd2VyZSB0b3VjaGVkLgorCisKKyAgICAgICAgKiBpbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0
aWxpdGllcy5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaDoKKwog
MjAxNC0wMi0xNyAgRMOhbmllbCBCw6F0eWFpICA8ZGJhdHlhaS51LXN6ZWdlZEBwYXJ0bmVyLnNh
bXN1bmcuY29tPgogCiAgICAgICAgIEZpeCB0aGUgQ0xvb3AgYnVpbGQgYWZ0ZXIgcjE2Mzc2MApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDQ4N2UxNTc4MmMyMjhhZmE0NjI5YTFjZmIzN2QzYWIyOTZmNzg1YWQuLjNh
OWRjNzFlOWQyNTkzYWE1OWZmMzJjZjFiNTRlNjY2NmI0YWQ1MDMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1OCBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8uY29ycmVpYUBv
cGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3duUHRyL093blB0
ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVwIHRvd2FyZHMg
Z2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcKKyAgICAgICAg
V2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBmZXcgb3RoZXIg
ZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJLaXQvLCBXZWJL
aXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJDb3JlL3Rlc3Rp
bmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgIE5vIG5ldyB0ZXN0czsgbm8gbmV3IGJlaGF2aW9y
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1h
bmRMaW5lQVBJSG9zdC5jcHA6CisgICAgICAgICogaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9z
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9ET01FZGl0b3IuY3BwOgorICAgICAgICAqIGluc3Bl
Y3Rvci9ET01QYXRjaFN1cHBvcnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9ET01QYXRjaFN1
cHBvcnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQ
cm9maWxlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvcklucHV0QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTGF5ZXJU
cmVlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3Bw
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yT3ZlcmxheS5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQcm9maWxlckFn
ZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5oOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JTdHlsZVNoZWV0LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
U3R5bGVTaGVldC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JUaW1lbGluZUFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvUGFnZUNvbnNvbGVBZ2VudC5jcHA6CisgICAgICAgICogaW5zcGVjdG9y
L1BhZ2VSdW50aW1lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50
LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyUnVudGltZUFnZW50Lmg6CisgICAgICAg
ICogdGVzdGluZy9JbnRlcm5hbHMuY3BwOgorCiAyMDE0LTAyLTE3ICBNYW51ZWwgUmVnbyBDYXNh
c25vdmFzICA8cmVnb0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtDU1MgR3JpZCBMYXlvdXRdIEZp
eCBtaXNzaW5nIGxheW91dCBpbiBmbGV4aWJsZSBhbmQgY29udGVudCBzaXplZCBjb2x1bW5zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IGY0ZGRmZjI1YTI5MThjMDZlMDJjZTdiYmY3OGE5ZDRiMTk4OWM0ZTkuLjE2MWVi
MDNmNjVjNTk3ZDkyMDU1NWYwMzNlZTE3MTQ2OTY1YzExOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTcgQEAKKzIwMTQtMDItMTMgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJv
c3NhLm9yZz4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0
aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dhcmRzIGdldHRp
bmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAgICAgIFdlYkNv
cmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90aGVyIGZpbGVz
IGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciwgV2ViS2l0LywgV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LworICAgICAgICBhbmQgV2ViQ29yZS90ZXN0aW5nIHdl
cmUgdG91Y2hlZC4KKworICAgICAgICAqIFdlYktpdC52Y3hwcm9qL1dlYktpdEV4cG9ydEdlbmVy
YXRvci9XZWJLaXRFeHBvcnRzLmRlZi5pbjoKKwogMjAxNC0wMi0xNSAgQWxleGV5IFByb3NrdXJ5
YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBSZW1vdmUgV2ViU2VyaWFsaXpl
ZEpTVmFsdWUgU1BJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2NmL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCmluZGV4IDc1NjIxNWZjM2MwMjNhMDE4NmEwMWYzNGM3
NTM3OTQ0M2YzNmY5OWEuLmNmODEzODUxZTE4YTI0NDI5NWEwYzZjN2U1OTAyZjdhNTM3YzIwNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2YvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2YvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDItMTMgIFNlcmdpbyBDb3Jy
ZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXBsYWNlIHVz
ZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9p
bnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEyODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFub3RoZXIgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBu
b3cgdGFyZ2V0aW5nCisgICAgICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMg
aW4gdGhlcmUsIGEgZmV3IG90aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2lu
c3BlY3RvciwgV2ViS2l0LywgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LworICAg
ICAgICBhbmQgV2ViQ29yZS90ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcDoKKwogMjAxMy0xMi0wMyAgSm9zZXBo
IFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFB1c2ggUmVtb3RlIEluc3BlY3RvciBkZWJ1Z2dpbmcgY29ubmVjdGlvbiBtYW5hZ2VtZW50IGlu
dG8gSmF2YVNjcmlwdENvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxv
ZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCBlYzg2ODdjZDE0ODkyMTI0Mzgy
ZjU3ZTgxZWI2ZTFlZmVhN2Y0ZjIwLi5mZDVjZDQxNDI5M2QzODIzYmEwZTRlZTk0YjEyMDFmY2Qx
NDQ2NzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTQtMDItMTMgIFNl
cmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJlaWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBS
ZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9Pd25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4g
V2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyODY4MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dhcmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIv
T3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAgICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lk
ZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3Jp
cHRDb3JlL2luc3BlY3RvciwgV2ViS2l0LywgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0LworICAgICAgICBhbmQgV2ViQ29yZS90ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVmbC5jcHA6CisKIDIwMTQtMDItMTUg
IFJ5dWFuIENob2kgIDxyeXVhbi5jaG9pQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtFRkxdW1dL
MV0gRG8gbm90IGluY2x1ZGUgY2Fpcm8gaGVhZGVyIGluIHRoZSBwdWJsaWMgaGVhZGVycwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsv
Q2hhbmdlTG9nCmluZGV4IDExZjBkYmI0YjU2NWEzZjg3YzhjNzRiYzgzZTcyYTM5OWNiY2EwZjQu
LjI3ODlmMGU5ODFmYjE2Mzk3MGMzOGFjZjE4YmQ2MmUyOTQyYTg1YWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8u
Y29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3du
UHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVw
IHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcK
KyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBm
ZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJL
aXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJD
b3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvSW5z
cGVjdG9yQ2xpZW50R3RrLmNwcDoKKwogMjAxNC0wMi0xMSAgWmFsYW4gQnVqdGFzICA8emFsYW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFN1YnBpeGVsIHJlbmRlcmluZzogTWFrZSBHcmFwaGljc0xh
eWVyQ2xpZW50OjpwYWludENvbnRlbnRzJ3MgY2xpcCByZWN0IHN1YnBpeGVsIGJhc2VkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nCmluZGV4IGIyOGFlNTQwMjg4NTg5NWEzMTBkZWVhMDQ0ZDhmMGJiZjIwM2I4MjMu
LmU5MGE1MzNlNDZlMzE4NTgwZjcxN2E4ZTE0NGI1NGVlYjU3NDcwNTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxNC0wMi0xMyAgU2VyZ2lvIENvcnJlaWEgIDxzZXJnaW8u
Y29ycmVpYUBvcGVuYm9zc2Eub3JnPgorCisgICAgICAgIFJlcGxhY2UgdXNlcyBvZiBQYXNzT3du
UHRyL093blB0ciB3aXRoIHN0ZDo6dW5pcXVlX3B0ciBpbiBXZWJDb3JlL2luc3BlY3RvcgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI4NjgxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQW5vdGhlciBzdGVw
IHRvd2FyZHMgZ2V0dGluZyByaWQgb2YgUGFzc093blB0ci9Pd25QdHIsIG5vdyB0YXJnZXRpbmcK
KyAgICAgICAgV2ViQ29yZS9pbnNwZWN0b3IvKi4gQmVzaWRlcyBmaWxlcyBpbiB0aGVyZSwgYSBm
ZXcgb3RoZXIgZmlsZXMgaW4KKyAgICAgICAgSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yLCBXZWJL
aXQvLCBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvCisgICAgICAgIGFuZCBXZWJD
b3JlL3Rlc3Rpbmcgd2VyZSB0b3VjaGVkLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
SW5zcGVjdG9yQ2xpZW50SU9TLm1tOgorCiAyMDE0LTAyLTEyICBCZW5qYW1pbiBQb3VsYWluICA8
YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtXSzJdW2lPU10gQWRkIGJhY2sgdGhlIHNw
ZWNpYWwgdmlld3BvcnQgZm9yIHRoZSBvbGQgeGh0bWwgbW9iaWxlIGRvY3R5cGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZwppbmRleCA5M2I3YTdiZGE5MjVjYmUyZDAzYjJiMmRkMjVkYjZiZjU0NTE4YTM4Li5lZmNj
ZDMyYTYxN2NmMzYxNzdhZTUyZjRkMzVkMmE1Mzc0MWNhODhlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTggQEAKKzIwMTQtMDItMTMgIFNlcmdpbyBDb3JyZWlhICA8c2VyZ2lvLmNvcnJl
aWFAb3BlbmJvc3NhLm9yZz4KKworICAgICAgICBSZXBsYWNlIHVzZXMgb2YgUGFzc093blB0ci9P
d25QdHIgd2l0aCBzdGQ6OnVuaXF1ZV9wdHIgaW4gV2ViQ29yZS9pbnNwZWN0b3IKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyODY4MQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFub3RoZXIgc3RlcCB0b3dh
cmRzIGdldHRpbmcgcmlkIG9mIFBhc3NPd25QdHIvT3duUHRyLCBub3cgdGFyZ2V0aW5nCisgICAg
ICAgIFdlYkNvcmUvaW5zcGVjdG9yLyouIEJlc2lkZXMgZmlsZXMgaW4gdGhlcmUsIGEgZmV3IG90
aGVyIGZpbGVzIGluCisgICAgICAgIEphdmFTY3JpcHRDb3JlL2luc3BlY3RvciwgV2ViS2l0Lywg
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0LworICAgICAgICBhbmQgV2ViQ29yZS90
ZXN0aW5nIHdlcmUgdG91Y2hlZC4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3Bl
Y3RvckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5tbToKKwogMjAxNC0wMi0xNSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBbTWFjXSBSZW1vdmUgV2ViU2VyaWFsaXplZEpTVmFsdWUgU1BJCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cKaW5kZXggNmRiZDc0YmQ0ZTg5NTQ3NjYxMGI2MjY0YjhlZDY2ZDk2MmYwMDY0Zi4uY2U1
ZTEzNTAxZTBjYzE5ODlkZjA0YjgxMmI4NzE1NGFjZWVhNGVhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDE0LTAyLTEzICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5jb3Jy
ZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFBhc3NPd25QdHIv
T3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2ODEKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbm90aGVyIHN0ZXAgdG93
YXJkcyBnZXR0aW5nIHJpZCBvZiBQYXNzT3duUHRyL093blB0ciwgbm93IHRhcmdldGluZworICAg
ICAgICBXZWJDb3JlL2luc3BlY3Rvci8qLiBCZXNpZGVzIGZpbGVzIGluIHRoZXJlLCBhIGZldyBv
dGhlciBmaWxlcyBpbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IsIFdlYktpdC8s
IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8KKyAgICAgICAgYW5kIFdlYkNvcmUv
dGVzdGluZyB3ZXJlIHRvdWNoZWQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJJbnNw
ZWN0b3JDbGllbnQuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5oOgorCiAyMDE0LTAyLTE0ICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgogCiAgICAgICAgIFtXaW5dIE1ha2UgdGVzdHMgbW9yZSBjb25zaXN0ZW50IHdpdGggTWFjIHBs
YXRmb3JtCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMzY2M2Y0NDM4ZTRhM2U5M2Q5NjI0ODEzNzZjMGJiOWZlMzMy
MGI2OC4uYTRlNmNkZDJlNDBlMWU2OWQwZjExYzg4Y2U1ZDFkMjM0ZDg4NjlmOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDE3IEBACisyMDE0LTAyLTEzICBTZXJnaW8gQ29ycmVpYSAgPHNlcmdpby5j
b3JyZWlhQG9wZW5ib3NzYS5vcmc+CisKKyAgICAgICAgUmVwbGFjZSB1c2VzIG9mIFBhc3NPd25Q
dHIvT3duUHRyIHdpdGggc3RkOjp1bmlxdWVfcHRyIGluIFdlYkNvcmUvaW5zcGVjdG9yCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjg2ODEKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbm90aGVyIHN0ZXAg
dG93YXJkcyBnZXR0aW5nIHJpZCBvZiBQYXNzT3duUHRyL093blB0ciwgbm93IHRhcmdldGluZwor
ICAgICAgICBXZWJDb3JlL2luc3BlY3Rvci8qLiBCZXNpZGVzIGZpbGVzIGluIHRoZXJlLCBhIGZl
dyBvdGhlciBmaWxlcyBpbgorICAgICAgICBKYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IsIFdlYktp
dC8sIFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC8KKyAgICAgICAgYW5kIFdlYkNv
cmUvdGVzdGluZyB3ZXJlIHRvdWNoZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcDoKKwogMjAxNC0wMi0xNiAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFNwZWN1bGF0aXZlIGlPUyBi
dWlsZCBmaXguCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0Nv
bnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcAppbmRleCAyMDJkM2ZkZGEwOTliMjJiNzZiYWM1
OGIwYjVmMjdjMTMyNTVmNjcyLi43NDQ1Y2VmZDA3OGZmNzMzMjc0M2M3MTU2ZTMwMTliMTk1ZmFj
OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRT
ZWFyY2hVdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
Q29udGVudFNlYXJjaFV0aWxpdGllcy5jcHAKQEAgLTgyLDcgKzgyLDcgQEAgc3RhdGljIFZlY3Rv
cjxzdGQ6OnBhaXI8aW50LCBTdHJpbmc+PiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNCeUxp
bmVzKGNvbnN0IEoKICAgICBpZiAodGV4dC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAKLSAgICBPd25QdHI8VmVjdG9yPHNpemVfdD4+IGVuZGluZ3MobGluZUVuZGluZ3ModGV4
dCkpOworICAgIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gZW5kaW5ncyhsaW5lRW5k
aW5ncyh0ZXh0KSk7CiAgICAgc2l6ZV90IHNpemUgPSBlbmRpbmdzLT5zaXplKCk7CiAgICAgdW5z
aWduZWQgc3RhcnQgPSAwOwogICAgIGZvciAoc2l6ZV90IGxpbmVOdW1iZXIgPSAwOyBsaW5lTnVt
YmVyIDwgc2l6ZTsgKytsaW5lTnVtYmVyKSB7CkBAIC0xMDAsOSArMTAwLDkgQEAgc3RhdGljIFZl
Y3RvcjxzdGQ6OnBhaXI8aW50LCBTdHJpbmc+PiBnZXRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXNC
eUxpbmVzKGNvbnN0IEoKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1QYXNzT3duUHRyPFZlY3Rv
cjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmIHRleHQpCitzdGQ6OnVuaXF1ZV9w
dHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRpbmdzKGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKLSAg
ICBPd25QdHI8VmVjdG9yPHNpemVfdD4+IHJlc3VsdChhZG9wdFB0cihuZXcgVmVjdG9yPHNpemVf
dD4oKSkpOworICAgIGF1dG8gcmVzdWx0ID0gc3RkOjptYWtlX3VuaXF1ZTxWZWN0b3I8c2l6ZV90
Pj4oKTsKIAogICAgIHVuc2lnbmVkIHN0YXJ0ID0gMDsKICAgICB3aGlsZSAoc3RhcnQgPCB0ZXh0
Lmxlbmd0aCgpKSB7CkBAIC0xMTUsNyArMTE1LDcgQEAgUGFzc093blB0cjxWZWN0b3I8c2l6ZV90
Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJiB0ZXh0KQogICAgIH0KICAgICByZXN1bHQtPmFw
cGVuZCh0ZXh0Lmxlbmd0aCgpKTsKIAotICAgIHJldHVybiByZXN1bHQucmVsZWFzZSgpOworICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+IGJ1aWxkT2JqZWN0Rm9yU2VhcmNoTWF0
Y2goaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyYgbGluZUNvbnRlbnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRpZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGll
cy5oCmluZGV4IDNlYWEwNjY0MWMzZGE1NDFiNzlkYjRiZTQ5ZDU3ZDIyMDdkMjczODcuLjJiYzJk
M2M3YzBkZDJkZTJmMWMyMmEzYzJkYjZmYTExYTZiMzIyZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvQ29udGVudFNlYXJjaFV0aWxpdGllcy5oCkBA
IC00OCw3ICs0OCw3IEBAIEpTX0VYUE9SVF9QUklWQVRFIEpTQzo6WWFycjo6UmVndWxhckV4cHJl
c3Npb24gY3JlYXRlU2VhcmNoUmVnZXgoY29uc3QgU3RyaW5nJiBxCiBKU19FWFBPUlRfUFJJVkFU
RSBpbnQgY291bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMoY29uc3QgSlNDOjpZYXJyOjpSZWd1
bGFyRXhwcmVzc2lvbiYsIGNvbnN0IFN0cmluZyYpOwogSlNfRVhQT1JUX1BSSVZBVEUgUGFzc1Jl
ZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVy
OjpHZW5lcmljVHlwZXM6OlNlYXJjaE1hdGNoPj4gc2VhcmNoSW5UZXh0QnlMaW5lcyhjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wgY2FzZVNlbnNpdGl2
ZSwgY29uc3QgYm9vbCBpc1JlZ2V4KTsKIEpTX0VYUE9SVF9QUklWQVRFIFRleHRQb3NpdGlvbiB0
ZXh0UG9zaXRpb25Gcm9tT2Zmc2V0KHNpemVfdCBvZmZzZXQsIGNvbnN0IFZlY3RvcjxzaXplX3Q+
JiBsaW5lRW5kaW5ncyk7Ci1KU19FWFBPUlRfUFJJVkFURSBQYXNzT3duUHRyPFZlY3RvcjxzaXpl
X3Q+PiBsaW5lRW5kaW5ncyhjb25zdCBTdHJpbmcmKTsKK0pTX0VYUE9SVF9QUklWQVRFIHN0ZDo6
dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoY29uc3QgU3RyaW5nJik7CiAK
IEpTX0VYUE9SVF9QUklWQVRFIFN0cmluZyBmaW5kU2NyaXB0U291cmNlVVJMKGNvbnN0IFN0cmlu
ZyYgY29udGVudCk7CiBKU19FWFBPUlRfUFJJVkFURSBTdHJpbmcgZmluZFNjcmlwdFNvdXJjZU1h
cFVSTChjb25zdCBTdHJpbmcmIGNvbnRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5j
cHAKaW5kZXggZGI2ZjkxMDZjZGU2ZGExNmE4ZWVjZTk0NWI3ZDliMmVhNDg5ZTdlYS4uNzJmNjBj
MWYyNDI5NzU4ZTVmNzMxZjQyMzQxODM3OWFiOTVmZmJmOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDb25z
b2xlQWdlbnQuY3BwCkBAIC0zNiw4ICszNiw2IEBACiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5oIgogI2luY2x1ZGUgIlNjcmlwdE9iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9DdXJy
ZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTMwLDcgKzEyOCw3IEBAIHZvaWQgSW5zcGVjdG9y
Q29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBN
ZXNzYWdlVHlwCiAgICAgICAgIGNsZWFyTWVzc2FnZXMoJmVycm9yKTsKICAgICB9CiAKLSAgICBh
ZGRDb25zb2xlTWVzc2FnZShhZG9wdFB0cihuZXcgQ29uc29sZU1lc3NhZ2UoIWlzV29ya2VyQWdl
bnQoKSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRl
bnRpZmllcikpKTsKKyAgICBhZGRDb25zb2xlTWVzc2FnZShzdGQ6Om1ha2VfdW5pcXVlPENvbnNv
bGVNZXNzYWdlPighaXNXb3JrZXJBZ2VudCgpLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdl
LCBjYWxsU3RhY2ssIHJlcXVlc3RJZGVudGlmaWVyKSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ29u
c29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNz
YWdlVHlwZSB0eXBlLCBNZXNzYWdlTGV2ZWwgbGV2ZWwsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwg
SlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBQYXNzUmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4gYXJndW1l
bnRzLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQpAQCAtMTQzLDcgKzE0MSw3IEBA
IHZvaWQgSW5zcGVjdG9yQ29uc29sZUFnZW50OjphZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwCiAgICAgICAgIGNsZWFyTWVzc2FnZXMoJmVycm9yKTsK
ICAgICB9CiAKLSAgICBhZGRDb25zb2xlTWVzc2FnZShhZG9wdFB0cihuZXcgQ29uc29sZU1lc3Nh
Z2UoIWlzV29ya2VyQWdlbnQoKSwgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1l
bnRzLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpKSk7CisgICAgYWRkQ29uc29sZU1lc3NhZ2Uo
c3RkOjptYWtlX3VuaXF1ZTxDb25zb2xlTWVzc2FnZT4oIWlzV29ya2VyQWdlbnQoKSwgc291cmNl
LCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgYXJndW1lbnRzLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZp
ZXIpKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZE1lc3NhZ2VUb0NvbnNv
bGUoTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBs
ZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIEpTQzo6RXhlY1N0YXRlKiBz
dGF0ZSwgdW5zaWduZWQgbG9uZyByZXF1ZXN0SWRlbnRpZmllcikKQEAgLTE1Nyw3ICsxNTUsNyBA
QCB2b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cAogICAgIH0KIAogICAgIGJvb2wgY2FuR2VuZXJhdGVD
YWxsU3RhY2sgPSAhaXNXb3JrZXJBZ2VudCgpICYmIG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAg
IGFkZENvbnNvbGVNZXNzYWdlKGFkb3B0UHRyKG5ldyBDb25zb2xlTWVzc2FnZShjYW5HZW5lcmF0
ZUNhbGxTdGFjaywgc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgc2NyaXB0SUQsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgc3RhdGUsIHJlcXVlc3RJZGVudGlmaWVyKSkpOworICAgIGFk
ZENvbnNvbGVNZXNzYWdlKHN0ZDo6bWFrZV91bmlxdWU8Q29uc29sZU1lc3NhZ2U+KGNhbkdlbmVy
YXRlQ2FsbFN0YWNrLCBzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzY3JpcHRJRCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBzdGF0ZSwgcmVxdWVzdElkZW50aWZpZXIpKTsKIH0KIAog
VmVjdG9yPHVuc2lnbmVkPiBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmNvbnNvbGVNZXNzYWdlQXJn
dW1lbnRDb3VudHMoKSBjb25zdApAQCAtMjI5LDcgKzIyNyw3IEBAIHN0YXRpYyBib29sIGlzR3Jv
dXBNZXNzYWdlKE1lc3NhZ2VUeXBlIHR5cGUpCiAgICAgICAgIHx8IHR5cGUgPT0gTWVzc2FnZVR5
cGU6OkVuZEdyb3VwOwogfQogCi12b2lkIEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29s
ZU1lc3NhZ2UoUGFzc093blB0cjxDb25zb2xlTWVzc2FnZT4gY29uc29sZU1lc3NhZ2UpCit2b2lk
IEluc3BlY3RvckNvbnNvbGVBZ2VudDo6YWRkQ29uc29sZU1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRy
PENvbnNvbGVNZXNzYWdlPiBjb25zb2xlTWVzc2FnZSkKIHsKICAgICBBU1NFUlQobV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXItPmluc3BlY3RvckVudmlyb25tZW50KCkuZGV2ZWxvcGVyRXh0cmFzRW5h
YmxlZCgpKTsKICAgICBBU1NFUlRfQVJHKGNvbnNvbGVNZXNzYWdlLCBjb25zb2xlTWVzc2FnZSk7
CkBAIC0yNDAsNyArMjM4LDcgQEAgdm9pZCBJbnNwZWN0b3JDb25zb2xlQWdlbnQ6OmFkZENvbnNv
bGVNZXNzYWdlKFBhc3NPd25QdHI8Q29uc29sZU1lc3NhZ2U+IGNvbnNvbGUKICAgICAgICAgICAg
IG1fcHJldmlvdXNNZXNzYWdlLT51cGRhdGVSZXBlYXRDb3VudEluQ29uc29sZShtX2Zyb250ZW5k
RGlzcGF0Y2hlci5nZXQoKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgbV9wcmV2aW91c01lc3Nh
Z2UgPSBjb25zb2xlTWVzc2FnZS5nZXQoKTsKLSAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBw
ZW5kKGNvbnNvbGVNZXNzYWdlKTsKKyAgICAgICAgbV9jb25zb2xlTWVzc2FnZXMuYXBwZW5kKHN0
ZDo6bW92ZShjb25zb2xlTWVzc2FnZSkpOwogICAgICAgICBpZiAobV9mcm9udGVuZERpc3BhdGNo
ZXIgJiYgbV9lbmFibGVkKQogICAgICAgICAgICAgbV9wcmV2aW91c01lc3NhZ2UtPmFkZFRvRnJv
bnRlbmQobV9mcm9udGVuZERpc3BhdGNoZXIuZ2V0KCksIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LCB0cnVlKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCmluZGV4IDQ5YTc5ZTYz
ZDM5OThmYTM4YTA0MTE1YmNjNThjN2YxNWQyZjgzYTIuLmY4NTdmYzc4YTZiYjQ3OGU4MjY0ZWY4
YTU4NzcwMGJkNjhjOGM4YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNvbGVBZ2VudC5oCkBAIC04Mywx
MyArODMsMTMgQEAgcHVibGljOgogICAgIHZvaWQgY291bnQoSlNDOjpFeGVjU3RhdGUqLCBQYXNz
UmVmUHRyPFNjcmlwdEFyZ3VtZW50cz4pOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdm9pZCBhZGRDb25z
b2xlTWVzc2FnZShQYXNzT3duUHRyPENvbnNvbGVNZXNzYWdlPik7CisgICAgdm9pZCBhZGRDb25z
b2xlTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8Q29uc29sZU1lc3NhZ2U+KTsKIAogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAgICAgc3RkOjp1bmlx
dWVfcHRyPEluc3BlY3RvckNvbnNvbGVGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNw
YXRjaGVyOwogICAgIFJlZlB0cjxJbnNwZWN0b3JDb25zb2xlQmFja2VuZERpc3BhdGNoZXI+IG1f
YmFja2VuZERpc3BhdGNoZXI7CiAgICAgQ29uc29sZU1lc3NhZ2UqIG1fcHJldmlvdXNNZXNzYWdl
OwotICAgIFZlY3RvcjxPd25QdHI8Q29uc29sZU1lc3NhZ2U+PiBtX2NvbnNvbGVNZXNzYWdlczsK
KyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPENvbnNvbGVNZXNzYWdlPj4gbV9jb25zb2xlTWVz
c2FnZXM7CiAgICAgaW50IG1fZXhwaXJlZENvbnNvbGVNZXNzYWdlQ291bnQ7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIHVuc2lnbmVkPiBtX2NvdW50czsKICAgICBIYXNoTWFwPFN0cmluZywgZG91Ymxl
PiBtX3RpbWVzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4gYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRleCBiNjEzMzMyMmFlYWRlNTU3YmNlOTI4
NDU1ZGExYWE1Zjk0NzgxYWUzLi4wZTk0NTE0NWU0NmY0ZWY5N2Q4NDc2ODYwZjM3NDZlNDRkNjU4
NjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjgzMyw3ICsyODMzLDcgQEAgX19aTjdXZWJD
b3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMjdyZXN0b3JlQXR0YWNoZWRXaW5kb3dI
ZWlnaHRFdgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsMjdzZXRU
aW1lbGluZVByb2ZpbGluZ0VuYWJsZWRFYgogX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsMzBjb25zdHJhaW5lZEF0dGFjaGVkV2luZG93V2lkdGhFamoKIF9fWk43V2Vi
Q29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDMxY29uc3RyYWluZWRBdHRhY2hlZFdp
bmRvd0hlaWdodEVqagotX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
QzJFUE5TXzE5SW5zcGVjdG9yQ29udHJvbGxlckVQTlNfNFBhZ2VFTjNXVEYxMFBhc3NPd25QdHJJ
TlMwXzhTZXR0aW5nc0VFRQorX19aTjdXZWJDb3JlMjhJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsQzJFUE5TXzE5SW5zcGVjdG9yQ29udHJvbGxlckVQTlNfNFBhZ2VFTlN0M19fMTEwdW5pcXVl
X3B0cklOUzBfOFNldHRpbmdzRU5TNV8xNGRlZmF1bHRfZGVsZXRlSVM3X0VFRUUKIF9fWk43V2Vi
Q29yZTI4SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEQyRXYKIF9fWk43V2ViQ29yZTR0b0pT
RVBOM0pTQzlFeGVjU3RhdGVFUE5TXzE3SlNET01HbG9iYWxPYmplY3RFUE5TXzlET01XaW5kb3dF
CiBfX1pON1dlYkNvcmU5RE9NV2luZG93NG9wZW5FUktOM1dURjZTdHJpbmdFUktOUzFfMTJBdG9t
aWNTdHJpbmdFUzRfUlMwX1M4XwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0NvbW1hbmRMaW5lQVBJSG9zdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFu
ZExpbmVBUElIb3N0LmNwcAppbmRleCBmNDA0YTUyZmViZWYxMTFmODI3OTdiYzFhZGEyMmE5MTdi
MGY1MTVhLi4xZTBmYWQzN2ZhNzk4ZjJiYWViNzcxMWI3ZjQyMDY0YzkzYWU0ZjdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmNwcApAQCAtNzQs
NyArNzQsNyBAQCBDb21tYW5kTGluZUFQSUhvc3Q6OkNvbW1hbmRMaW5lQVBJSG9zdCgpCiAgICAg
LCBtX2RhdGFiYXNlQWdlbnQobnVsbHB0cikKICNlbmRpZgogewotICAgIG1fZGVmYXVsdEluc3Bl
Y3RhYmxlT2JqZWN0ID0gYWRvcHRQdHIobmV3IEluc3BlY3RhYmxlT2JqZWN0KTsKKyAgICBtX2Rl
ZmF1bHRJbnNwZWN0YWJsZU9iamVjdCA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVPYmpl
Y3Q+KCk7CiB9CiAKIENvbW1hbmRMaW5lQVBJSG9zdDo6fkNvbW1hbmRMaW5lQVBJSG9zdCgpCkBA
IC0xMjQsOSArMTI0LDkgQEAgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgQ29tbWFuZExpbmVBUElI
b3N0OjpJbnNwZWN0YWJsZU9iamVjdDo6Z2V0KEpTQzo6RXhlY1N0YXQKICAgICByZXR1cm4gRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUoKTsKIH07CiAKLXZvaWQgQ29tbWFuZExpbmVBUElIb3N0Ojph
ZGRJbnNwZWN0ZWRPYmplY3QoUGFzc093blB0cjxDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3Rh
YmxlT2JqZWN0PiBvYmplY3QpCit2b2lkIENvbW1hbmRMaW5lQVBJSG9zdDo6YWRkSW5zcGVjdGVk
T2JqZWN0KHN0ZDo6dW5pcXVlX3B0cjxDb21tYW5kTGluZUFQSUhvc3Q6Okluc3BlY3RhYmxlT2Jq
ZWN0PiBvYmplY3QpCiB7Ci0gICAgbV9pbnNwZWN0ZWRPYmplY3RzLmluc2VydCgwLCBvYmplY3Qp
OworICAgIG1faW5zcGVjdGVkT2JqZWN0cy5pbnNlcnQoMCwgc3RkOjptb3ZlKG9iamVjdCkpOwog
ICAgIHdoaWxlIChtX2luc3BlY3RlZE9iamVjdHMuc2l6ZSgpID4gNSkKICAgICAgICAgbV9pbnNw
ZWN0ZWRPYmplY3RzLnJlbW92ZUxhc3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Db21tYW5kTGluZUFQSUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Db21tYW5kTGluZUFQSUhvc3QuaAppbmRleCAwOGYwYzE1ZDYxZWMxZjAwMThkODhlZTc3Mzgx
YWUwZjVkOGM3MmFhLi42MTc4ZWVlYzI4ZTdmOWRjZDgxZTUwMjViMGNkZDhhYzY3YjY4MGNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvQ29tbWFuZExpbmVBUElIb3N0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0NvbW1hbmRMaW5lQVBJSG9zdC5oCkBAIC05
Miw3ICs5Miw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCBEZXByZWNhdGVkOjpTY3JpcHRW
YWx1ZSBnZXQoSlNDOjpFeGVjU3RhdGUqKTsKICAgICAgICAgdmlydHVhbCB+SW5zcGVjdGFibGVP
YmplY3QoKSB7IH0KICAgICB9OwotICAgIHZvaWQgYWRkSW5zcGVjdGVkT2JqZWN0KFBhc3NPd25Q
dHI8SW5zcGVjdGFibGVPYmplY3Q+KTsKKyAgICB2b2lkIGFkZEluc3BlY3RlZE9iamVjdChzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdGFibGVPYmplY3Q+KTsKICAgICB2b2lkIGNsZWFySW5zcGVjdGVk
T2JqZWN0cygpOwogICAgIEluc3BlY3RhYmxlT2JqZWN0KiBpbnNwZWN0ZWRPYmplY3QodW5zaWdu
ZWQgaW5kZXgpOwogICAgIHZvaWQgaW5zcGVjdEltcGwoUGFzc1JlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlPiBvYmplY3RUb0luc3BlY3QsIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JWYWx1ZT4gaGludHMpOwpAQCAtMTE1LDggKzExNSw4IEBAIHByaXZhdGU6CiAgICAgSW5z
cGVjdG9yRGF0YWJhc2VBZ2VudCogbV9kYXRhYmFzZUFnZW50OwogI2VuZGlmCiAKLSAgICBWZWN0
b3I8T3duUHRyPEluc3BlY3RhYmxlT2JqZWN0Pj4gbV9pbnNwZWN0ZWRPYmplY3RzOwotICAgIE93
blB0cjxJbnNwZWN0YWJsZU9iamVjdD4gbV9kZWZhdWx0SW5zcGVjdGFibGVPYmplY3Q7CisgICAg
VmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0YWJsZU9iamVjdD4+IG1faW5zcGVjdGVkT2Jq
ZWN0czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdGFibGVPYmplY3Q+IG1fZGVmYXVsdElu
c3BlY3RhYmxlT2JqZWN0OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTUVkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAppbmRleCA3ZjJmYWI4YmI2ZTcxYWJiODlkMzI5NmNk
MjBhMjNiZmY4MGFmOWUzLi5iOTEyZDE0ZWY2ZDhjZjZlMjQyYjE5ZTU2NDI5NDQ2YWU4YjkxYjBi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NRWRpdG9yLmNwcApAQCAtOTIsNyArOTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHBlcmZvcm0oRXhjZXB0aW9uQ29kZSYgZWMpIG92
ZXJyaWRlCiAgICAgewogICAgICAgICBpZiAobV9ub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAg
ICAgICAgIG1fcmVtb3ZlQ2hpbGRBY3Rpb24gPSBhZG9wdFB0cihuZXcgUmVtb3ZlQ2hpbGRBY3Rp
b24obV9ub2RlLT5wYXJlbnROb2RlKCksIG1fbm9kZS5nZXQoKSkpOworICAgICAgICAgICAgbV9y
ZW1vdmVDaGlsZEFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQ2hpbGRBY3Rpb24+KG1f
bm9kZS0+cGFyZW50Tm9kZSgpLCBtX25vZGUuZ2V0KCkpOwogICAgICAgICAgICAgaWYgKCFtX3Jl
bW92ZUNoaWxkQWN0aW9uLT5wZXJmb3JtKGVjKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgIH0KQEAgLTExOSw3ICsxMTksNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxO
b2RlPiBtX3BhcmVudE5vZGU7CiAgICAgUmVmUHRyPE5vZGU+IG1fbm9kZTsKICAgICBSZWZQdHI8
Tm9kZT4gbV9hbmNob3JOb2RlOwotICAgIE93blB0cjxSZW1vdmVDaGlsZEFjdGlvbj4gbV9yZW1v
dmVDaGlsZEFjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVtb3ZlQ2hpbGRBY3Rpb24+IG1f
cmVtb3ZlQ2hpbGRBY3Rpb247CiB9OwogCiBjbGFzcyBET01FZGl0b3I6OlJlbW92ZUF0dHJpYnV0
ZUFjdGlvbiA6IHB1YmxpYyBJbnNwZWN0b3JIaXN0b3J5OjpBY3Rpb24gewpAQCAtMjA4LDggKzIw
OCw4IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX25leHRTaWJsaW5nKG5vZGUubmV4dFNpYmxpbmco
KSkKICAgICAgICAgLCBtX2h0bWwoaHRtbCkKICAgICAgICAgLCBtX25ld05vZGUobnVsbHB0cikK
LSAgICAgICAgLCBtX2hpc3RvcnkoYWRvcHRQdHIobmV3IEluc3BlY3Rvckhpc3RvcnkoKSkpCi0g
ICAgICAgICwgbV9kb21FZGl0b3IoYWRvcHRQdHIobmV3IERPTUVkaXRvcihtX2hpc3RvcnkuZ2V0
KCkpKSkKKyAgICAgICAgLCBtX2hpc3Rvcnkoc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JIaXN0
b3J5PigpKQorICAgICAgICAsIG1fZG9tRWRpdG9yKHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9y
PihtX2hpc3RvcnkuZ2V0KCkpKQogICAgIHsKICAgICB9CiAKQEAgLTI0Miw4ICsyNDIsOCBAQCBw
cml2YXRlOgogICAgIFN0cmluZyBtX2h0bWw7CiAgICAgU3RyaW5nIG1fb2xkSFRNTDsKICAgICBO
b2RlKiBtX25ld05vZGU7Ci0gICAgT3duUHRyPEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsK
LSAgICBPd25QdHI8RE9NRWRpdG9yPiBtX2RvbUVkaXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
SW5zcGVjdG9ySGlzdG9yeT4gbV9oaXN0b3J5OworICAgIHN0ZDo6dW5pcXVlX3B0cjxET01FZGl0
b3I+IG1fZG9tRWRpdG9yOwogfTsKIAogY2xhc3MgRE9NRWRpdG9yOjpSZXBsYWNlV2hvbGVUZXh0
QWN0aW9uIDogcHVibGljIEluc3BlY3Rvckhpc3Rvcnk6OkFjdGlvbiB7CkBAIC0zNTIsMjkgKzM1
MiwyOSBAQCBET01FZGl0b3I6On5ET01FZGl0b3IoKSB7IH0KIAogYm9vbCBET01FZGl0b3I6Omlu
c2VydEJlZm9yZShOb2RlKiBwYXJlbnROb2RlLCBQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIE5vZGUq
IGFuY2hvck5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX2hpc3Rvcnkt
PnBlcmZvcm0oYWRvcHRQdHIobmV3IEluc2VydEJlZm9yZUFjdGlvbihwYXJlbnROb2RlLCBub2Rl
LCBhbmNob3JOb2RlKSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0ZDo6
bWFrZV91bmlxdWU8SW5zZXJ0QmVmb3JlQWN0aW9uPihwYXJlbnROb2RlLCBub2RlLCBhbmNob3JO
b2RlKSwgZWMpOwogfQogCiBib29sIERPTUVkaXRvcjo6cmVtb3ZlQ2hpbGQoTm9kZSogcGFyZW50
Tm9kZSwgTm9kZSogbm9kZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0dXJuIG1faGlz
dG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgUmVtb3ZlQ2hpbGRBY3Rpb24ocGFyZW50Tm9kZSwg
bm9kZSkpLCBlYyk7CisgICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5p
cXVlPFJlbW92ZUNoaWxkQWN0aW9uPihwYXJlbnROb2RlLCBub2RlKSwgZWMpOwogfQogCiBib29s
IERPTUVkaXRvcjo6c2V0QXR0cmlidXRlKEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
bmFtZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMpCiB7Ci0gICAgcmV0
dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0QXR0cmlidXRlQWN0aW9uKGVs
ZW1lbnQsIG5hbWUsIHZhbHVlKSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3Jt
KHN0ZDo6bWFrZV91bmlxdWU8U2V0QXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lLCB2YWx1
ZSksIGVjKTsKIH0KIAogYm9vbCBET01FZGl0b3I6OnJlbW92ZUF0dHJpYnV0ZShFbGVtZW50KiBl
bGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJl
dHVybiBtX2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlbW92ZUF0dHJpYnV0ZUFjdGlv
bihlbGVtZW50LCBuYW1lKSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJmb3JtKHN0
ZDo6bWFrZV91bmlxdWU8UmVtb3ZlQXR0cmlidXRlQWN0aW9uPihlbGVtZW50LCBuYW1lKSwgZWMp
OwogfQogCiBib29sIERPTUVkaXRvcjo6c2V0T3V0ZXJIVE1MKE5vZGUmIG5vZGUsIGNvbnN0IFN0
cmluZyYgaHRtbCwgTm9kZSoqIG5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIE93
blB0cjxTZXRPdXRlckhUTUxBY3Rpb24+IGFjdGlvbiA9IGFkb3B0UHRyKG5ldyBTZXRPdXRlckhU
TUxBY3Rpb24obm9kZSwgaHRtbCkpOworICAgIGF1dG8gYWN0aW9uID0gc3RkOjptYWtlX3VuaXF1
ZTxTZXRPdXRlckhUTUxBY3Rpb24+KG5vZGUsIGh0bWwpOwogICAgIFNldE91dGVySFRNTEFjdGlv
biogcmF3QWN0aW9uID0gYWN0aW9uLmdldCgpOwotICAgIGJvb2wgcmVzdWx0ID0gbV9oaXN0b3J5
LT5wZXJmb3JtKGFjdGlvbi5yZWxlYXNlKCksIGVjKTsKKyAgICBib29sIHJlc3VsdCA9IG1faGlz
dG9yeS0+cGVyZm9ybShzdGQ6Om1vdmUoYWN0aW9uKSwgZWMpOwogICAgIGlmIChyZXN1bHQpCiAg
ICAgICAgICpuZXdOb2RlID0gcmF3QWN0aW9uLT5uZXdOb2RlKCk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTM4MiwxNyArMzgyLDE3IEBAIGJvb2wgRE9NRWRpdG9yOjpzZXRPdXRlckhUTUwoTm9k
ZSYgbm9kZSwgY29uc3QgU3RyaW5nJiBodG1sLCBOb2RlKiogbmV3Tm9kZSwgRXhjCiAKIGJvb2wg
RE9NRWRpdG9yOjpyZXBsYWNlV2hvbGVUZXh0KFRleHQqIHRleHROb2RlLCBjb25zdCBTdHJpbmcm
IHRleHQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZv
cm0oYWRvcHRQdHIobmV3IFJlcGxhY2VXaG9sZVRleHRBY3Rpb24odGV4dE5vZGUsIHRleHQpKSwg
ZWMpOworICAgIHJldHVybiBtX2hpc3RvcnktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxSZXBs
YWNlV2hvbGVUZXh0QWN0aW9uPih0ZXh0Tm9kZSwgdGV4dCksIGVjKTsKIH0KIAogYm9vbCBET01F
ZGl0b3I6OnJlcGxhY2VDaGlsZChOb2RlKiBwYXJlbnROb2RlLCBQYXNzUmVmUHRyPE5vZGU+IG5l
d05vZGUsIE5vZGUqIG9sZE5vZGUsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIHJldHVybiBt
X2hpc3RvcnktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24ocGFy
ZW50Tm9kZSwgbmV3Tm9kZSwgb2xkTm9kZSkpLCBlYyk7CisgICAgcmV0dXJuIG1faGlzdG9yeS0+
cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFJlcGxhY2VDaGlsZE5vZGVBY3Rpb24+KHBhcmVudE5v
ZGUsIG5ld05vZGUsIG9sZE5vZGUpLCBlYyk7CiB9CiAKIGJvb2wgRE9NRWRpdG9yOjpzZXROb2Rl
VmFsdWUoTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSwgRXhjZXB0aW9uQ29kZSYgZWMp
CiB7Ci0gICAgcmV0dXJuIG1faGlzdG9yeS0+cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0Tm9kZVZh
bHVlQWN0aW9uKG5vZGUsIHZhbHVlKSksIGVjKTsKKyAgICByZXR1cm4gbV9oaXN0b3J5LT5wZXJm
b3JtKHN0ZDo6bWFrZV91bmlxdWU8U2V0Tm9kZVZhbHVlQWN0aW9uPihub2RlLCB2YWx1ZSksIGVj
KTsKIH0KIAogc3RhdGljIHZvaWQgcG9wdWxhdGVFcnJvclN0cmluZyhjb25zdCBFeGNlcHRpb25D
b2RlJiBlYywgRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcAppbmRleCA5NDNlMThhMWEzYjM3Y2FlMjM5Y2U0MGU2
Y2NlM2Q5OGYyNzA3M2RhLi5mNmEzOGM1MDlkMjU5ZWNiZGRmYjNhMGZjYWU0ZDhhMzJlOGUyYjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmNwcApAQCAt
NjYsNyArNjYsNyBAQCBzdHJ1Y3QgRE9NUGF0Y2hTdXBwb3J0OjpEaWdlc3QgewogICAgIFN0cmlu
ZyBtX3NoYTE7CiAgICAgU3RyaW5nIG1fYXR0cnNTSEExOwogICAgIE5vZGUqIG1fbm9kZTsKLSAg
ICBWZWN0b3I8T3duUHRyPERpZ2VzdD4+IG1fY2hpbGRyZW47CisgICAgVmVjdG9yPHN0ZDo6dW5p
cXVlX3B0cjxEaWdlc3Q+PiBtX2NoaWxkcmVuOwogfTsKIAogdm9pZCBET01QYXRjaFN1cHBvcnQ6
OnBhdGNoRG9jdW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCkK
QEAgLTEwNSw4ICsxMDUsOCBAQCB2b2lkIERPTVBhdGNoU3VwcG9ydDo6cGF0Y2hEb2N1bWVudChj
b25zdCBTdHJpbmcmIG1hcmt1cCkKICAgICBwYXJzZXItPmZpbmlzaCgpOwogICAgIHBhcnNlci0+
ZGV0YWNoKCk7CiAKLSAgICBPd25QdHI8RGlnZXN0PiBvbGRJbmZvID0gY3JlYXRlRGlnZXN0KG1f
ZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCBudWxscHRyKTsKLSAgICBPd25QdHI8RGlnZXN0
PiBuZXdJbmZvID0gY3JlYXRlRGlnZXN0KG5ld0RvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKSwg
Jm1fdW51c2VkTm9kZXNNYXApOworICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+IG9sZEluZm8g
PSBjcmVhdGVEaWdlc3QobV9kb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCksIG51bGxwdHIpOwor
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+IG5ld0luZm8gPSBjcmVhdGVEaWdlc3QobmV3RG9j
dW1lbnQtPmRvY3VtZW50RWxlbWVudCgpLCAmbV91bnVzZWROb2Rlc01hcCk7CiAKICAgICBpZiAo
IWlubmVyUGF0Y2hOb2RlKG9sZEluZm8uZ2V0KCksIG5ld0luZm8uZ2V0KCksIElHTk9SRV9FWENF
UFRJT04pKSB7CiAgICAgICAgIC8vIEZhbGwgYmFjayB0byByZXdyaXRlLgpAQCAtMTMzLDEzICsx
MzMsMTMgQEAgTm9kZSogRE9NUGF0Y2hTdXBwb3J0OjpwYXRjaE5vZGUoTm9kZSYgbm9kZSwgY29u
c3QgU3RyaW5nJiBtYXJrdXAsIEV4Y2VwdGlvbkNvZGUKIAogICAgIC8vIENvbXBvc2UgdGhlIG9s
ZCBsaXN0LgogICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE5vZGUgPSBub2RlLnBhcmVudE5vZGUo
KTsKLSAgICBWZWN0b3I8T3duUHRyPERpZ2VzdD4+IG9sZExpc3Q7CisgICAgVmVjdG9yPHN0ZDo6
dW5pcXVlX3B0cjxEaWdlc3Q+PiBvbGRMaXN0OwogICAgIGZvciAoTm9kZSogY2hpbGQgPSBwYXJl
bnROb2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygp
KQogICAgICAgICBvbGRMaXN0LmFwcGVuZChjcmVhdGVEaWdlc3QoY2hpbGQsIG51bGxwdHIpKTsK
IAogICAgIC8vIENvbXBvc2UgdGhlIG5ldyBsaXN0LgogICAgIFN0cmluZyBtYXJrdXBDb3B5ID0g
bWFya3VwLmxvd2VyKCk7Ci0gICAgVmVjdG9yPE93blB0cjxEaWdlc3Q+PiBuZXdMaXN0OworICAg
IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4gbmV3TGlzdDsKICAgICBmb3IgKE5vZGUq
IGNoaWxkID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZCAhPSAmbm9kZTsgY2hpbGQg
PSBjaGlsZC0+bmV4dFNpYmxpbmcoKSkKICAgICAgICAgbmV3TGlzdC5hcHBlbmQoY3JlYXRlRGln
ZXN0KGNoaWxkLCBudWxscHRyKSk7CiAgICAgZm9yIChOb2RlKiBjaGlsZCA9IGZyYWdtZW50LT5m
aXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpKSB7CkBAIC0y
MDgsNyArMjA4LDcgQEAgYm9vbCBET01QYXRjaFN1cHBvcnQ6OmlubmVyUGF0Y2hOb2RlKERpZ2Vz
dCogb2xkRGlnZXN0LCBEaWdlc3QqIG5ld0RpZ2VzdCwgRXhjZXAKIH0KIAogc3RkOjpwYWlyPERP
TVBhdGNoU3VwcG9ydDo6UmVzdWx0TWFwLCBET01QYXRjaFN1cHBvcnQ6OlJlc3VsdE1hcD4KLURP
TVBhdGNoU3VwcG9ydDo6ZGlmZihjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBvbGRMaXN0
LCBjb25zdCBWZWN0b3I8T3duUHRyPERpZ2VzdD4+JiBuZXdMaXN0KQorRE9NUGF0Y2hTdXBwb3J0
OjpkaWZmKGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNv
bnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4mIG5ld0xpc3QpCiB7CiAgICAgUmVz
dWx0TWFwIG5ld01hcChuZXdMaXN0LnNpemUoKSk7CiAgICAgUmVzdWx0TWFwIG9sZE1hcChvbGRM
aXN0LnNpemUoKSk7CkBAIC0yOTUsNyArMjk1LDcgQEAgRE9NUGF0Y2hTdXBwb3J0OjpkaWZmKGNv
bnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxPd25QdHIK
ICAgICByZXR1cm4gc3RkOjptYWtlX3BhaXIob2xkTWFwLCBuZXdNYXApOwogfQogCi1ib29sIERP
TVBhdGNoU3VwcG9ydDo6aW5uZXJQYXRjaENoaWxkcmVuKENvbnRhaW5lck5vZGUqIHBhcmVudE5v
ZGUsIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG9sZExpc3QsIGNvbnN0IFZlY3RvcjxP
d25QdHI8RGlnZXN0Pj4mIG5ld0xpc3QsIEV4Y2VwdGlvbkNvZGUmIGVjKQorYm9vbCBET01QYXRj
aFN1cHBvcnQ6OmlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlKiBwYXJlbnROb2RlLCBj
b25zdCBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+JiBvbGRMaXN0LCBjb25zdCBWZWN0
b3I8c3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4+JiBuZXdMaXN0LCBFeGNlcHRpb25Db2RlJiBlYykK
IHsKICAgICBzdGQ6OnBhaXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IHJlc3VsdE1hcHMgPSBkaWZm
KG9sZExpc3QsIG5ld0xpc3QpOwogICAgIFJlc3VsdE1hcCYgb2xkTWFwID0gcmVzdWx0TWFwcy5m
aXJzdDsKQEAgLTQwNywxMCArNDA3LDkgQEAgc3RhdGljIHZvaWQgYWRkU3RyaW5nVG9TSEExKFNI
QTEmIHNoYTEsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogICAgIHNoYTEuYWRkQnl0ZXMocmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oY1N0cmluZy5kYXRhKCkpLCBjU3RyaW5nLmxlbmd0
aCgpKTsKIH0KIAotUGFzc093blB0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2VzdD4gRE9NUGF0Y2hT
dXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwgVW51c2VkTm9kZXNNYXAqIHVudXNlZE5v
ZGVzTWFwKQorc3RkOjp1bmlxdWVfcHRyPERPTVBhdGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRj
aFN1cHBvcnQ6OmNyZWF0ZURpZ2VzdChOb2RlKiBub2RlLCBVbnVzZWROb2Rlc01hcCogdW51c2Vk
Tm9kZXNNYXApCiB7Ci0gICAgRGlnZXN0KiBkaWdlc3QgPSBuZXcgRGlnZXN0KG5vZGUpOwotCisg
ICAgYXV0byBkaWdlc3QgPSBzdGQ6Om1ha2VfdW5pcXVlPERpZ2VzdD4obm9kZSk7CiAgICAgU0hB
MSBzaGExOwogCiAgICAgTm9kZTo6Tm9kZVR5cGUgbm9kZVR5cGUgPSBub2RlLT5ub2RlVHlwZSgp
OwpAQCAtNDIxLDEwICs0MjAsMTAgQEAgUGFzc093blB0cjxET01QYXRjaFN1cHBvcnQ6OkRpZ2Vz
dD4gRE9NUGF0Y2hTdXBwb3J0OjpjcmVhdGVEaWdlc3QoTm9kZSogbm9kZSwgVW4KICAgICBpZiAo
bm9kZS0+bm9kZVR5cGUoKSA9PSBOb2RlOjpFTEVNRU5UX05PREUpIHsKICAgICAgICAgTm9kZSog
Y2hpbGQgPSBub2RlLT5maXJzdENoaWxkKCk7CiAgICAgICAgIHdoaWxlIChjaGlsZCkgewotICAg
ICAgICAgICAgT3duUHRyPERpZ2VzdD4gY2hpbGRJbmZvID0gY3JlYXRlRGlnZXN0KGNoaWxkLCB1
bnVzZWROb2Rlc01hcCk7CisgICAgICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0PiBjaGls
ZEluZm8gPSBjcmVhdGVEaWdlc3QoY2hpbGQsIHVudXNlZE5vZGVzTWFwKTsKICAgICAgICAgICAg
IGFkZFN0cmluZ1RvU0hBMShzaGExLCBjaGlsZEluZm8tPm1fc2hhMSk7CiAgICAgICAgICAgICBj
aGlsZCA9IGNoaWxkLT5uZXh0U2libGluZygpOwotICAgICAgICAgICAgZGlnZXN0LT5tX2NoaWxk
cmVuLmFwcGVuZChjaGlsZEluZm8ucmVsZWFzZSgpKTsKKyAgICAgICAgICAgIGRpZ2VzdC0+bV9j
aGlsZHJlbi5hcHBlbmQoc3RkOjptb3ZlKGNoaWxkSW5mbykpOwogICAgICAgICB9CiAgICAgICAg
IEVsZW1lbnQqIGVsZW1lbnQgPSB0b0VsZW1lbnQobm9kZSk7CiAKQEAgLTQ0NSw4ICs0NDQsOSBA
QCBQYXNzT3duUHRyPERPTVBhdGNoU3VwcG9ydDo6RGlnZXN0PiBET01QYXRjaFN1cHBvcnQ6OmNy
ZWF0ZURpZ2VzdChOb2RlKiBub2RlLCBVbgogICAgIHNoYTEuY29tcHV0ZUhhc2goaGFzaCk7CiAg
ICAgZGlnZXN0LT5tX3NoYTEgPSBiYXNlNjRFbmNvZGUoaGFzaC5kYXRhKCksIDEwKTsKICAgICBp
ZiAodW51c2VkTm9kZXNNYXApCi0gICAgICAgIHVudXNlZE5vZGVzTWFwLT5hZGQoZGlnZXN0LT5t
X3NoYTEsIGRpZ2VzdCk7Ci0gICAgcmV0dXJuIGFkb3B0UHRyKGRpZ2VzdCk7CisgICAgICAgIHVu
dXNlZE5vZGVzTWFwLT5hZGQoZGlnZXN0LT5tX3NoYTEsIGRpZ2VzdC5nZXQoKSk7CisKKyAgICBy
ZXR1cm4gZGlnZXN0OwogfQogCiBib29sIERPTVBhdGNoU3VwcG9ydDo6aW5zZXJ0QmVmb3JlQW5k
TWFya0FzVXNlZChDb250YWluZXJOb2RlKiBwYXJlbnROb2RlLCBEaWdlc3QqIGRpZ2VzdCwgTm9k
ZSogYW5jaG9yLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9ET01QYXRjaFN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9E
T01QYXRjaFN1cHBvcnQuaAppbmRleCBhZDU0NDg0ODc2NGRiNzljNWJiMDkyY2U3ZDFmY2I0ODdh
MTFmYjRhLi42YTk2MGU4NWRlZjU3NjJmMWUyMjJlYjY2N2M2MTkyMTQzMDcyNmJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NUGF0Y2hTdXBwb3J0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTVBhdGNoU3VwcG9ydC5oCkBAIC0zNCw4ICszNCw2IEBA
CiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogCiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
LSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAK
QEAgLTY1LDkgKzYzLDkgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBE
aWdlc3QqPiBVbnVzZWROb2Rlc01hcDsKIAogICAgIGJvb2wgaW5uZXJQYXRjaE5vZGUoRGlnZXN0
KiBvbGROb2RlLCBEaWdlc3QqIG5ld05vZGUsIEV4Y2VwdGlvbkNvZGUmKTsKLSAgICBzdGQ6OnBh
aXI8UmVzdWx0TWFwLCBSZXN1bHRNYXA+IGRpZmYoY29uc3QgVmVjdG9yPE93blB0cjxEaWdlc3Q+
PiYgb2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3RvcjxPd25QdHI8RGlnZXN0Pj4mIG5ld0NoaWxkcmVu
KTsKLSAgICBib29sIGlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJOb2RlKiwgY29uc3QgVmVj
dG9yPE93blB0cjxEaWdlc3Q+PiYgb2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3RvcjxPd25QdHI8RGln
ZXN0Pj4mIG5ld0NoaWxkcmVuLCBFeGNlcHRpb25Db2RlJik7Ci0gICAgUGFzc093blB0cjxEaWdl
c3Q+IGNyZWF0ZURpZ2VzdChOb2RlKiwgVW51c2VkTm9kZXNNYXAqKTsKKyAgICBzdGQ6OnBhaXI8
UmVzdWx0TWFwLCBSZXN1bHRNYXA+IGRpZmYoY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxE
aWdlc3Q+PiYgb2xkQ2hpbGRyZW4sIGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0
Pj4mIG5ld0NoaWxkcmVuKTsKKyAgICBib29sIGlubmVyUGF0Y2hDaGlsZHJlbihDb250YWluZXJO
b2RlKiwgY29uc3QgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxEaWdlc3Q+PiYgb2xkQ2hpbGRyZW4s
IGNvbnN0IFZlY3RvcjxzdGQ6OnVuaXF1ZV9wdHI8RGlnZXN0Pj4mIG5ld0NoaWxkcmVuLCBFeGNl
cHRpb25Db2RlJik7CisgICAgc3RkOjp1bmlxdWVfcHRyPERpZ2VzdD4gY3JlYXRlRGlnZXN0KE5v
ZGUqLCBVbnVzZWROb2Rlc01hcCopOwogICAgIGJvb2wgaW5zZXJ0QmVmb3JlQW5kTWFya0FzVXNl
ZChDb250YWluZXJOb2RlKiwgRGlnZXN0KiwgTm9kZSogYW5jaG9yLCBFeGNlcHRpb25Db2RlJik7
CiAgICAgYm9vbCByZW1vdmVDaGlsZEFuZE1vdmVUb05ldyhEaWdlc3QqLCBFeGNlcHRpb25Db2Rl
Jik7CiAgICAgdm9pZCBtYXJrTm9kZUFzVXNlZChEaWdlc3QqKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQuaApp
bmRleCA1MmQ4ZTBlZGU1ZDU1YzUyMzhiY2Q2MjdkZTE5NWY2NWE2MGVhZWRhLi5hOWM3NjQyODg3
MTI1ZDdjYjcwZGE1MGE5MjQ1OTcxNjFmM2Y4ZDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudC5oCkBAIC0z
Miw3ICszMiw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAKIG5hbWVz
cGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUZyb250ZW5k
RGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdl
bnQuY3BwCmluZGV4IDkzMzliYmE3ZmZlMGYwNzJiYjdjMGUzN2NiYzEzZmZlZjQ4NWU4OWIuLmJk
YzJjOWM3Zjk5MjA3ZTMxNGMxMTk5NGIzYjYzY2U2ZjBmN2NlZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcApAQCAtMTY1LDcgKzE2NSw3IEBA
IHZvaWQgVXBkYXRlUmVnaW9uTGF5b3V0VGFzazo6dGltZXJGaXJlZChUaW1lcjxVcGRhdGVSZWdp
b25MYXlvdXRUYXNrPiYpCiAgICAgaWYgKCFtX25hbWVkRmxvd3MuaXNFbXB0eSgpICYmICFtX3Rp
bWVyLmlzQWN0aXZlKCkpCiAgICAgICAgIG1fdGltZXIuc3RhcnRPbmVTaG90KDApOwogfQotICAg
IAorCiBjbGFzcyBDaGFuZ2VSZWdpb25PdmVyc2V0VGFzayB7CiBwdWJsaWM6CiAgICAgQ2hhbmdl
UmVnaW9uT3ZlcnNldFRhc2soSW5zcGVjdG9yQ1NTQWdlbnQqKTsKQEAgLTE3Myw3ICsxNzMsNyBA
QCBwdWJsaWM6CiAgICAgdm9pZCB1bnNjaGVkdWxlKFdlYktpdE5hbWVkRmxvdyopOwogICAgIHZv
aWQgcmVzZXQoKTsKICAgICB2b2lkIHRpbWVyRmlyZWQoVGltZXI8Q2hhbmdlUmVnaW9uT3ZlcnNl
dFRhc2s+Jik7Ci0gICAgCisKIHByaXZhdGU6CiAgICAgSW5zcGVjdG9yQ1NTQWdlbnQqIG1fY3Nz
QWdlbnQ7CiAgICAgVGltZXI8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+IG1fdGltZXI7CkBAIC0x
ODksNyArMTg5LDcgQEAgQ2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s6OkNoYW5nZVJlZ2lvbk92ZXJz
ZXRUYXNrKEluc3BlY3RvckNTU0FnZW50KiBjc3NBZ2VudCkKIHZvaWQgQ2hhbmdlUmVnaW9uT3Zl
cnNldFRhc2s6OnNjaGVkdWxlRm9yKFdlYktpdE5hbWVkRmxvdyogbmFtZWRGbG93LCBpbnQgZG9j
dW1lbnROb2RlSWQpCiB7CiAgICAgbV9uYW1lZEZsb3dzLmFkZChuYW1lZEZsb3csIGRvY3VtZW50
Tm9kZUlkKTsKLSAgICAKKwogICAgIGlmICghbV90aW1lci5pc0FjdGl2ZSgpKQogICAgICAgICBt
X3RpbWVyLnN0YXJ0T25lU2hvdCgwKTsKIH0KQEAgLTI2Niw3ICsyNjYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiU2V0U3R5bGVTaGVldFRleHQgJXMiLCBtX3N0
eWxlU2hlZXQtPmlkKCkudXRmOCgpLmRhdGEoKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lk
IG1lcmdlKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2
b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikgb3ZlcnJpZGUKICAgICB7
CiAgICAgICAgIEFTU0VSVChhY3Rpb24tPm1lcmdlSWQoKSA9PSBtZXJnZUlkKCkpOwogCkBAIC0z
MTAsNyArMzEwLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlNl
dFN0eWxlVGV4dCAlczoldSIsIG1fc3R5bGVTaGVldC0+aWQoKS51dGY4KCkuZGF0YSgpLCBtX2Nz
c0lkLm9yZGluYWwoKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCB2b2lkIG1lcmdlKFBhc3NPd25Q
dHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRlCisgICAgdmlydHVhbCB2b2lkIG1lcmdlKHN0ZDo6
dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikgb3ZlcnJpZGUKICAgICB7CiAgICAgICAgIEFTU0VS
VChhY3Rpb24tPm1lcmdlSWQoKSA9PSBtZXJnZUlkKCkpOwogCkBAIC0zNjksNyArMzY5LDcgQEAg
cHVibGljOgogICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIlNldFByb3BlcnR5VGV4dCAl
czoldTolcyIsIG1fc3R5bGVTaGVldC0+aWQoKS51dGY4KCkuZGF0YSgpLCBtX3Byb3BlcnR5SW5k
ZXgsIG1fb3ZlcndyaXRlID8gInRydWUiIDogImZhbHNlIik7CiAgICAgfQogCi0gICAgdmlydHVh
bCB2b2lkIG1lcmdlKFBhc3NPd25QdHI8QWN0aW9uPiBhY3Rpb24pIG92ZXJyaWRlCisgICAgdmly
dHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+IGFjdGlvbikgb3ZlcnJpZGUK
ICAgICB7CiAgICAgICAgIEFTU0VSVChhY3Rpb24tPm1lcmdlSWQoKSA9PSBtZXJnZUlkKCkpOwog
CkBAIC01ODIsNyArNTgyLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6d2lsbFJlbW92ZU5h
bWVkRmxvdyhEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVkRmxvdyoKIAogICAgIGlmICht
X3VwZGF0ZVJlZ2lvbkxheW91dFRhc2spCiAgICAgICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFz
ay0+dW5zY2hlZHVsZShuYW1lZEZsb3cpOwotICAgIAorCiAgICAgaWYgKG1fY2hhbmdlUmVnaW9u
T3ZlcnNldFRhc2spCiAgICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2stPnVuc2NoZWR1
bGUobmFtZWRGbG93KTsKIApAQCAtNTk2LDcgKzU5Niw3IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OmRpZFVwZGF0ZVJlZ2lvbkxheW91dChEb2N1bWVudCogZG9jdW1lbnQsIFdlYktpdE5hbWVk
RmxvCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV91cGRhdGVSZWdpb25MYXlvdXRUYXNr
KQotICAgICAgICBtX3VwZGF0ZVJlZ2lvbkxheW91dFRhc2sgPSBhZG9wdFB0cihuZXcgVXBkYXRl
UmVnaW9uTGF5b3V0VGFzayh0aGlzKSk7CisgICAgICAgIG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFz
ayA9IHN0ZDo6bWFrZV91bmlxdWU8VXBkYXRlUmVnaW9uTGF5b3V0VGFzaz4odGhpcyk7CiAgICAg
bV91cGRhdGVSZWdpb25MYXlvdXRUYXNrLT5zY2hlZHVsZUZvcihuYW1lZEZsb3csIGRvY3VtZW50
Tm9kZUlkKTsKIH0KIApAQCAtNjE2LDkgKzYxNiw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OmRpZENoYW5nZVJlZ2lvbk92ZXJzZXQoRG9jdW1lbnQqIGRvY3VtZW50LCBXZWJLaXROYW1lZEZs
CiAgICAgaW50IGRvY3VtZW50Tm9kZUlkID0gZG9jdW1lbnROb2RlV2l0aFJlcXVlc3RlZEZsb3dz
SWQoZG9jdW1lbnQpOwogICAgIGlmICghZG9jdW1lbnROb2RlSWQpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIGlmICghbV9jaGFuZ2VSZWdpb25PdmVyc2V0VGFzaykKLSAgICAgICAgbV9j
aGFuZ2VSZWdpb25PdmVyc2V0VGFzayA9IGFkb3B0UHRyKG5ldyBDaGFuZ2VSZWdpb25PdmVyc2V0
VGFzayh0aGlzKSk7CisgICAgICAgIG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2sgPSBzdGQ6Om1h
a2VfdW5pcXVlPENoYW5nZVJlZ2lvbk92ZXJzZXRUYXNrPih0aGlzKTsKICAgICBtX2NoYW5nZVJl
Z2lvbk92ZXJzZXRUYXNrLT5zY2hlZHVsZUZvcihuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlkKTsK
IH0KIApAQCAtNjI2LDEwICs2MjYsMTAgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6cmVnaW9u
T3ZlcnNldENoYW5nZWQoV2ViS2l0TmFtZWRGbG93KiBuYW1lZEZsb3csIGludCBkb2MKIHsKICAg
ICBpZiAobmFtZWRGbG93LT5mbG93U3RhdGUoKSA9PSBXZWJLaXROYW1lZEZsb3c6OkZsb3dTdGF0
ZU51bGwpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIEVycm9yU3RyaW5nIGVycm9yU3Ry
aW5nOwogICAgIFJlZjxXZWJLaXROYW1lZEZsb3c+IHByb3RlY3QoKm5hbWVkRmxvdyk7Ci0gICAg
CisKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVnaW9uT3ZlcnNldENoYW5nZWQoYnVpbGRP
YmplY3RGb3JOYW1lZEZsb3coJmVycm9yU3RyaW5nLCBuYW1lZEZsb3csIGRvY3VtZW50Tm9kZUlk
KSk7CiB9CiAKQEAgLTgwMyw3ICs4MDMsNyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpzZXRT
dHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAg
ICAgICByZXR1cm47CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBtX2RvbUFnZW50
LT5oaXN0b3J5KCktPnBlcmZvcm0oYWRvcHRQdHIobmV3IFNldFN0eWxlU2hlZXRUZXh0QWN0aW9u
KGluc3BlY3RvclN0eWxlU2hlZXQsIHRleHQpKSwgZWMpOworICAgIG1fZG9tQWdlbnQtPmhpc3Rv
cnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlU2hlZXRUZXh0QWN0aW9uPihp
bnNwZWN0b3JTdHlsZVNoZWV0LCB0ZXh0KSwgZWMpOwogICAgICplcnJvclN0cmluZyA9IEluc3Bl
Y3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIApAQCAtODE3LDcgKzgxNyw3IEBA
IHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwCiAgICAgICAgIHJldHVybjsKIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwotICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+
cGVyZm9ybShhZG9wdFB0cihuZXcgU2V0U3R5bGVUZXh0QWN0aW9uKGluc3BlY3RvclN0eWxlU2hl
ZXQsIGNvbXBvdW5kSWQsIHRleHQpKSwgZWMpOworICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdl
bnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFN0eWxlVGV4dEFjdGlv
bj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgdGV4dCksIGVjKTsKICAgICBpZiAo
c3VjY2VzcykKICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRPYmpl
Y3RGb3JTdHlsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5zdHlsZUZvcklkKGNvbXBvdW5kSWQpKTsK
ICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7
CkBAIC04MzMsNyArODMzLDcgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UHJvcGVydHlU
ZXh0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9k
b21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRyKG5ldyBTZXRQcm9wZXJ0eVRleHRB
Y3Rpb24oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwgdGV4
dCwgb3ZlcndyaXRlKSksIGVjKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0
b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxTZXRQcm9wZXJ0eVRleHRBY3Rpb24+KGlu
c3BlY3RvclN0eWxlU2hlZXQsIGNvbXBvdW5kSWQsIHByb3BlcnR5SW5kZXgsIHRleHQsIG92ZXJ3
cml0ZSksIGVjKTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdG9y
U3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5zdHls
ZUZvcklkKGNvbXBvdW5kSWQpKTsKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2Vu
dDo6dG9FcnJvclN0cmluZyhlYyk7CkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBJbnNwZWN0b3JD
U1NBZ2VudDo6dG9nZ2xlUHJvcGVydHkoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBS
ZWZQdHI8SW4KICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0g
ICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0UHRy
KG5ldyBUb2dnbGVQcm9wZXJ0eUFjdGlvbihpbnNwZWN0b3JTdHlsZVNoZWV0LCBjb21wb3VuZElk
LCBwcm9wZXJ0eUluZGV4LCBkaXNhYmxlKSksIGVjKTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtX2Rv
bUFnZW50LT5oaXN0b3J5KCktPnBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxUb2dnbGVQcm9wZXJ0
eUFjdGlvbj4oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgcHJvcGVydHlJbmRleCwg
ZGlzYWJsZSksIGVjKTsKICAgICBpZiAoc3VjY2VzcykKICAgICAgICAgcmVzdWx0ID0gaW5zcGVj
dG9yU3R5bGVTaGVldC0+YnVpbGRPYmplY3RGb3JTdHlsZShpbnNwZWN0b3JTdHlsZVNoZWV0LT5z
dHlsZUZvcklkKGNvbXBvdW5kSWQpKTsKICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01B
Z2VudDo6dG9FcnJvclN0cmluZyhlYyk7CkBAIC04NjUsNyArODY1LDcgQEAgdm9pZCBJbnNwZWN0
b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29u
c3QgUmVmUHRyPEkKICAgICAgICAgcmV0dXJuOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgYm9vbCBzdWNjZXNzID0gbV9kb21BZ2VudC0+aGlzdG9yeSgpLT5wZXJmb3JtKGFkb3B0
UHRyKG5ldyBTZXRSdWxlU2VsZWN0b3JBY3Rpb24oaW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91
bmRJZCwgc2VsZWN0b3IpKSwgZWMpOworICAgIGJvb2wgc3VjY2VzcyA9IG1fZG9tQWdlbnQtPmhp
c3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1ha2VfdW5pcXVlPFNldFJ1bGVTZWxlY3RvckFjdGlvbj4o
aW5zcGVjdG9yU3R5bGVTaGVldCwgY29tcG91bmRJZCwgc2VsZWN0b3IpLCBlYyk7CiAKICAgICBp
ZiAoc3VjY2VzcykKICAgICAgICAgcmVzdWx0ID0gaW5zcGVjdG9yU3R5bGVTaGVldC0+YnVpbGRP
YmplY3RGb3JSdWxlKGluc3BlY3RvclN0eWxlU2hlZXQtPnJ1bGVGb3JJZChjb21wb3VuZElkKSk7
CkBAIC04ODUsOSArODg1LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6YWRkUnVsZShFcnJv
clN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IGludCBjb250ZXh0Tm9kZUkKICAgICB9CiAKICAg
ICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBPd25QdHI8QWRkUnVsZUFjdGlvbj4gYWN0aW9u
ID0gYWRvcHRQdHIobmV3IEFkZFJ1bGVBY3Rpb24oaW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0
b3IpKTsKKyAgICBhdXRvIGFjdGlvbiA9IHN0ZDo6bWFrZV91bmlxdWU8QWRkUnVsZUFjdGlvbj4o
aW5zcGVjdG9yU3R5bGVTaGVldCwgc2VsZWN0b3IpOwogICAgIEFkZFJ1bGVBY3Rpb24qIHJhd0Fj
dGlvbiA9IGFjdGlvbi5nZXQoKTsKLSAgICBib29sIHN1Y2Nlc3MgPSBtX2RvbUFnZW50LT5oaXN0
b3J5KCktPnBlcmZvcm0oYWN0aW9uLnJlbGVhc2UoKSwgZWMpOworICAgIGJvb2wgc3VjY2VzcyA9
IG1fZG9tQWdlbnQtPmhpc3RvcnkoKS0+cGVyZm9ybShzdGQ6Om1vdmUoYWN0aW9uKSwgZWMpOwog
ICAgIGlmICghc3VjY2VzcykgewogICAgICAgICAqZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01B
Z2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmgKaW5kZXggMTBiNGZlOTFmODI5MGE0NzNl
ZTg0NmE0MzljYmI2Nzg3ZGIxMTViOS4uMjBiM2MxNTA3NTk4OTk3ODgzMzljOTM2MjQ5MGZiNTAy
MWY5ZmQzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNT
U0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmgKQEAgLTE4MSw4ICsxODEsOCBAQCBwcml2YXRlOgogICAgIERvY3VtZW50VG9WaWFJbnNwZWN0
b3JTdHlsZVNoZWV0IG1fZG9jdW1lbnRUb0luc3BlY3RvclN0eWxlU2hlZXQ7CiAgICAgTm9kZUlk
VG9Gb3JjZWRQc2V1ZG9TdGF0ZSBtX25vZGVJZFRvRm9yY2VkUHNldWRvU3RhdGU7CiAgICAgSGFz
aFNldDxpbnQ+IG1fbmFtZWRGbG93Q29sbGVjdGlvbnNSZXF1ZXN0ZWQ7Ci0gICAgT3duUHRyPFVw
ZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdXBkYXRlUmVnaW9uTGF5b3V0VGFzazsKLSAgICBPd25Q
dHI8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+IG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPFVwZGF0ZVJlZ2lvbkxheW91dFRhc2s+IG1fdXBkYXRlUmVnaW9u
TGF5b3V0VGFzazsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8Q2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s+
IG1fY2hhbmdlUmVnaW9uT3ZlcnNldFRhc2s7CiAKICAgICBpbnQgbV9sYXN0U3R5bGVTaGVldElk
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50
LmgKaW5kZXggYTlhMzhlMjM3YmY1YjA4YThiOWU5MDAyYjRjMTliZTZmMTkwODIwNC4uZmJlMzJj
MjNmZDdjNTFhY2QxNTNhM2E2ODMxODhmOWNmZGM2ODM4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAgLTM5LDcgKzM5LDYgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JXZWJUeXBlQnVpbGRlcnMuaCIKICNpbmNsdWRlICJTY3JpcHRTdGF0
ZS5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAppbmRleCA4NTZlODM3ODhhZjBlNjE0ZGEzNzFjYTdjMWNlYzUyMDY1ZmJmOTZkLi5mMzMz
NWQ3NTNiMzQ1NDQzZTVmNmUxMWY0NzViYzE3NDdhY2UwYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTk2LDcgKzk2LDYgQEAKICNp
bmNsdWRlIDxpbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8cnVu
dGltZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTIzNiw4ICsy
MzUsOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tl
bmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JGcm9udGVuZAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVy
ID0gc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JET01Gcm9udGVuZERpc3BhdGNoZXI+KGZyb250
ZW5kQ2hhbm5lbCk7CiAgICAgbV9iYWNrZW5kRGlzcGF0Y2hlciA9IEluc3BlY3RvckRPTUJhY2tl
bmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwogCi0gICAgbV9o
aXN0b3J5ID0gYWRvcHRQdHIobmV3IEluc3BlY3Rvckhpc3RvcnkoKSk7Ci0gICAgbV9kb21FZGl0
b3IgPSBhZG9wdFB0cihuZXcgRE9NRWRpdG9yKG1faGlzdG9yeS5nZXQoKSkpOworICAgIG1faGlz
dG9yeSA9IHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9ySGlzdG9yeT4oKTsKKyAgICBtX2RvbUVk
aXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPihtX2hpc3RvcnkuZ2V0KCkpOwogCiAg
ICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JET01BZ2VudCh0aGlzKTsKICAg
ICBtX2RvY3VtZW50ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOwpAQCAt
MjUxLDggKzI1MCw4IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pCiAgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBudWxscHRyOwogICAgIG1fYmFja2VuZERpc3BhdGNoZXIuY2xlYXIoKTsKIAot
ICAgIG1faGlzdG9yeS5jbGVhcigpOwotICAgIG1fZG9tRWRpdG9yLmNsZWFyKCk7CisgICAgbV9o
aXN0b3J5LnJlc2V0KCk7CisgICAgbV9kb21FZGl0b3IucmVzZXQoKTsKIAogICAgIEVycm9yU3Ry
aW5nIGVycm9yOwogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUoJmVycm9yLCBmYWxzZSwgMCk7CkBA
IC01ODQsNyArNTgzLDcgQEAgaW50IEluc3BlY3RvckRPTUFnZW50OjpwdXNoTm9kZVBhdGhUb0Zy
b250ZW5kKE5vZGUqIG5vZGVUb1B1c2gpCiAgICAgICAgIE5vZGUqIHBhcmVudCA9IGlubmVyUGFy
ZW50Tm9kZShub2RlKTsKICAgICAgICAgaWYgKCFwYXJlbnQpIHsKICAgICAgICAgICAgIC8vIE5v
ZGUgYmVpbmcgcHVzaGVkIGlzIGRldGFjaGVkIC0+IHB1c2ggc3VidHJlZSByb290LgotICAgICAg
ICAgICAgT3duUHRyPE5vZGVUb0lkTWFwPiBuZXdNYXAgPSBhZG9wdFB0cihuZXcgTm9kZVRvSWRN
YXApOworICAgICAgICAgICAgYXV0byBuZXdNYXAgPSBzdGQ6Om1ha2VfdW5pcXVlPE5vZGVUb0lk
TWFwPigpOwogICAgICAgICAgICAgZGFuZ2xpbmdNYXAgPSBuZXdNYXAuZ2V0KCk7CiAgICAgICAg
ICAgICBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzLmFwcGVuZChuZXdNYXAucmVsZWFzZSgpKTsKICAg
ICAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpET006Ok5vZGU+PiBjaGlsZHJlbiA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRPTTo6Tm9kZT46OmNyZWF0ZSgpOwpA
QCAtMTAzMiwxNCArMTAzMSwxNCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hp
bmdGb3JOb2RlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgYm9vbCBlbmFibAogICAgIG1fb3Zl
cmxheS0+ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi1Q
YXNzT3duUHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENv
bmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBJbnNwZWN0
b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKK3N0ZDo6dW5pcXVlX3B0cjxIaWdo
bGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVj
dG9yT2JqZWN0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBoaWdo
bGlnaHRJbnNwZWN0b3JPYmplY3QpCiB7CiAgICAgaWYgKCFoaWdobGlnaHRJbnNwZWN0b3JPYmpl
Y3QpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yOiBoaWdobGlnaHQg
Y29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgaXMgbWlzc2luZyI7CiAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAotICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZp
ZyA9IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25maWcoKSk7CisgICAgYXV0byBoaWdobGlnaHRD
b25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBib29sIHNo
b3dJbmZvID0gZmFsc2U7IC8vIERlZmF1bHQ6IGZhbHNlIChkbyBub3Qgc2hvdyBhIHRvb2x0aXAp
LgogICAgIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC0+Z2V0Qm9vbGVhbigic2hvd0luZm8iLCAm
c2hvd0luZm8pOwogICAgIGhpZ2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSBzaG93SW5mbzsKQEAg
LTEwNTEsNyArMTA1MCw3IEBAIFBhc3NPd25QdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjCiAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5wYWRkaW5nID0gcGFyc2VDb25maWdDb2xvcigicGFkZGluZ0NvbG9yIiwgaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0KTsKICAgICBoaWdobGlnaHRDb25maWctPmJvcmRlciA9IHBhcnNl
Q29uZmlnQ29sb3IoImJvcmRlckNvbG9yIiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKICAg
ICBoaWdobGlnaHRDb25maWctPm1hcmdpbiA9IHBhcnNlQ29uZmlnQ29sb3IoIm1hcmdpbkNvbG9y
IiwgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKLSAgICByZXR1cm4gaGlnaGxpZ2h0Q29uZmln
LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gaGlnaGxpZ2h0Q29uZmlnOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcqIGVycm9yU3Ry
aW5nLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBoaWdobGln
aHRDb25maWcpCkBAIC0xMDYxLDI3ICsxMDYwLDI3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGJvb2wgZW5h
CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcqLCBp
bnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4qIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNv
bG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7Ci0gICAgT3duUHRyPEZsb2F0
UXVhZD4gcXVhZCA9IGFkb3B0UHRyKG5ldyBGbG9hdFF1YWQoRmxvYXRSZWN0KHgsIHksIHdpZHRo
LCBoZWlnaHQpKSk7Ci0gICAgaW5uZXJIaWdobGlnaHRRdWFkKHF1YWQucmVsZWFzZSgpLCBjb2xv
ciwgb3V0bGluZUNvbG9yLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIGF1dG8gcXVhZCA9IHN0
ZDo6bWFrZV91bmlxdWU8RmxvYXRRdWFkPihGbG9hdFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCkp
OworICAgIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6Om1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5l
Q29sb3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yQXJyYXk+JiBxdWFkQXJyYXksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBj
b2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3Qg
Ym9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQogewotICAgIE93blB0cjxGbG9hdFF1YWQ+IHF1YWQg
PSBhZG9wdFB0cihuZXcgRmxvYXRRdWFkKCkpOworICAgIGF1dG8gcXVhZCA9IHN0ZDo6bWFrZV91
bmlxdWU8RmxvYXRRdWFkPigpOwogICAgIGlmICghcGFyc2VRdWFkKHF1YWRBcnJheSwgcXVhZC5n
ZXQoKSkpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIkludmFsaWQgUXVhZCBmb3JtYXQiOwog
ICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlubmVySGlnaGxpZ2h0UXVhZChxdWFkLnJlbGVh
c2UoKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICBpbm5l
ckhpZ2hsaWdodFF1YWQoc3RkOjptb3ZlKHF1YWQpLCBjb2xvciwgb3V0bGluZUNvbG9yLCB1c2VQ
YWdlQ29vcmRpbmF0ZXMpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50Ojppbm5lckhpZ2hs
aWdodFF1YWQoUGFzc093blB0cjxGbG9hdFF1YWQ+IHF1YWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG91dGxpbmVD
b2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4qIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVz
KQogewotICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGFkb3B0
UHRyKG5ldyBIaWdobGlnaHRDb25maWcoKSk7CisgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBz
dGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKICAgICBoaWdobGlnaHRDb25maWct
PmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPmNvbnRl
bnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IpOwogICAgIGhpZ2hsaWdodENvbmZp
Zy0+dXNlUGFnZUNvb3JkaW5hdGVzID0gdXNlUGFnZUNvb3JkaW5hdGVzID8gKnVzZVBhZ2VDb29y
ZGluYXRlcyA6IGZhbHNlOwotICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0UXVhZChxdWFkLCAqaGln
aGxpZ2h0Q29uZmlnKTsKKyAgICBtX292ZXJsYXktPmhpZ2hsaWdodFF1YWQoc3RkOjptb3ZlKHF1
YWQpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QsIGNvbnN0IGludCogbm9kZUlkLCBj
b25zdCBTdHJpbmcqIG9iamVjdElkKQpAQCAtMTA5OSw3ICsxMDk4LDcgQEAgdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0
IFJlZlB0cjxJbnMKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIE93blB0
cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9IGhpZ2hsaWdodENvbmZpZ0Zyb21J
bnNwZWN0b3JPYmplY3QoZXJyb3JTdHJpbmcsIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdC5nZXQo
KSk7CisgICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmln
ID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChlcnJvclN0cmluZywgaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0LmdldCgpKTsKICAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykKICAg
ICAgICAgcmV0dXJuOwogCkBAIC0xMTE0LDcgKzExMTMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRGcmFtZSgKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+
ZnJhbWVGb3JJZChmcmFtZUlkKTsKICAgICBpZiAoZnJhbWUgJiYgZnJhbWUtPm93bmVyRWxlbWVu
dCgpKSB7Ci0gICAgICAgIE93blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZyA9
IGFkb3B0UHRyKG5ldyBIaWdobGlnaHRDb25maWcoKSk7CisgICAgICAgIGF1dG8gaGlnaGxpZ2h0
Q29uZmlnID0gc3RkOjptYWtlX3VuaXF1ZTxIaWdobGlnaHRDb25maWc+KCk7CiAgICAgICAgIGhp
Z2hsaWdodENvbmZpZy0+c2hvd0luZm8gPSB0cnVlOyAvLyBBbHdheXMgc2hvdyB0b29sdGlwcyBm
b3IgZnJhbWVzLgogICAgICAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9y
KGNvbG9yKTsKICAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNl
Q29sb3Iob3V0bGluZUNvbG9yKTsKQEAgLTE2NDIsNyArMTY0MSw3IEBAIHZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OmRpZEludmFsaWRhdGVTdHlsZUF0dHIoTm9kZSogbm9kZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKCFtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrKQotICAgICAgICBtX3Jl
dmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gYWRvcHRQdHIobmV3IFJldmFsaWRhdGVTdHlsZUF0dHJp
YnV0ZVRhc2sodGhpcykpOworICAgICAgICBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrID0gc3Rk
OjptYWtlX3VuaXF1ZTxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPih0aGlzKTsKICAgICBt
X3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrLT5zY2hlZHVsZUZvcih0b0VsZW1lbnQobm9kZSkpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdl
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4
IGZhNDFjN2ZhNTUyMjY5OTgyMDBlNWExOTFmZGY1ODZhNjI2MGQ0YTUuLjdkMzNiYmU4YWYzNzc4
MjIxZjAzMmQ0ZjBlNGU1MWU2NGZjMTZlZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01BZ2VudC5oCkBAIC00MSw4ICs0MSw2IEBACiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQXRvbWljU3RyaW5nLmg+CkBAIC0yMTMsNyArMjExLDcgQEAgcHVibGljOgog
CiBwcml2YXRlOgogICAgIHZvaWQgc2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyosIGJv
b2wgZW5hYmxlZCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodENvbmZpZyk7
Ci0gICAgUGFzc093blB0cjxIaWdobGlnaHRDb25maWc+IGhpZ2hsaWdodENvbmZpZ0Zyb21JbnNw
ZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcqLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGln
aGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29u
ZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nKiwgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAKICAg
ICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5v
ZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjQxLDcgKzIzOSw3IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQo
UGFzc093blB0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piog
b3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIHZvaWQg
aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+LCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdl
Q29vcmRpbmF0ZXMpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAg
ICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CkBAIC0yNTMsNyArMjUxLDcgQEAgcHJpdmF0ZToKICAgICB0eXBlZGVmIEhhc2hNYXA8UmVm
UHRyPE5vZGU+LCBCYWNrZW5kTm9kZUlkPiBOb2RlVG9CYWNrZW5kSWRNYXA7CiAgICAgSGFzaE1h
cDxTdHJpbmcsIE5vZGVUb0JhY2tlbmRJZE1hcD4gbV9ub2RlR3JvdXBUb0JhY2tlbmRJZE1hcDsK
ICAgICAvLyBPd25zIG5vZGUgbWFwcGluZ3MgZm9yIGRhbmdsaW5nIG5vZGVzLgotICAgIFZlY3Rv
cjxPd25QdHI8Tm9kZVRvSWRNYXA+PiBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzOworICAgIFZlY3Rv
cjxzdGQ6OnVuaXF1ZV9wdHI8Tm9kZVRvSWRNYXA+PiBtX2RhbmdsaW5nTm9kZVRvSWRNYXBzOwog
ICAgIEhhc2hNYXA8aW50LCBOb2RlKj4gbV9pZFRvTm9kZTsKICAgICBIYXNoTWFwPGludCwgTm9k
ZVRvSWRNYXAqPiBtX2lkVG9Ob2Rlc01hcDsKICAgICBIYXNoU2V0PGludD4gbV9jaGlsZHJlblJl
cXVlc3RlZDsKQEAgLTI2MywxMiArMjYxLDEyIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPERvY3Vt
ZW50PiBtX2RvY3VtZW50OwogICAgIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxSZWZQ
dHI8Tm9kZT4+PiBTZWFyY2hSZXN1bHRzOwogICAgIFNlYXJjaFJlc3VsdHMgbV9zZWFyY2hSZXN1
bHRzOwotICAgIE93blB0cjxSZXZhbGlkYXRlU3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRh
dGVTdHlsZUF0dHJUYXNrOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSZXZhbGlkYXRlU3R5bGVBdHRy
aWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrOwogICAgIFJlZlB0cjxOb2RlPiBt
X25vZGVUb0ZvY3VzOwogICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JOb2RlOwotICAgIE93blB0cjxI
aWdobGlnaHRDb25maWc+IG1faW5zcGVjdE1vZGVIaWdobGlnaHRDb25maWc7Ci0gICAgT3duUHRy
PEluc3BlY3Rvckhpc3Rvcnk+IG1faGlzdG9yeTsKLSAgICBPd25QdHI8RE9NRWRpdG9yPiBtX2Rv
bUVkaXRvcjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBtX2luc3BlY3RN
b2RlSGlnaGxpZ2h0Q29uZmlnOworICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3JIaXN0b3J5
PiBtX2hpc3Rvcnk7CisgICAgc3RkOjp1bmlxdWVfcHRyPERPTUVkaXRvcj4gbV9kb21FZGl0b3I7
CiAgICAgYm9vbCBtX3N1cHByZXNzQXR0cmlidXRlTW9kaWZpZWRFdmVudDsKICAgICBib29sIG1f
ZG9jdW1lbnRSZXF1ZXN0ZWQ7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggZWJlMjY2NTBhZGI2ZmFjYjhkZWYw
NzM3NTkzNGEyYmU5M2VlZDgwMi4uZmI4Zjc5ODYyZGYwODg1ZjQ5Mzg3OTM3NTc1NTc2MDA0NGIz
Y2NmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oCkBAIC0zNyw3ICszNyw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
QmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3
dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8
d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCA1YWQyYjdlMTFmNGQwOTlmZDIyZWVm
MzNmMGZlYzZiMjgzYzBiZTg2Li5mN2RhZDMyODRiYjg0ZDI1Y2EzNGE5MWRjYmU4NmY0Yzk1MDJm
MGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5oCkBAIC0zMyw3ICszMyw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQmFj
a2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiU3RvcmFnZUFyZWEuaCIKICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgKaW5kZXggMzIyOTYw
NzU3YzNiNDljYTY0NDQ5M2RjNGM5Y2FhYjEzNmE3YzdlYi4uNDVkZGRjNGU4NWIwNWRkYjFmOGQ1
ZTk2NjYxYjY5N2ZmOGQzOThkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRhdGFiYXNlQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oCkBAIC0zNSw3ICszNSw2IEBACiAjaW5jbHVkZSAiSW5z
cGVjdG9yV2ViQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJv
bnRlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEluc3BlY3RvciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKaW5kZXggNGU4NWJjNTMyOTk1ZWQ1
ZGRhOTQ5Njg2YzRkYjZhZDBkZWE5ZjhkMC4uYmYxNzkxODQ4YmIxYmM0ODhhNjE3MzM1NTNjZGNi
OTU2YTJkMTMyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcApAQCAtMTE2LDE1ICsxMTYsMTUgQEAgdm9p
ZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5nczo6c2V0UHJvcGVydHkoY29u
c3QgU3RyaW5nJiwgY29uc3QgU3QKIHsKIH0KIAotSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIFBhc3NPd25QdHI8U2V0dGluZ3M+
IHNldHRpbmdzKQorSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbChJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBQ
YWdlKiBmcm9udGVuZFBhZ2UsIHN0ZDo6dW5pcXVlX3B0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCiAg
ICAgOiBtX2luc3BlY3RvckNvbnRyb2xsZXIoaW5zcGVjdG9yQ29udHJvbGxlcikKICAgICAsIG1f
ZnJvbnRlbmRQYWdlKGZyb250ZW5kUGFnZSkKLSAgICAsIG1fc2V0dGluZ3Moc2V0dGluZ3MpCisg
ICAgLCBtX3NldHRpbmdzKHN0ZDo6bW92ZShzZXR0aW5ncykpCiAgICAgLCBtX2Zyb250ZW5kTG9h
ZGVkKGZhbHNlKQogICAgICwgbV9kb2NrU2lkZShVTkRPQ0tFRCkKIHsKICAgICBtX2Zyb250ZW5k
UGFnZS0+c2V0dGluZ3MoKS5zZXRBbGxvd0ZpbGVBY2Nlc3NGcm9tRmlsZVVSTHModHJ1ZSk7Ci0g
ICAgbV9kaXNwYXRjaFRhc2sgPSBhZG9wdFB0cihuZXcgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNo
VGFzayhpbnNwZWN0b3JDb250cm9sbGVyKSk7CisgICAgbV9kaXNwYXRjaFRhc2sgPSBzdGQ6Om1h
a2VfdW5pcXVlPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaFRhc2s+KGluc3BlY3RvckNvbnRyb2xs
ZXIpOwogfQogCiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjp+SW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuaAppbmRleCBlZDJjZmIxMGQwYzA5YTNmMDI2OGNl
MTZjM2ZhMmY4ZmU3Nzc5M2E5Li4yZjYzN2IwZjI2MGU1YjhkMWNmNWU5NzVhZjBkZjRlMTdlNjZh
MTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmgKQEAgLTU1LDkgKzU1LDkgQEAgcHVibGljOgogICAgICAgICB2
aXJ0dWFsIHZvaWQgc2V0UHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcm
IHZhbHVlKTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChJbnNw
ZWN0b3JDb250cm9sbGVyKiwgUGFnZSosIFBhc3NPd25QdHI8U2V0dGluZ3M+KTsKKyAgICBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudExvY2FsKEluc3BlY3RvckNvbnRyb2xsZXIqLCBQYWdlKiwgc3Rk
Ojp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbCgpOwotICAgIAorCiAgICAgdmlydHVhbCB2b2lkIHdpbmRvd09iamVjdENsZWFy
ZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRMb2FkZWQoKSBvdmVycmlk
ZTsKIApAQCAtOTgsNyArOTgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93Q29uc29sZSgpOwog
CiAgICAgdm9pZCBzaG93TWFpblJlc291cmNlRm9yRnJhbWUoRnJhbWUqKTsKLSAgICAKKwogICAg
IHZvaWQgc2hvd1Jlc291cmNlcygpOwogCiAgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvdyhEb2Nr
U2lkZSk7CkBAIC0xMTcsMTEgKzExNywxMSBAQCBwcml2YXRlOgogICAgIFBhZ2UqIG1fZnJvbnRl
bmRQYWdlOwogICAgIC8vIFRPRE8oeXVyeXMpOiB0aGlzIHJlZiBzaG91bGRuJ3QgYmUgbmVlZGVk
LgogICAgIFJlZlB0cjxJbnNwZWN0b3JGcm9udGVuZEhvc3Q+IG1fZnJvbnRlbmRIb3N0OwotICAg
IE93blB0cjxJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncz4gbV9zZXR0aW5n
czsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M+IG1fc2V0dGluZ3M7CiAgICAgYm9vbCBtX2Zyb250ZW5kTG9hZGVkOwogICAgIERvY2tT
aWRlIG1fZG9ja1NpZGU7CiAgICAgVmVjdG9yPFN0cmluZz4gbV9ldmFsdWF0ZU9uTG9hZDsKLSAg
ICBPd25QdHI8SW5zcGVjdG9yQmFja2VuZERpc3BhdGNoVGFzaz4gbV9kaXNwYXRjaFRhc2s7Cisg
ICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckJhY2tlbmREaXNwYXRjaFRhc2s+IG1fZGlzcGF0
Y2hUYXNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckhlYXBQcm9maWxlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaAppbmRleCBmNjBj
ZWJhNmE3YjdlOTdhNDhjYmM1MDhkMGNjODViNDdjM2Q1OGNjLi4xYmNhNzkwMmNmNzZjYThmN2Ux
ZmFmNjA1MmU2ZTM1NWMwNjI4MjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaApAQCAtMzksNyArMzksNiBAQAogI2lu
Y2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRl
IDx3dGYvTm9uY29weWFibGUuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySGlzdG9yeS5jcHAKaW5kZXggYmNmZWY0YTRi
NWM3N2MyZDJhNTJkMDY2MjFjNmFkNGVmMDlkNDVkMC4uODczYThmOTViNGZmNjI4MzA4NjRjYmUy
ZWJlMDU2NzZlMGQ5M2NiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JIaXN0b3J5LmNwcApAQCAtNzksNyArNzksNyBAQCBTdHJpbmcgSW5zcGVjdG9ySGlzdG9yeTo6
QWN0aW9uOjptZXJnZUlkKCkKICAgICByZXR1cm4gIiI7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySGlz
dG9yeTo6QWN0aW9uOjptZXJnZShQYXNzT3duUHRyPEFjdGlvbj4pCit2b2lkIEluc3BlY3Rvckhp
c3Rvcnk6OkFjdGlvbjo6bWVyZ2Uoc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4pCiB7CiB9CiAKQEAg
LTg3LDE2ICs4NywxNiBAQCBJbnNwZWN0b3JIaXN0b3J5OjpJbnNwZWN0b3JIaXN0b3J5KCkgOiBt
X2FmdGVyTGFzdEFjdGlvbkluZGV4KDApIHsgfQogCiBJbnNwZWN0b3JIaXN0b3J5Ojp+SW5zcGVj
dG9ySGlzdG9yeSgpIHsgfQogCi1ib29sIEluc3BlY3Rvckhpc3Rvcnk6OnBlcmZvcm0oUGFzc093
blB0cjxBY3Rpb24+IGFjdGlvbiwgRXhjZXB0aW9uQ29kZSYgZWMpCitib29sIEluc3BlY3Rvckhp
c3Rvcnk6OnBlcmZvcm0oc3RkOjp1bmlxdWVfcHRyPEFjdGlvbj4gYWN0aW9uLCBFeGNlcHRpb25D
b2RlJiBlYykKIHsKICAgICBpZiAoIWFjdGlvbi0+cGVyZm9ybShlYykpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogICAgIGlmICghYWN0aW9uLT5tZXJnZUlkKCkuaXNFbXB0eSgpICYmIG1fYWZ0
ZXJMYXN0QWN0aW9uSW5kZXggPiAwICYmIGFjdGlvbi0+bWVyZ2VJZCgpID09IG1faGlzdG9yeVtt
X2FmdGVyTGFzdEFjdGlvbkluZGV4IC0gMV0tPm1lcmdlSWQoKSkKLSAgICAgICAgbV9oaXN0b3J5
W21fYWZ0ZXJMYXN0QWN0aW9uSW5kZXggLSAxXS0+bWVyZ2UoYWN0aW9uKTsKKyAgICAgICAgbV9o
aXN0b3J5W21fYWZ0ZXJMYXN0QWN0aW9uSW5kZXggLSAxXS0+bWVyZ2Uoc3RkOjptb3ZlKGFjdGlv
bikpOwogICAgIGVsc2UgewogICAgICAgICBtX2hpc3RvcnkucmVzaXplKG1fYWZ0ZXJMYXN0QWN0
aW9uSW5kZXgpOwotICAgICAgICBtX2hpc3RvcnkuYXBwZW5kKGFjdGlvbik7CisgICAgICAgIG1f
aGlzdG9yeS5hcHBlbmQoc3RkOjptb3ZlKGFjdGlvbikpOwogICAgICAgICArK21fYWZ0ZXJMYXN0
QWN0aW9uSW5kZXg7CiAgICAgfQogICAgIHJldHVybiB0cnVlOwpAQCAtMTA0LDcgKzEwNCw3IEBA
IGJvb2wgSW5zcGVjdG9ySGlzdG9yeTo6cGVyZm9ybShQYXNzT3duUHRyPEFjdGlvbj4gYWN0aW9u
LCBFeGNlcHRpb25Db2RlJiBlYykKIAogdm9pZCBJbnNwZWN0b3JIaXN0b3J5OjptYXJrVW5kb2Fi
bGVTdGF0ZSgpCiB7Ci0gICAgcGVyZm9ybShhZG9wdFB0cihuZXcgVW5kb2FibGVTdGF0ZU1hcmso
KSksIElHTk9SRV9FWENFUFRJT04pOworICAgIHBlcmZvcm0oc3RkOjptYWtlX3VuaXF1ZTxVbmRv
YWJsZVN0YXRlTWFyaz4oKSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIGJvb2wgSW5zcGVjdG9y
SGlzdG9yeTo6dW5kbyhFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySGlzdG9yeS5oCmluZGV4IDcyMjRhMzkzZWZiYjVhOWZhYzFlYmFlOTZkMzEz
MTUyNTdjNGQ2ZDUuLmEyMmFiYjUzMGNiNGFmNDRkNzgyOTUwMzQ3N2NiZDJjMmVjNTdhZjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JIaXN0b3J5LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckhpc3RvcnkuaApAQCAtMzMsNyAr
MzMsNiBAQAogCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogCi0jaW5jbHVkZSA8d3RmL093
blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KIApAQCAtNTYsNyArNTUsNyBAQCBwdWJsaWM6CiAgICAgICAgIHZpcnR1YWwgU3Ry
aW5nIHRvU3RyaW5nKCk7CiAKICAgICAgICAgdmlydHVhbCBTdHJpbmcgbWVyZ2VJZCgpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgbWVyZ2UoUGFzc093blB0cjxBY3Rpb24+KTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIG1lcmdlKHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+KTsKIAogICAgICAgICB2aXJ0
dWFsIGJvb2wgcGVyZm9ybShFeGNlcHRpb25Db2RlJikgPSAwOwogCkBAIC03MSw3ICs3MCw3IEBA
IHB1YmxpYzoKICAgICBJbnNwZWN0b3JIaXN0b3J5KCk7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9y
SGlzdG9yeSgpOwogCi0gICAgYm9vbCBwZXJmb3JtKFBhc3NPd25QdHI8QWN0aW9uPiwgRXhjZXB0
aW9uQ29kZSYpOworICAgIGJvb2wgcGVyZm9ybShzdGQ6OnVuaXF1ZV9wdHI8QWN0aW9uPiwgRXhj
ZXB0aW9uQ29kZSYpOwogICAgIHZvaWQgbWFya1VuZG9hYmxlU3RhdGUoKTsKIAogICAgIGJvb2wg
dW5kbyhFeGNlcHRpb25Db2RlJik7CkBAIC03OSw3ICs3OCw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHJlc2V0KCk7CiAKIHByaXZhdGU6Ci0gICAgVmVjdG9yPE93blB0cjxBY3Rpb24+PiBtX2hpc3Rv
cnk7CisgICAgVmVjdG9yPHN0ZDo6dW5pcXVlX3B0cjxBY3Rpb24+PiBtX2hpc3Rvcnk7CiAgICAg
c2l6ZV90IG1fYWZ0ZXJMYXN0QWN0aW9uSW5kZXg7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmluZGV4IGQwNzFhMDA0Zjk0
OTZkZjI5NjUyMDI4OTJhNTljZDJmMGFkOWIxNmQuLmFhZjFmZDkzYmM0NTI3MWZkODU5Y2I3YTQx
MmNmMjExNDljNzU3MjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC0zNSw3ICszNSw2IEBACiAKICNpbmNsdWRlICJJbnNw
ZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnB1dEFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5wdXRBZ2VudC5oCmluZGV4IGYxNTJhZjY0NWZkNTg4OTlk
MDZiZGRkMjVjMmExYTc1NDRmMDQ3NzguLjkwOTFkYTczYTUzYWNiYWVmOTZiMWE3YjhkZTJmM2U0
ZWRkZThjMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnB1dEFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcklucHV0
QWdlbnQuaApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFz
ZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JMYXllclRyZWVBZ2VudC5o
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKaW5k
ZXggNzU2MWFjNzU0ZGQ0YTNjOGE5Y2M2ODkwODc3ZTc5ZTM0MzY1ZjgwZi4uMGE1Yjg4ZmNlMDdh
NWQyNmRhY2E0YzAyNTJjNWYyMDJmMzRjOTAyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckxheWVyVHJlZUFnZW50LmgKQEAgLTM2LDcgKzM2LDYgQEAKICNp
bmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yV2ViVHlwZUJ1aWxkZXJzLmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKLSNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5jcHAKaW5k
ZXggMTY0ZDkxNGQ2ZjMzNWRmYjAxYTI3NTkxZTA1YTFkYmEwMWUyYTYzNC4uMzVlZTAxZTEyYWEz
M2EyMmVjMmY1YTBjZmUxNjhjYzg0Y2I2NGQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yTWVtb3J5QWdlbnQuY3BwCkBAIC00OSw4ICs0OSw2IEBACiAjaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oPgogI2luY2x1ZGUgPHJ1bnRpbWUvQXJy
YXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0ltcGwuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JNZW1vcnlBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvck1lbW9yeUFnZW50LmgKaW5kZXggMTJmM2E5YzVlNTVmMjcyZWJjNGRmYjg1NGI4Yjg2MmVi
MjZiMDE0My4uYjNjZDJmZmU3YTZjMWM1ZGIyYTc2ZTcyNGZlOGE5NjYwYWYxZGZjYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck1lbW9yeUFnZW50LmgKQEAgLTM1
LDcgKzM1LDYgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1
ZGUgIkluc3BlY3RvcldlYkJhY2tlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgPHd0Zi9QYXNz
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKaW5kZXgg
NTI0ZDkyOTdhMDE1ZDE5NjhkNjRkMDc1ZmM4MmUzYmE0N2M3NDYxOC4uMzRjZDVhNGUzMGM5YmE4
ZjY2OWQ1ZGQzMzY5ZTc3MGY0NDU4Y2Y1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JPdmVybGF5LmNwcApAQCAtMjgwLDcgKzI4MCw3IEBAIHZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6c2V0UGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2UoY29uc3QgU3RyaW5nKiBtZXNzYWdl
KQogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWRlSGlnaGxpZ2h0KCkKIHsKICAgICBtX2hpZ2hs
aWdodE5vZGUuY2xlYXIoKTsKLSAgICBtX2hpZ2hsaWdodFF1YWQuY2xlYXIoKTsKKyAgICBtX2hp
Z2hsaWdodFF1YWQucmVzZXQoKTsKICAgICB1cGRhdGUoKTsKIH0KIApAQCAtMjkxLDEzICsyOTEs
MTMgQEAgdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHROb2RlKE5vZGUqIG5vZGUsIGNv
bnN0IEhpZ2hsaWdodENvbmZpZyYgaGlnaGxpZ2gKICAgICB1cGRhdGUoKTsKIH0KIAotdm9pZCBJ
bnNwZWN0b3JPdmVybGF5OjpoaWdobGlnaHRRdWFkKFBhc3NPd25QdHI8RmxvYXRRdWFkPiBxdWFk
LCBjb25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZykKK3ZvaWQgSW5zcGVjdG9y
T3ZlcmxheTo6aGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBj
b25zdCBIaWdobGlnaHRDb25maWcmIGhpZ2hsaWdodENvbmZpZykKIHsKICAgICBpZiAobV9xdWFk
SGlnaGxpZ2h0Q29uZmlnLnVzZVBhZ2VDb29yZGluYXRlcykKICAgICAgICAgKnF1YWQgLT0gbV9w
YWdlLm1haW5GcmFtZSgpLnZpZXcoKS0+c2Nyb2xsT2Zmc2V0KCk7CiAKICAgICBtX3F1YWRIaWdo
bGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWc7Ci0gICAgbV9oaWdobGlnaHRRdWFkID0gcXVh
ZDsKKyAgICBtX2hpZ2hsaWdodFF1YWQgPSBzdGQ6Om1vdmUocXVhZCk7CiAgICAgdXBkYXRlKCk7
CiB9CiAKQEAgLTc0OCw3ICs3NDgsNyBAQCBQYWdlKiBJbnNwZWN0b3JPdmVybGF5OjpvdmVybGF5
UGFnZSgpCiAKICAgICBQYWdlOjpQYWdlQ2xpZW50cyBwYWdlQ2xpZW50czsKICAgICBmaWxsV2l0
aEVtcHR5Q2xpZW50cyhwYWdlQ2xpZW50cyk7Ci0gICAgbV9vdmVybGF5UGFnZSA9IGFkb3B0UHRy
KG5ldyBQYWdlKHBhZ2VDbGllbnRzKSk7CisgICAgbV9vdmVybGF5UGFnZSA9IHN0ZDo6bWFrZV91
bmlxdWU8UGFnZT4ocGFnZUNsaWVudHMpOwogCiAgICAgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9w
YWdlLnNldHRpbmdzKCk7CiAgICAgU2V0dGluZ3MmIG92ZXJsYXlTZXR0aW5ncyA9IG1fb3Zlcmxh
eVBhZ2UtPnNldHRpbmdzKCk7CkBAIC04MTUsNyArODE1LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVy
bGF5OjpldmFsdWF0ZUluT3ZlcmxheShjb25zdCBTdHJpbmcmIG1ldGhvZCwgUGFzc1JlZlB0cjxJ
bnNwZWMKIAogdm9pZCBJbnNwZWN0b3JPdmVybGF5OjpmcmVlUGFnZSgpCiB7Ci0gICAgbV9vdmVy
bGF5UGFnZS5jbGVhcigpOworICAgIG1fb3ZlcmxheVBhZ2UucmVzZXQoKTsKIH0KIAogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmgKaW5kZXggN2UzZDAxN2IyMzVmYjc3NzI5MWYyNTBmZjQ3ZjZmMTg5NTc0MjQzMS4uYTdl
NmM3ODQ5YjIzYTAxZjYwYTY5ODI0NDE0YjM1ZGU1YTIwYzc4NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5oCkBAIC0zMiw4ICszMiw2IEBACiAjaW5jbHVk
ZSAiQ29sb3IuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJMYXlvdXRSZWN0
LmgiCi0jaW5jbHVkZSA8d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTExNyw3ICsxMTUsNyBAQCBwdWJsaWM6CiAK
ICAgICB2b2lkIGhpZGVIaWdobGlnaHQoKTsKICAgICB2b2lkIGhpZ2hsaWdodE5vZGUoTm9kZSos
IGNvbnN0IEhpZ2hsaWdodENvbmZpZyYpOwotICAgIHZvaWQgaGlnaGxpZ2h0UXVhZChQYXNzT3du
UHRyPEZsb2F0UXVhZD4sIGNvbnN0IEhpZ2hsaWdodENvbmZpZyYpOworICAgIHZvaWQgaGlnaGxp
Z2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiwgY29uc3QgSGlnaGxpZ2h0Q29uZmln
Jik7CiAKICAgICBOb2RlKiBoaWdobGlnaHRlZE5vZGUoKSBjb25zdDsKIApAQCAtMTQxLDggKzEz
OSw4IEBAIHByaXZhdGU6CiAgICAgU3RyaW5nIG1fcGF1c2VkSW5EZWJ1Z2dlck1lc3NhZ2U7CiAg
ICAgUmVmUHRyPE5vZGU+IG1faGlnaGxpZ2h0Tm9kZTsKICAgICBIaWdobGlnaHRDb25maWcgbV9u
b2RlSGlnaGxpZ2h0Q29uZmlnOwotICAgIE93blB0cjxGbG9hdFF1YWQ+IG1faGlnaGxpZ2h0UXVh
ZDsKLSAgICBPd25QdHI8UGFnZT4gbV9vdmVybGF5UGFnZTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8
RmxvYXRRdWFkPiBtX2hpZ2hsaWdodFF1YWQ7CisgICAgc3RkOjp1bmlxdWVfcHRyPFBhZ2U+IG1f
b3ZlcmxheVBhZ2U7CiAgICAgSGlnaGxpZ2h0Q29uZmlnIG1fcXVhZEhpZ2hsaWdodENvbmZpZzsK
ICAgICBJbnRTaXplIG1fc2l6ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggMDM1YTM0MTJjNGVlYjkwMDE2NjJl
NjExNzgzYmIzOTk2ODhkMDNhNS4uZGY4NTZkODlmMDljNjRmYmQ0MTFhNTUyZjk1NmM1YmU0ODRi
YjRhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2Zp
bGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQcm9m
aWxlckFnZW50LmNwcApAQCAtNTAsNyArNTAsNiBAQAogI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNw
ZWN0b3JWYWx1ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNvbnNv
bGVBZ2VudC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgotI2luY2x1ZGUgPHd0Zi9P
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclByb2ZpbGVyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JQcm9maWxlckFnZW50LmgKaW5kZXggNGMzMzhjZThjNGE4OTFlMTczOTA5MWZmNzI2
NjBkMTA1OWUwNTVkZS4uYTMzNGU2NTRmMWJjYWQ3ZTg3MTg2ZGZjMWY2YzI3NzAwOTc5MTgyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclByb2ZpbGVyQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUHJvZmlsZXJBZ2Vu
dC5oCkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgotI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDQ4MGJkZTkwNDcxODdmNTA4YmVkZDY5YzEz
MGQ4NjE5NzUwOTc0NjYuLjg5ZTVjZjQ5NWVlYWE3ODUyMzM2NGIxMGQxNDRhMTgyNTRmMjEyZjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudC5jcHAKQEAgLTY0Myw3ICs2NDMsNyBAQCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogICAg
IDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiTmV0d29yayIpLCBpbnN0cnVtZW50
aW5nQWdlbnRzKQogICAgICwgbV9wYWdlQWdlbnQocGFnZUFnZW50KQogICAgICwgbV9jbGllbnQo
Y2xpZW50KQotICAgICwgbV9yZXNvdXJjZXNEYXRhKGFkb3B0UHRyKG5ldyBOZXR3b3JrUmVzb3Vy
Y2VzRGF0YSgpKSkKKyAgICAsIG1fcmVzb3VyY2VzRGF0YShzdGQ6Om1ha2VfdW5pcXVlPE5ldHdv
cmtSZXNvdXJjZXNEYXRhPigpKQogICAgICwgbV9lbmFibGVkKGZhbHNlKQogICAgICwgbV9jYWNo
ZURpc2FibGVkKGZhbHNlKQogICAgICwgbV9sb2FkaW5nWEhSU3luY2hyb25vdXNseShmYWxzZSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CmluZGV4IGQyY2EyYTI5NGVjOWNhNjNjZWY4NWNmMzdiMWZhN2U1YjNjYWVlMGYuLjEyZGE3Nzhj
NDg4M2U2ODdlYmE0MWUxMjJhYjUwOWU0OGY3NmI5YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMzQsNyArMzQsNiBAQAog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkZyb250ZW5kRGlz
cGF0Y2hlcnMuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgpAQCAtMTQ1LDcgKzE0NCw3IEBAIHByaXZhdGU6CiAgICAgSW5zcGVjdG9y
Q2xpZW50KiBtX2NsaWVudDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JOZXR3b3JrRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JOZXR3b3JrQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7Ci0gICAgT3duUHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jlc291
cmNlc0RhdGE7CisgICAgc3RkOjp1bmlxdWVfcHRyPE5ldHdvcmtSZXNvdXJjZXNEYXRhPiBtX3Jl
c291cmNlc0RhdGE7CiAgICAgYm9vbCBtX2VuYWJsZWQ7CiAgICAgYm9vbCBtX2NhY2hlRGlzYWJs
ZWQ7CiAgICAgYm9vbCBtX2xvYWRpbmdYSFJTeW5jaHJvbm91c2x5OwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuY3BwCmluZGV4IGYyN2MzYjEzN2Ji
YmI0Y2RlYWZlYTFhNjE5ZTJlYjdiOWE1OTI1NzQuLjQ4NjcwY2QxZGY3ODRmMjg5MDNhMWM3YmI2
YzcxNGRlOWRmZDE3YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JTdHlsZVNoZWV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yU3R5bGVTaGVldC5jcHAKQEAgLTU4LDggKzU4LDYgQEAKICNpbmNsdWRlICJXZWJLaXRDU1NL
ZXlmcmFtZXNSdWxlLmgiCiAjaW5jbHVkZSA8aW5zcGVjdG9yL0NvbnRlbnRTZWFyY2hVdGlsaXRp
ZXMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8
d3RmL093blB0ci5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KICNpbmNsdWRl
IDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CkBAIC03NywxNSArNzUsMTUgQEAgcHVibGljOgog
ICAgIHZvaWQgc2V0VGV4dChjb25zdCBTdHJpbmcmIHRleHQpOwogICAgIGJvb2wgaGFzVGV4dCgp
IGNvbnN0IHsgcmV0dXJuIG1faGFzVGV4dDsgfQogICAgIFJ1bGVTb3VyY2VEYXRhTGlzdCogc291
cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRGF0YS5nZXQoKTsgfQotICAgIHZvaWQg
c2V0U291cmNlRGF0YShQYXNzT3duUHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4pOwotICAgIGJvb2wg
aGFzU291cmNlRGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlRGF0YTsgfQorICAgIHZvaWQg
c2V0U291cmNlRGF0YShzdGQ6OnVuaXF1ZV9wdHI8UnVsZVNvdXJjZURhdGFMaXN0Pik7CisgICAg
Ym9vbCBoYXNTb3VyY2VEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VEYXRhICE9IG51bGxw
dHI7IH0KICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OkNTU1J1bGVTb3VyY2VEYXRhPiBydWxlU291
cmNlRGF0YUF0KHVuc2lnbmVkKSBjb25zdDsKIAogcHJpdmF0ZToKIAogICAgIFN0cmluZyBtX3Rl
eHQ7CiAgICAgYm9vbCBtX2hhc1RleHQ7Ci0gICAgT3duUHRyPFJ1bGVTb3VyY2VEYXRhTGlzdD4g
bV9zb3VyY2VEYXRhOworICAgIHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNlRGF0YUxpc3Q+IG1f
c291cmNlRGF0YTsKIH07CiAKIFBhcnNlZFN0eWxlU2hlZXQ6OlBhcnNlZFN0eWxlU2hlZXQoKQpA
QCAtMTE1LDE0ICsxMTMsMTQgQEAgc3RhdGljIHZvaWQgZmxhdHRlblNvdXJjZURhdGEoUnVsZVNv
dXJjZURhdGFMaXN0KiBkYXRhTGlzdCwgUnVsZVNvdXJjZURhdGFMaXN0KgogICAgIH0KIH0KIAot
dm9pZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VEYXRhKFBhc3NPd25QdHI8UnVsZVNvdXJj
ZURhdGFMaXN0PiBzb3VyY2VEYXRhKQordm9pZCBQYXJzZWRTdHlsZVNoZWV0OjpzZXRTb3VyY2VE
YXRhKHN0ZDo6dW5pcXVlX3B0cjxSdWxlU291cmNlRGF0YUxpc3Q+IHNvdXJjZURhdGEpCiB7CiAg
ICAgaWYgKCFzb3VyY2VEYXRhKSB7Ci0gICAgICAgIG1fc291cmNlRGF0YS5jbGVhcigpOworICAg
ICAgICBtX3NvdXJjZURhdGEucmVzZXQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IG1fc291cmNlRGF0YSA9IGFkb3B0UHRyKG5ldyBSdWxlU291cmNlRGF0YUxpc3QoKSk7CisgICAg
bV9zb3VyY2VEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxSdWxlU291cmNlRGF0YUxpc3Q+KCk7CiAK
ICAgICAvLyBGSVhNRTogVGhpcyBpcyBhIHRlbXBvcmFyeSBzb2x1dGlvbiB0byByZXRhaW4gdGhl
IG9yaWdpbmFsIGZsYXQgc291cmNlRGF0YSBzdHJ1Y3R1cmUKICAgICAvLyBjb250YWluaW5nIG9u
bHkgc3R5bGUgcnVsZXMsIGV2ZW4gdGhvdWdoIENTU1BhcnNlciBub3cgcHJvdmlkZXMgdGhlIGZ1
bGwgcnVsZSBzb3VyY2UgZGF0YSB0cmVlLgpAQCAtMjg0LDkgKzI4Miw5IEBAIHN0YXRpYyB2b2lk
IGZpbGxNZWRpYUxpc3RDaGFpbihDU1NSdWxlKiBydWxlLCBBcnJheTxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpDU1M6CiAgICAgfQogfQogCi1zdGF0aWMgUGFzc093blB0cjxDU1NQYXJzZXI+IGNy
ZWF0ZUNTU1BhcnNlcihEb2N1bWVudCogZG9jdW1lbnQpCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PENTU1BhcnNlcj4gY3JlYXRlQ1NTUGFyc2VyKERvY3VtZW50KiBkb2N1bWVudCkKIHsKLSAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENTU1BhcnNlcihkb2N1bWVudCA/IENTU1BhcnNlckNvbnRleHQo
KmRvY3VtZW50KSA6IHN0cmljdENTU1BhcnNlckNvbnRleHQoKSkpOworICAgIHJldHVybiBzdGQ6
Om1ha2VfdW5pcXVlPENTU1BhcnNlcj4oZG9jdW1lbnQgPyBDU1NQYXJzZXJDb250ZXh0KCpkb2N1
bWVudCkgOiBzdHJpY3RDU1NQYXJzZXJDb250ZXh0KCkpOwogfQogCiBQYXNzUmVmUHRyPEluc3Bl
Y3RvclN0eWxlPiBJbnNwZWN0b3JTdHlsZTo6Y3JlYXRlKGNvbnN0IEluc3BlY3RvckNTU0lkJiBz
dHlsZUlkLCBQYXNzUmVmUHRyPENTU1N0eWxlRGVjbGFyYXRpb24+IHN0eWxlLCBJbnNwZWN0b3JT
dHlsZVNoZWV0KiBwYXJlbnRTdHlsZVNoZWV0KQpAQCAtNTIxLDcgKzUxOSw3IEBAIFBhc3NSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6Q1NTOjpDU1NTdHlsZT4gSW5zcGVjdG9yU3R5bGU6
OnN0eWxlV2l0aFByb3BlCiAgICAgSGFzaFNldDxTdHJpbmc+IGZvdW5kU2hvcnRoYW5kczsKICAg
ICBTdHJpbmcgcHJldmlvdXNQcmlvcml0eTsKICAgICBTdHJpbmcgcHJldmlvdXNTdGF0dXM7Ci0g
ICAgT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncyhtX3BhcmVudFN0eWxlU2hlZXQg
PyBtX3BhcmVudFN0eWxlU2hlZXQtPmxpbmVFbmRpbmdzKCkgOiBQYXNzT3duUHRyPFZlY3Rvcjxz
aXplX3Q+PigpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8VmVjdG9yPHNpemVfdD4+IGxpbmVFbmRp
bmdzKG1fcGFyZW50U3R5bGVTaGVldCA/IG1fcGFyZW50U3R5bGVTaGVldC0+bGluZUVuZGluZ3Mo
KSA6IG51bGxwdHIpOwogICAgIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gc291cmNlRGF0YSA9
IGV4dHJhY3RTb3VyY2VEYXRhKCk7CiAgICAgdW5zaWduZWQgcnVsZUJvZHlSYW5nZVN0YXJ0ID0g
c291cmNlRGF0YSA/IHNvdXJjZURhdGEtPnJ1bGVCb2R5UmFuZ2Uuc3RhcnQgOiAwOwogCkBAIC0x
MjExLDEwICsxMjA5LDEwIEBAIFJlZlB0cjxDU1NSdWxlU291cmNlRGF0YT4gSW5zcGVjdG9yU3R5
bGVTaGVldDo6cnVsZVNvdXJjZURhdGFGb3IoQ1NTU3R5bGVEZWNsYXJhCiAgICAgcmV0dXJuIG1f
cGFyc2VkU3R5bGVTaGVldC0+cnVsZVNvdXJjZURhdGFBdChydWxlSW5kZXhCeVN0eWxlKHN0eWxl
KSk7CiB9CiAKLVBhc3NPd25QdHI8VmVjdG9yPHNpemVfdD4+IEluc3BlY3RvclN0eWxlU2hlZXQ6
OmxpbmVFbmRpbmdzKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gSW5z
cGVjdG9yU3R5bGVTaGVldDo6bGluZUVuZGluZ3MoKSBjb25zdAogewogICAgIGlmICghbV9wYXJz
ZWRTdHlsZVNoZWV0LT5oYXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPFZlY3Rv
cjxzaXplX3Q+PigpOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gQ29udGVu
dFNlYXJjaFV0aWxpdGllczo6bGluZUVuZGluZ3MobV9wYXJzZWRTdHlsZVNoZWV0LT50ZXh0KCkp
OwogfQogCkBAIC0xMjcwLDkgKzEyNjgsOSBAQCBib29sIEluc3BlY3RvclN0eWxlU2hlZXQ6OmVu
c3VyZVNvdXJjZURhdGEoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBSZWZQdHI8U3R5
bGVTaGVldENvbnRlbnRzPiBuZXdTdHlsZVNoZWV0ID0gU3R5bGVTaGVldENvbnRlbnRzOjpjcmVh
dGUoKTsKLSAgICBPd25QdHI8UnVsZVNvdXJjZURhdGFMaXN0PiBydWxlU291cmNlRGF0YVJlc3Vs
dCA9IGFkb3B0UHRyKG5ldyBSdWxlU291cmNlRGF0YUxpc3QoKSk7CisgICAgYXV0byBydWxlU291
cmNlRGF0YVJlc3VsdCA9IHN0ZDo6bWFrZV91bmlxdWU8UnVsZVNvdXJjZURhdGFMaXN0PigpOwog
ICAgIGNyZWF0ZUNTU1BhcnNlcihtX3BhZ2VTdHlsZVNoZWV0LT5vd25lckRvY3VtZW50KCkpLT5w
YXJzZVNoZWV0KG5ld1N0eWxlU2hlZXQuZ2V0KCksIG1fcGFyc2VkU3R5bGVTaGVldC0+dGV4dCgp
LCAwLCBydWxlU291cmNlRGF0YVJlc3VsdC5nZXQoKSk7Ci0gICAgbV9wYXJzZWRTdHlsZVNoZWV0
LT5zZXRTb3VyY2VEYXRhKHJ1bGVTb3VyY2VEYXRhUmVzdWx0LnJlbGVhc2UoKSk7CisgICAgbV9w
YXJzZWRTdHlsZVNoZWV0LT5zZXRTb3VyY2VEYXRhKHN0ZDo6bW92ZShydWxlU291cmNlRGF0YVJl
c3VsdCkpOwogICAgIHJldHVybiBtX3BhcnNlZFN0eWxlU2hlZXQtPmhhc1NvdXJjZURhdGEoKTsK
IH0KIApAQCAtMTQ3Niw3ICsxNDc0LDcgQEAgYm9vbCBJbnNwZWN0b3JTdHlsZVNoZWV0Rm9ySW5s
aW5lU3R5bGU6OnNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwKICAgICBy
ZXR1cm4gIWVjOwogfQogCi1QYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBJbnNwZWN0b3JTdHls
ZVNoZWV0Rm9ySW5saW5lU3R5bGU6OmxpbmVFbmRpbmdzKCkgY29uc3QKK3N0ZDo6dW5pcXVlX3B0
cjxWZWN0b3I8c2l6ZV90Pj4gSW5zcGVjdG9yU3R5bGVTaGVldEZvcklubGluZVN0eWxlOjpsaW5l
RW5kaW5ncygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6Omxp
bmVFbmRpbmdzKGVsZW1lbnRTdHlsZVRleHQoKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCBiYzFmMWFjNzljYjFkN2MyMzRjZjE1
NGE3YTJmZTU4N2MxZTU5Njc2Li44YjE5MWZlMDg0MzliNWY4ZTc3YTI3NTk1OTdlNjMzZGE5OWUw
ZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVT
aGVldC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
LmgKQEAgLTIyNiw3ICsyMjYsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAvLyBBbHNvIGFjY2Vzc2Vk
IGJ5IGZyaWVuZCBjbGFzcyBJbnNwZWN0b3JTdHlsZS4KICAgICB2aXJ0dWFsIGJvb2wgc2V0U3R5
bGVUZXh0KENTU1N0eWxlRGVjbGFyYXRpb24qLCBjb25zdCBTdHJpbmcmLCBFeGNlcHRpb25Db2Rl
Jik7Ci0gICAgdmlydHVhbCBQYXNzT3duUHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5lRW5kaW5ncygp
IGNvbnN0OworICAgIHZpcnR1YWwgc3RkOjp1bmlxdWVfcHRyPFZlY3RvcjxzaXplX3Q+PiBsaW5l
RW5kaW5ncygpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxD
U1NTdHlsZVJ1bGU+PiBDU1NTdHlsZVJ1bGVWZWN0b3I7CkBAIC0yNzgsNyArMjc4LDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgLy8gQWxzbyBhY2Nlc3NlZCBieSBmcmllbmQgY2xhc3MgSW5zcGVjdG9y
U3R5bGUuCiAgICAgdmlydHVhbCBib29sIHNldFN0eWxlVGV4dChDU1NTdHlsZURlY2xhcmF0aW9u
KiwgY29uc3QgU3RyaW5nJiwgRXhjZXB0aW9uQ29kZSYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
UGFzc093blB0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3MoKSBjb25zdCBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHN0ZDo6dW5pcXVlX3B0cjxWZWN0b3I8c2l6ZV90Pj4gbGluZUVuZGluZ3Mo
KSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKICAgICBDU1NTdHlsZURlY2xhcmF0aW9uKiBp
bmxpbmVTdHlsZSgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JUaW1lbGluZUFnZW50LmgKaW5kZXggZWZmNjI1ZDQ2NWU1ZmU5YmY0YjRhYmM4Mjc4ODBm
MzZhMDcyMDg2OS4uMDBjYTZhZTBhYTI3MWUyNTFiMDg0NjZlY2Y5M2UwOGVmYTY2OTBjMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
CkBAIC0zOCw3ICszOCw2IEBACiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViRnJvbnRlbmREaXNwYXRj
aGVycy5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKICNpbmNsdWRlIDxpbnNwZWN0b3IvSW5z
cGVjdG9yVmFsdWVzLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKaW5kZXggYjgxMDhiNTRm
MmM5Y2FmMjVlMmQwZWJmYTRmYzJiOTJkMTc1YzBlYy4uODU3M2Q4NmFjNDVmYTMxNGUxYWIzNGQy
ODhhMGVhMzc5MzEwYTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwCkBAIC00MCw3ICs0MCw2IEBACiAjaW5jbHVkZSAiVVJMLmgi
CiAjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGVQcm94eS5oIgogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlQ29uc29sZUFnZW50LmNwcAppbmRleCA1MWI1OThlY2Q5
OGUwNGM4YWUyZjRjOTk0YzM4ZGY5MmVlZjc2ZGEzLi4xMDUxZDdhNjU3MjM3MmMxMDY1ZjdmMTM4
MjdlOTM4ZTBmNjNjMzVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZUNvbnNvbGVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VDb25z
b2xlQWdlbnQuY3BwCkBAIC03NSw3ICs3NSw3IEBAIHZvaWQgUGFnZUNvbnNvbGVBZ2VudDo6YWRk
SW5zcGVjdGVkTm9kZShFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBub2RlSWQpCiAgICAg
fQogCiAgICAgaWYgKENvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0gc3Rh
dGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKj4obV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIpLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0LT5h
ZGRJbnNwZWN0ZWRPYmplY3QoYWRvcHRQdHIobmV3IEluc3BlY3RhYmxlTm9kZShub2RlKSkpOwor
ICAgICAgICBjb21tYW5kTGluZUFQSUhvc3QtPmFkZEluc3BlY3RlZE9iamVjdChzdGQ6Om1ha2Vf
dW5pcXVlPEluc3BlY3RhYmxlTm9kZT4obm9kZSkpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVJ1bnRpbWVBZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VSdW50aW1lQWdlbnQuaAppbmRleCAw
MjA1OGQ2ZjQzYjQzMjFjYjM0YzQ3MmYyNDFlOWRmMGQzODVhMDA5Li5mZDQ3Yzc0MDcwZGQ1NDRi
ZGRiZTMxYjI2YjFkNzA4OTI1OWZmMjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUGFnZVJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlUnVudGltZUFnZW50LmgKQEAgLTM1LDcgKzM1LDYgQEAKIAogI2luY2x1ZGUgPGluc3BlY3Rv
ci9JbnNwZWN0b3JKU0Zyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRy
Lmg+CiAKIG5hbWVzcGFjZSBKU0MgewogY2xhc3MgRXhlY1N0YXRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkNvbnNvbGVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNwcAppbmRleCBlYzEyZDhhNjc5ZGViYzNjNDQ3
NDc0MzE1YTNhZTBlNjRhNjJmZDhkLi41N2M4ZjRkZDg4YjE0Nzc0ODg3NzM0ZGY4MDYxMWRlMTE2
NDkxNTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViQ29uc29sZUFnZW50LmNw
cApAQCAtMTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiB2b2lkIFdlYkNvbnNvbGVBZ2VudDo6YWRk
SW5zcGVjdGVkSGVhcE9iamVjdChFcnJvclN0cmluZyosIGludCBpbnNwZWN0ZWRIZWFwT2JqZWN0
SWQpCiB7CiAgICAgaWYgKENvbW1hbmRMaW5lQVBJSG9zdCogY29tbWFuZExpbmVBUElIb3N0ID0g
c3RhdGljX2Nhc3Q8V2ViSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKj4obV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIpLT5jb21tYW5kTGluZUFQSUhvc3QoKSkKLSAgICAgICAgY29tbWFuZExpbmVBUElIb3N0
LT5hZGRJbnNwZWN0ZWRPYmplY3QoYWRvcHRQdHIobmV3IEluc3BlY3RhYmxlSGVhcE9iamVjdChp
bnNwZWN0ZWRIZWFwT2JqZWN0SWQpKSk7CisgICAgICAgIGNvbW1hbmRMaW5lQVBJSG9zdC0+YWRk
SW5zcGVjdGVkT2JqZWN0KHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdGFibGVIZWFwT2JqZWN0Pihp
bnNwZWN0ZWRIZWFwT2JqZWN0SWQpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclJ1bnRpbWVBZ2VudC5oCmluZGV4IDk1ZTI1
NGRjZDJlZmY2NDY0YjVlNzA3ZmE2NGEzZjRjNWQwOTg2ZGQuLjVjMmQ4NjE0YjBhYjNkYmU3MmU4
NjU4ZDEwY2QxOWY3NDJkZGMzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyUnVudGltZUFnZW50LmgKQEAgLTM0LDcgKzM0LDYgQEAKICNpZiBFTkFCTEUoSU5TUEVDVE9S
KQogCiAjaW5jbHVkZSA8aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaD4K
LSNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCBmODg0NjA1ODg1MDA4Mjc1ZDA3NDk3
YzdkNjRjODEzNDQyZGVmMjVmLi5hZGRiZjYzYjhhOGY1MmZlMTA2YjI5YzhhMTFkMDI1MDgxZDA3
NmM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xOTQsNyArMTk0LDcg
QEAgcHJvdGVjdGVkOgogfTsKIAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnREdW1teTo6SW5zcGVj
dG9yRnJvbnRlbmRDbGllbnREdW1teShJbnNwZWN0b3JDb250cm9sbGVyKiBjb250cm9sbGVyLCBQ
YWdlKiBwYWdlKQotICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbChjb250cm9sbGVy
LCBwYWdlLCBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGlu
Z3MoKSkpCisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGNvbnRyb2xsZXIsIHBh
Z2UsIHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGlu
Z3M+KCkpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0LnZjeHByb2ov
V2ViS2l0RXhwb3J0R2VuZXJhdG9yL1dlYktpdEV4cG9ydHMuZGVmLmluIGIvU291cmNlL1dlYktp
dC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYu
aW4KaW5kZXggMmVjZDQ1Mjc2MTk4YzcwMDFkNjM2NzRhODEyNjUzNjAyNDZjOTQzYS4uNjkwYzg5
ZmQ2NzhmNDVjYzdjMmE5N2I1MzgyMjI3NTMxYWQ2NmVkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5lcmF0b3IvV2ViS2l0RXhwb3J0cy5k
ZWYuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQudmN4cHJvai9XZWJLaXRFeHBvcnRHZW5l
cmF0b3IvV2ViS2l0RXhwb3J0cy5kZWYuaW4KQEAgLTIxNiw3ICsyMTYsNyBAQCBFWFBPUlRTCiAg
ICAgICAgIHN5bWJvbFdpdGhQb2ludGVyKD9pbnN0cnVtZW50aW5nQWdlbnRzRm9yUGFnZUBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb25AV2ViQ29yZUBAQ0FQQVZJbnN0cnVtZW50aW5nQWdlbnRzQDJA
UEFWUGFnZUAyQEBaLCA/aW5zdHJ1bWVudGluZ0FnZW50c0ZvclBhZ2VASW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uQFdlYkNvcmVAQENBUEVBVkluc3RydW1lbnRpbmdBZ2VudHNAMkBQRUFWUGFnZUAy
QEBaKQogICAgICAgICA/c19mcm9udGVuZENvdW50ZXJASW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
QFdlYkNvcmVAQDBIQQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/aXNVbmRlclRlc3RASW5z
cGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVfTlhaLCA/aXNVbmRlclRlc3RA
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVRUFBX05YWikKLSAgICAgICAg
c3ltYm9sV2l0aFBvaW50ZXIoPz8wSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3Jl
QEBRQUVAUEFWSW5zcGVjdG9yQ29udHJvbGxlckAxQFBBVlBhZ2VAMUBWPyRQYXNzT3duUHRyQFZT
ZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQEBXVEZAQEBaLCA/
PzBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFFFQUFAUEVBVkluc3BlY3Rv
ckNvbnRyb2xsZXJAMUBQRUFWUGFnZUAxQFY/JFBhc3NPd25QdHJAVlNldHRpbmdzQEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAQFdURkBAQFopCisgICAgICAgIHN5bWJvbFdp
dGhQb2ludGVyKD8/MEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWxAV2ViQ29yZUBAUUFFQFBB
Vkluc3BlY3RvckNvbnRyb2xsZXJAMUBQQVZQYWdlQDFAVj8kdW5pcXVlX3B0ckBWU2V0dGluZ3NA
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVPyRkZWZhdWx0X2RlbGV0ZUBW
U2V0dGluZ3NASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBAc3RkQEBAc3Rk
QEBAWiwgPz8wSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBRRUFBQFBFQVZJ
bnNwZWN0b3JDb250cm9sbGVyQDFAUEVBVlBhZ2VAMUBWPyR1bmlxdWVfcHRyQFZTZXR0aW5nc0BJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQFU/JGRlZmF1bHRfZGVsZXRlQFZT
ZXR0aW5nc0BJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsQFdlYkNvcmVAQEBzdGRAQEBzdGRA
QEBaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/PzFJbnNwZWN0b3JGcm9udGVuZENsaWVu
dExvY2FsQFdlYkNvcmVAQFVBRUBYWiwgPz8xSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBX
ZWJDb3JlQEBVRUFBQFhaKQogICAgICAgICBzeW1ib2xXaXRoUG9pbnRlcig/Y2hhbmdlQXR0YWNo
ZWRXaW5kb3dIZWlnaHRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3JlQEBVQUVY
SUBaLCA/Y2hhbmdlQXR0YWNoZWRXaW5kb3dIZWlnaHRASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbEBXZWJDb3JlQEBVRUFBWElAWikKICAgICAgICAgc3ltYm9sV2l0aFBvaW50ZXIoP2NoYW5n
ZUF0dGFjaGVkV2luZG93V2lkdGhASW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbEBXZWJDb3Jl
QEBVQUVYSUBaLCA/Y2hhbmdlQXR0YWNoZWRXaW5kb3dXaWR0aEBJbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsQFdlYkNvcmVAQFVFQUFYSUBaKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
Zi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRDRi5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2NmL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAppbmRleCAxMjBlMWZk
M2RhMTAxZjg5Y2ZkYTcyMTJhZDU0ZGNiZjYzMDZlZTVlLi42MjMzM2Q5NDBhZDk1ZDE0MzE2MDNh
NWU1NDgwZjk5ODE0ZTVlZDY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2NmL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2NmL1dl
YkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudENGLmNwcApAQCAtMjUsOCArMjUsOCBAQAog
CiAvLyBGSVhNRTogT24gV2luZG93cywgd2UgcmVxdWlyZSBhbGwgV2ViS2l0IHNvdXJjZSBmaWxl
cyB0byBpbmNsdWRlIGNvbmZpZy5oCiAvLyBiZWZvcmUgaW5jbHVkaW5nIGFueSBvdGhlciBmaWxl
cy4gRmFpbGluZyB0byBpbmNsdWRlIGNvbmZpZy5oIHdpbGwgbGVhdmUKLS8vIFdURl9VU0VfQ0Yg
dW5kZWZpbmVkLCBjYXVzaW5nIGJ1aWxkIGZhaWx1cmVzIGluIHRoaXMgCi0vLyBmaWxlLiBCdXQg
TWFjIGRvZXNuJ3QgaGF2ZSBhIGNvbmZpZy5oIGZvciBXZWJLaXQsIHNvIHdlIGNhbid0IGluY2x1
ZGUgdGhlIAorLy8gV1RGX1VTRV9DRiB1bmRlZmluZWQsIGNhdXNpbmcgYnVpbGQgZmFpbHVyZXMg
aW4gdGhpcworLy8gZmlsZS4gQnV0IE1hYyBkb2Vzbid0IGhhdmUgYSBjb25maWcuaCBmb3IgV2Vi
S2l0LCBzbyB3ZSBjYW4ndCBpbmNsdWRlIHRoZQogLy8gV2luZG93cyBvbmUgaGVyZS4gRm9yIG5v
dyB3ZSBjYW4ganVzdCBkZWZpbmUgV1RGX1VTRV9DRiBhbmQKIC8vIFdURl9VU0VfQ0ZORVRXT1JL
IG1hbnVhbGx5LCBidXQgd2UgbmVlZCBhIGJldHRlciBsb25nLXRlcm0gc29sdXRpb24uCiAjaWZu
ZGVmIFdURl9VU0VfQ0YKQEAgLTEyNCw3ICsxMjQsNyBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVu
dDo6c2V0SW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoYm9vbCBhdHRhY2hlZCkKICAgICBzdG9yZVNl
dHRpbmcoaW5zcGVjdG9yU3RhcnRzQXR0YWNoZWRTZXR0aW5nLCBhdHRhY2hlZCA/ICJ0cnVlIiA6
ICJmYWxzZSIpOwogfQogCi1QYXNzT3duUHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0
dGluZ3MoKQorc3RkOjp1bmlxdWVfcHRyPFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50
TG9jYWw6OlNldHRpbmdzPiBXZWJJbnNwZWN0b3JDbGllbnQ6OmNyZWF0ZUZyb250ZW5kU2V0dGlu
Z3MoKQogewogICAgIGNsYXNzIEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NDRiA6IHB1YmxpYyBX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpTZXR0aW5ncyB7CiAgICAgcHVi
bGljOgpAQCAtMTQxLDUgKzE0MSw1IEBAIFBhc3NPd25QdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJv
bnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IFdlYkluc3BlY3RvckNsaWVudDo6CiAgICAgICAg
ICAgICBzdG9yZVNldHRpbmcobmFtZSwgdmFsdWUpOwogICAgICAgICB9CiAgICAgfTsKLSAgICBy
ZXR1cm4gYWRvcHRQdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0
dGluZ3M+KG5ldyBJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzQ0YoKSk7CisgICAgcmV0dXJuIHN0
ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5nc0NGPigpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZs
LmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0luc3BlY3RvckNsaWVudEVm
bC5jcHAKaW5kZXggYmNmMjhjOTIwYzNhYmQxOWFlNDc3NTM5ZDc3Nzk4Mzk0ZjM5OWJjYS4uYTRl
MmY2Yjk1NzBhYjk0ODZhMjczMTA5YWYxM2M4OTYwYWRmNmYyZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvSW5zcGVjdG9yQ2xpZW50RWZsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9JbnNwZWN0b3JDbGllbnRFZmwuY3BwCkBA
IC0xNDgsNyArMTQ4LDcgQEAgU3RyaW5nIEluc3BlY3RvckNsaWVudEVmbDo6aW5zcGVjdG9yRmls
ZXNQYXRoKCkKIH0KIAogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRFZmw6Okluc3BlY3RvckZyb250
ZW5kQ2xpZW50RWZsKEV2YXNfT2JqZWN0KiBpbnNwZWN0ZWRWaWV3LCBFdmFzX09iamVjdCogaW5z
cGVjdG9yVmlldywgSW5zcGVjdG9yQ2xpZW50RWZsKiBpbnNwZWN0b3JDbGllbnQpCi0gICAgOiBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNwZWN0
ZWRWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBFV0tQcml2YXRlOjpjb3JlUGFnZShpbnNw
ZWN0b3JWaWV3KSwgYWRvcHRQdHIobmV3IEluc3BlY3RvckZyb250ZW5kU2V0dGluZ3NFZmwoKSkp
CisgICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZFV0tQcml2YXRlOjpjb3JlUGFn
ZShpbnNwZWN0ZWRWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBFV0tQcml2YXRlOjpjb3Jl
UGFnZShpbnNwZWN0b3JWaWV3KSwgc3RkOjptYWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNl
dHRpbmdzRWZsPigpKQogICAgICwgbV9pbnNwZWN0ZWRWaWV3KGluc3BlY3RlZFZpZXcpCiAgICAg
LCBtX2luc3BlY3RvclZpZXcoaW5zcGVjdG9yVmlldykKICAgICAsIG1faW5zcGVjdG9yQ2xpZW50
KGluc3BlY3RvckNsaWVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0luc3BlY3RvckNsaWVudEd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9JbnNwZWN0b3JDbGllbnRHdGsuY3BwCmluZGV4IGNkOTQ5MzRlMTYwMTJmNmM5ODQ2
ZWE5ZTRmZDZjZDE5NWVkNmNhZGMuLmNlZTFkMzQ1NzFjOTMzMTM1ZjYyMGM1YmM2MDUxOWRmNjkz
MGE4ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0luc3Bl
Y3RvckNsaWVudEd0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
SW5zcGVjdG9yQ2xpZW50R3RrLmNwcApAQCAtMTU3LDcgKzE1Nyw3IEBAIGJvb2wgSW5zcGVjdG9y
Q2xpZW50OjpzZW5kTWVzc2FnZVRvRnJvbnRlbmQoY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogfQog
CiBJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnQoV2ViS2l0
V2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgV2ViS2l0V2ViVmlldyogaW5zcGVjdG9yV2ViVmll
dywgV2ViS2l0V2ViSW5zcGVjdG9yKiB3ZWJJbnNwZWN0b3IsIFBhZ2UqIGluc3BlY3RvclBhZ2Us
IEluc3BlY3RvckNsaWVudCogaW5zcGVjdG9yQ2xpZW50KQotICAgIDogSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnRMb2NhbCgmY29yZShpbnNwZWN0ZWRXZWJWaWV3KS0+aW5zcGVjdG9yQ29udHJvbGxl
cigpLCBpbnNwZWN0b3JQYWdlLCBhZG9wdFB0cihuZXcgSW5zcGVjdG9yRnJvbnRlbmRTZXR0aW5n
c0d0aygpKSkKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJmNvcmUoaW5zcGVj
dGVkV2ViVmlldyktPmluc3BlY3RvckNvbnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZSwgc3RkOjpt
YWtlX3VuaXF1ZTxJbnNwZWN0b3JGcm9udGVuZFNldHRpbmdzR3RrPigpKQogICAgICwgbV9pbnNw
ZWN0b3JXZWJWaWV3KGluc3BlY3RvcldlYlZpZXcpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZpZXco
aW5zcGVjdGVkV2ViVmlldykKICAgICAsIG1fd2ViSW5zcGVjdG9yKHdlYkluc3BlY3RvcikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudElPUy5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3Rv
ckNsaWVudElPUy5tbQppbmRleCA3NTk1ZjE3MDNjMzE3M2ExMzYwY2ZkNDU1NTZjZWMzZGEyMjZk
YmNlLi4wMDExNzlhZGE0ZjlmNzNiMGM4Y2ExYTQwODZiNjAyZGM2MTU5ZmU1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGllbnRJT1Mu
bW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xp
ZW50SU9TLm1tCkBAIC0zOSw3ICszOSw2IEBACiAjaW1wb3J0IDxXZWJDb3JlL1BhZ2UuaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2V0dGluZ3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvV2ViQ29yZVRocmVh
ZC5oPgotI2ltcG9ydCA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CiAKQEAgLTExMCw4ICsxMDksOCBAQCB2b2lkIFdlYkluc3BlY3RvckNsaWVudDo6ZGlkU2V0
U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpCiAjcHJhZ21hIG1hcmsgLQogI3ByYWdtYSBt
YXJrIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50IEltcGxlbWVudGF0aW9uCiAKLVdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudChXZWJWaWV3KiBp
bnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiB3aW5kb3dDb250
cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNwZWN0b3JDb250cm9sbGVyLCBQYWdlKiBm
cm9udGVuZFBhZ2UsIFdURjo6UGFzc093blB0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCi0gICAgOiBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGluc3BlY3RvckNvbnRyb2xsZXIsICBmcm9udGVu
ZFBhZ2UsIHNldHRpbmdzKQorV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIFdlYkluc3BlY3Rvcldp
bmRvd0NvbnRyb2xsZXIqIHdpbmRvd0NvbnRyb2xsZXIsIEluc3BlY3RvckNvbnRyb2xsZXIqIGlu
c3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5kUGFnZSwgc3RkOjp1bmlxdWVfcHRyPFNl
dHRpbmdzPiBzZXR0aW5ncykKKyAgICA6IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoaW5z
cGVjdG9yQ29udHJvbGxlciwgIGZyb250ZW5kUGFnZSwgc3RkOjptb3ZlKHNldHRpbmdzKSkKIHsK
ICAgICAvLyBpT1MgZG9lcyBub3QgaGF2ZSBhIGxvY2FsIGluc3BlY3RvciwgdGhpcyBzaG91bGQg
bm90IGJlIHJlYWNoZWQuCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggMDFj
MWM2MDhkZTM0NGUxOTNkNDA4OTRjZTJhZmI2MDdkYTdmODNhNS4uZjgxNWY4N2I2OWNlN2I3MjNj
NWQxZTc1NmIyMDVkN2UwNzE1MmNhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTYsMTMgKzYsMTMgQEAKICAq
IGFyZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAg
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisg
KiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1
dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAot
ICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECkBAIC04OSw3ICs4OSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbGVhc2VG
cm9udGVuZCgpOwogCiBwcml2YXRlOgotICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6SW5zcGVjdG9y
RnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKTsK
KyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKTsKIAogICAgIFdlYlZpZXcgKm1f
d2ViVmlldzsKICAgICBSZXRhaW5QdHI8V2ViTm9kZUhpZ2hsaWdodGVyPiBtX2hpZ2hsaWdodGVy
OwpAQCAtMTAwLDcgKzEwMCw3IEBAIHByaXZhdGU6CiAKIGNsYXNzIFdlYkluc3BlY3RvckZyb250
ZW5kQ2xpZW50IDogcHVibGljIFdlYkNvcmU6Okluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwg
ewogcHVibGljOgotICAgIFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqLCBXZWJJ
bnNwZWN0b3JXaW5kb3dDb250cm9sbGVyKiwgV2ViQ29yZTo6SW5zcGVjdG9yQ29udHJvbGxlcios
IFdlYkNvcmU6OlBhZ2UqLCBQYXNzT3duUHRyPFNldHRpbmdzPik7CisgICAgV2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoV2ViVmlldyosIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqLCBX
ZWJDb3JlOjpJbnNwZWN0b3JDb250cm9sbGVyKiwgV2ViQ29yZTo6UGFnZSosIHN0ZDo6dW5pcXVl
X3B0cjxTZXR0aW5ncz4pOwogCiAgICAgdm9pZCBhdHRhY2hBdmFpbGFiaWxpdHlDaGFuZ2VkKGJv
b2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJJ
bnNwZWN0b3JDbGllbnQubW0KaW5kZXggYWY4OWQ5NGJhZDY5ZGUxNTUwYWUxYjI1M2MwNTcyZmU2
MmFhOGY2Ni4uNzkxMGVhMmFhNDhiMTJjYzYyNjI3MDAwMzI0ZGQ2ODcwZDc3OGY5ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNs
aWVudC5tbQpAQCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAg
KgogICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTUzLDcgKzUzLDYg
QEAKICNpbXBvcnQgPFdlYkNvcmUvU29mdExpbmtpbmcuaD4KICNpbXBvcnQgPFdlYktpdC9ET01F
eHRlbnNpb25zLmg+CiAjaW1wb3J0IDxXZWJLaXRTeXN0ZW1JbnRlcmZhY2UuaD4KLSNpbXBvcnQg
PHd0Zi9QYXNzT3duUHRyLmg+CiAjaW1wb3J0IDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogU09GVF9M
SU5LX1NUQUdFRF9GUkFNRVdPUksoV2ViSW5zcGVjdG9yVUksIFByaXZhdGVGcmFtZXdvcmtzLCBB
KQpAQCAtMjEwLDggKzIwOSw4IEBAIHZvaWQgV2ViSW5zcGVjdG9yQ2xpZW50OjpyZWxlYXNlRnJv
bnRlbmQoKQogfQogCiAKLVdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBXZWJJbnNwZWN0b3JXaW5k
b3dDb250cm9sbGVyKiB3aW5kb3dDb250cm9sbGVyLCBJbnNwZWN0b3JDb250cm9sbGVyKiBpbnNw
ZWN0b3JDb250cm9sbGVyLCBQYWdlKiBmcm9udGVuZFBhZ2UsIFdURjo6UGFzc093blB0cjxTZXR0
aW5ncz4gc2V0dGluZ3MpCi0gICAgOiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKGluc3Bl
Y3RvckNvbnRyb2xsZXIsICBmcm9udGVuZFBhZ2UsIHNldHRpbmdzKQorV2ViSW5zcGVjdG9yRnJv
bnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3Rl
ZFdlYlZpZXcsIFdlYkluc3BlY3RvcldpbmRvd0NvbnRyb2xsZXIqIHdpbmRvd0NvbnRyb2xsZXIs
IEluc3BlY3RvckNvbnRyb2xsZXIqIGluc3BlY3RvckNvbnRyb2xsZXIsIFBhZ2UqIGZyb250ZW5k
UGFnZSwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPiBzZXR0aW5ncykKKyAgICA6IEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWwoaW5zcGVjdG9yQ29udHJvbGxlciwgIGZyb250ZW5kUGFnZSwg
c3RkOjptb3ZlKHNldHRpbmdzKSkKICAgICAsIG1faW5zcGVjdGVkV2ViVmlldyhpbnNwZWN0ZWRX
ZWJWaWV3KQogICAgICwgbV93aW5kb3dDb250cm9sbGVyKHdpbmRvd0NvbnRyb2xsZXIpCiB7CkBA
IC0yMzMsNyArMjMyLDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6ZnJvbnRl
bmRMb2FkZWQoKQogICAgIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6OmZyb250ZW5kTG9h
ZGVkKCk7CiAKICAgICBXZWJGcmFtZSAqZnJhbWUgPSBbbV9pbnNwZWN0ZWRXZWJWaWV3IG1haW5G
cmFtZV07Ci0gICAgCisKICAgICBXZWJGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVudGF0aW9uQ2Fj
aGUqIGltcGxlbWVudGF0aW9ucyA9IFdlYlZpZXdHZXRGcmFtZUxvYWREZWxlZ2F0ZUltcGxlbWVu
dGF0aW9ucyhtX2luc3BlY3RlZFdlYlZpZXcpOwogICAgIGlmIChpbXBsZW1lbnRhdGlvbnMtPmRp
ZENsZWFySW5zcGVjdG9yV2luZG93T2JqZWN0Rm9yRnJhbWVGdW5jKQogICAgICAgICBDYWxsRnJh
bWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRDbGVhckluc3BlY3RvcldpbmRvd09i
amVjdEZvckZyYW1lRnVuYywgbV9pbnNwZWN0ZWRXZWJWaWV3LApAQCAtMzE5LDE0ICszMTgsMTQg
QEAgdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6dXBkYXRlV2luZG93VGl0bGUoKSBj
b25zdAogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcm
IHN1Z2dlc3RlZFVSTCwgY29uc3QgU3RyaW5nJiBjb250ZW50LCBib29sIGJhc2U2NEVuY29kZWQs
IGJvb2wgZm9yY2VTYXZlRGlhbG9nKQogewogICAgIEFTU0VSVCghc3VnZ2VzdGVkVVJMLmlzRW1w
dHkoKSk7Ci0gICAgCisKICAgICBOU1VSTCAqcGxhdGZvcm1VUkwgPSBtX3N1Z2dlc3RlZFRvQWN0
dWFsVVJMTWFwLmdldChzdWdnZXN0ZWRVUkwpLmdldCgpOwogICAgIGlmICghcGxhdGZvcm1VUkwp
IHsKICAgICAgICAgcGxhdGZvcm1VUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpzdWdnZXN0ZWRV
UkxdOwogICAgICAgICAvLyBUaGUgdXNlciBtdXN0IGNvbmZpcm0gbmV3IGZpbGVuYW1lcyBiZWZv
cmUgd2UgY2FuIHNhdmUgdG8gdGhlbS4KICAgICAgICAgZm9yY2VTYXZlRGlhbG9nID0gdHJ1ZTsK
ICAgICB9Ci0gICAgCisKICAgICBBU1NFUlQocGxhdGZvcm1VUkwpOwogICAgIGlmICghcGxhdGZv
cm1VUkwpCiAgICAgICAgIHJldHVybjsKQEAgLTMzNyw3ICszMzYsNyBAQCB2b2lkIFdlYkluc3Bl
Y3RvckZyb250ZW5kQ2xpZW50OjpzYXZlKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25z
dCBTdHJpbmcmCiAKICAgICBhdXRvIHNhdmVUb1VSTCA9IF4oTlNVUkwgKmFjdHVhbFVSTCkgewog
ICAgICAgICBBU1NFUlQoYWN0dWFsVVJMKTsKLSAgICAgICAgCisKICAgICAgICAgbV9zdWdnZXN0
ZWRUb0FjdHVhbFVSTE1hcC5zZXQoc3VnZ2VzdGVkVVJMQ29weSwgYWN0dWFsVVJMKTsKIAogICAg
ICAgICBpZiAoYmFzZTY0RW5jb2RlZCkgewpAQCAtMzU2LDcgKzM1NSw3IEBAIHZvaWQgV2ViSW5z
cGVjdG9yRnJvbnRlbmRDbGllbnQ6OnNhdmUoY29uc3QgU3RyaW5nJiBzdWdnZXN0ZWRVUkwsIGNv
bnN0IFN0cmluZyYKICAgICAgICAgc2F2ZVRvVVJMKHBsYXRmb3JtVVJMKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KLSAgICAKKwogICAgIE5TU2F2ZVBhbmVsICpwYW5lbCA9IFtOU1NhdmVQYW5l
bCBzYXZlUGFuZWxdOwogICAgIHBhbmVsLm5hbWVGaWVsZFN0cmluZ1ZhbHVlID0gcGxhdGZvcm1V
UkwubGFzdFBhdGhDb21wb25lbnQ7CiAgICAgcGFuZWwuZGlyZWN0b3J5VVJMID0gW3BsYXRmb3Jt
VVJMIFVSTEJ5RGVsZXRpbmdMYXN0UGF0aENvbXBvbmVudF07CkBAIC0zNzIsNyArMzcxLDcgQEAg
dm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6c2F2ZShjb25zdCBTdHJpbmcmIHN1Z2dl
c3RlZFVSTCwgY29uc3QgU3RyaW5nJgogdm9pZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6
YXBwZW5kKGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkVVJMLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQp
CiB7CiAgICAgQVNTRVJUKCFzdWdnZXN0ZWRVUkwuaXNFbXB0eSgpKTsKLSAgICAKKwogICAgIFJl
dGFpblB0cjxOU1VSTD4gYWN0dWFsVVJMID0gbV9zdWdnZXN0ZWRUb0FjdHVhbFVSTE1hcC5nZXQo
c3VnZ2VzdGVkVVJMKTsKICAgICAvLyBkbyBub3QgYXBwZW5kIHVubGVzcyB0aGUgdXNlciBoYXMg
YWxyZWFkeSBjb25maXJtZWQgdGhpcyBmaWxlbmFtZSBpbiBzYXZlKCkuCiAgICAgaWYgKCFhY3R1
YWxVUkwpCkBAIC01ODIsNyArNTgxLDcgQEAgLSAoSUJBY3Rpb24pc2hvd1dpbmRvdzooaWQpc2Vu
ZGVyCiAgICAgfQogCiAgICAgX3Zpc2libGUgPSBZRVM7Ci0gICAgCisKICAgICBfc2hvdWxkQXR0
YWNoID0gX2luc3BlY3RvckNsaWVudC0+aW5zcGVjdG9yU3RhcnRzQXR0YWNoZWQoKSAmJiBfZnJv
bnRlbmRDbGllbnQtPmNhbkF0dGFjaFdpbmRvdygpICYmICFfaW5zcGVjdG9yQ2xpZW50LT5pbnNw
ZWN0b3JBdHRhY2hEaXNhYmxlZCgpOwogCiAgICAgaWYgKF9zaG91bGRBdHRhY2gpIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVu
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JDbGll
bnQuY3BwCmluZGV4IDcxM2U4MzA2ZGZhZjljNjdhYzUwOTFlOTUwM2ZhYjYwMGFlMTdhOWYuLjll
Mjc4YmExM2VhMWY3MzEyZDM4MDc2NDUxOWQ2ZDkwZGQzZDEwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmNwcApA
QCAtNiwxMyArNiwxMyBAQAogICogYXJlIG1ldDoKICAqCiAgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuIAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KICAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAogICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLiAKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
ICAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqICAgICBmcm9tIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCiAgKgogICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMg
SVMiIEFORCBBTlkKICAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKQEAgLTIyNCw4ICsyMjQsOCBAQCB2b2lk
IFdlYkluc3BlY3RvckNsaWVudDo6cmVsZWFzZUZyb250ZW5kKCkKICAgICBtX2Zyb250ZW5kSGFu
ZGxlID0gMDsKIH0KIAotV2ViSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQ6OldlYkluc3BlY3RvckZy
b250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5zcGVjdGVkV2Vi
Vmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmlldz4mIGZyb250
ZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0b3JDbGllbnQq
IGluc3BlY3RvckNsaWVudCwgUGFzc093blB0cjxTZXR0aW5ncz4gc2V0dGluZ3MpCi0gICAgOiBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsKCZpbnNwZWN0ZWRXZWJWaWV3LT5wYWdlKCktPmlu
c3BlY3RvckNvbnRyb2xsZXIoKSwgIGNvcmUoZnJvbnRlbmRXZWJWaWV3LmdldCgpKSwgc2V0dGlu
Z3MpCitXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRlbmRDbGll
bnQoV2ViVmlldyogaW5zcGVjdGVkV2ViVmlldywgSFdORCBpbnNwZWN0ZWRXZWJWaWV3SHduZCwg
SFdORCBmcm9udGVuZEh3bmQsIGNvbnN0IENPTVB0cjxXZWJWaWV3PiYgZnJvbnRlbmRXZWJWaWV3
LCBIV05EIGZyb250ZW5kV2ViVmlld0h3bmQsIFdlYkluc3BlY3RvckNsaWVudCogaW5zcGVjdG9y
Q2xpZW50LCBzdGQ6OnVuaXF1ZV9wdHI8U2V0dGluZ3M+IHNldHRpbmdzKQorICAgIDogSW5zcGVj
dG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmaW5zcGVjdGVkV2ViVmlldy0+cGFnZSgpLT5pbnNwZWN0
b3JDb250cm9sbGVyKCksICBjb3JlKGZyb250ZW5kV2ViVmlldy5nZXQoKSksIHN0ZDo6bW92ZShz
ZXR0aW5ncykpCiAgICAgLCBtX2luc3BlY3RlZFdlYlZpZXcoaW5zcGVjdGVkV2ViVmlldykKICAg
ICAsIG1faW5zcGVjdGVkV2ViVmlld0h3bmQoaW5zcGVjdGVkV2ViVmlld0h3bmQpCiAgICAgLCBt
X2luc3BlY3RvckNsaWVudChpbnNwZWN0b3JDbGllbnQpCkBAIC0yODgsNyArMjg4LDcgQEAgdm9p
ZCBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6YXR0YWNoV2luZG93KERvY2tTaWRlKQogCiAg
ICAgY2xvc2VXaW5kb3dXaXRob3V0Tm90aWZpY2F0aW9ucygpOwogICAgIC8vIFdlIG5lZWQgdG8g
c2V0IHRoZSBhdHRhY2hlZCB3aW5kb3cncyBoZWlnaHQgYmVmb3JlIHdlIGFjdHVhbGx5IGF0dGFj
aCB0aGUgd2luZG93LgotICAgIC8vIE1ha2Ugc3VyZSB0aGF0IG1fYXR0YWNoZWQgaXMgdHJ1ZSBz
byB0aGF0IGNhbGxpbmcgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQgZnJvbSByZXN0b3JlQXR0YWNo
ZWRXaW5kb3dIZWlnaHQgZG9lc24ndCByZXR1cm4gZWFybHkuIAorICAgIC8vIE1ha2Ugc3VyZSB0
aGF0IG1fYXR0YWNoZWQgaXMgdHJ1ZSBzbyB0aGF0IGNhbGxpbmcgc2V0QXR0YWNoZWRXaW5kb3dI
ZWlnaHQgZnJvbSByZXN0b3JlQXR0YWNoZWRXaW5kb3dIZWlnaHQgZG9lc24ndCByZXR1cm4gZWFy
bHkuCiAgICAgbV9hdHRhY2hlZCA9IHRydWU7CiAgICAgLy8gSW1tZWRpYXRlbHkgYWZ0ZXIgY2Fs
bGluZyBzaG93V2luZG93V2l0aG91dE5vdGlmaWNhdGlvbnMoKSwgdGhlIHBhcmVudCBmcmFtZXZp
ZXcncyB2aXNpYmxlSGVpZ2h0IGluY29ycmVjdGx5IHJldHVybnMgMCBhbHdheXMgKFdpbmRvd3Mg
b25seSkuCiAgICAgLy8gV2UgYXJlIGV4cGVjdGluZyB0aGlzIHZhbHVlIHRvIGJlIGp1c3QgdGhl
IGhlaWdodCBvZiB0aGUgcGFyZW50IHdpbmRvdyB3aGVuIHdlIGNhbGwgcmVzdG9yZUF0dGFjaGVk
V2luZG93SGVpZ2h0LCB3aGljaCBpdCBpcyBiZWZvcmUKQEAgLTMzMiw3ICszMzIsNyBAQCB2b2lk
IFdlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50OjpzZXRBdHRhY2hlZFdpbmRvd0hlaWdodCh1bnNp
Z25lZCBoZWlnaHQpCiAgICAgLy8gb2YgdGhlIGluc3BlY3RlZCB3ZWIgdmlldyBoYXBwZW5zIGlu
IG9uV2ViVmlld1dpbmRvd1Bvc0NoYW5naW5nLCBub3QgaGVyZS4KICAgICBTZXRXaW5kb3dQb3Mo
bV9pbnNwZWN0ZWRXZWJWaWV3SHduZCwgMCwgMCwgMCwgd2ViVmlld1dpZHRoLCB0b3RhbEhlaWdo
dCwgU1dQX05PWk9SREVSKTsKIAotICAgIFJlZHJhd1dpbmRvdyhtX2Zyb250ZW5kV2ViVmlld0h3
bmQsIDAsIDAsIFJEV19JTlZBTElEQVRFIHwgUkRXX0FMTENISUxEUkVOIHwgUkRXX1VQREFURU5P
Vyk7IAorICAgIFJlZHJhd1dpbmRvdyhtX2Zyb250ZW5kV2ViVmlld0h3bmQsIDAsIDAsIFJEV19J
TlZBTElEQVRFIHwgUkRXX0FMTENISUxEUkVOIHwgUkRXX1VQREFURU5PVyk7CiAgICAgUmVkcmF3
V2luZG93KG1faW5zcGVjdGVkV2ViVmlld0h3bmQsIDAsIDAsIFJEV19JTlZBTElEQVRFIHwgUkRX
X0FMTENISUxEUkVOIHwgUkRXX1VQREFURU5PVyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckNsaWVudC5oIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKaW5kZXggZDY3MzQw
NWIyMjRiY2VkM2QwZjkxNzA1YmE2ZDFjZTFhMGExZmMxMy4uMmZlNmRlMjA5MzY3ZGE5NmRlNGVh
ZmUwYjU2NDk4NDlkMmFiOWVhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViSW5zcGVjdG9yQ2xpZW50LmgKQEAgLTYsMTMgKzYsMTMgQEAKICAqIGFy
ZSBtZXQ6CiAgKgogICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqICAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAgKiAy
LiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKICAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KICAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVy
LCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCiAgKiAgICAgaXRzIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICog
ICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVy
bWlzc2lvbi4gCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCiAgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKIAogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIH5XZWJJbnNwZWN0b3JDbGllbnQoKTsKLSAgICBXVEY6OlBhc3NPd25QdHI8V2ViQ29yZTo6
SW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0
dGluZ3MoKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8V2ViQ29yZTo6SW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbDo6U2V0dGluZ3M+IGNyZWF0ZUZyb250ZW5kU2V0dGluZ3MoKTsKIAogICAgIFdl
YlZpZXcqIG1faW5zcGVjdGVkV2ViVmlldzsKICAgICBXZWJDb3JlOjpQYWdlKiBtX2Zyb250ZW5k
UGFnZTsKQEAgLTk0LDE5ICs5NCwxOSBAQCBwcml2YXRlOgogCiBjbGFzcyBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudCA6IHB1YmxpYyBXZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExv
Y2FsLCBXZWJDb3JlOjpXaW5kb3dNZXNzYWdlTGlzdGVuZXIgewogcHVibGljOgotICAgIFdlYklu
c3BlY3RvckZyb250ZW5kQ2xpZW50KFdlYlZpZXcqIGluc3BlY3RlZFdlYlZpZXcsIEhXTkQgaW5z
cGVjdGVkV2ViVmlld0h3bmQsIEhXTkQgZnJvbnRlbmRId25kLCBjb25zdCBDT01QdHI8V2ViVmll
dz4mIGZyb3RuZW5kV2ViVmlldywgSFdORCBmcm9udGVuZFdlYlZpZXdId25kLCBXZWJJbnNwZWN0
b3JDbGllbnQqLCBXVEY6OlBhc3NPd25QdHI8U2V0dGluZ3M+KTsKKyAgICBXZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudChXZWJWaWV3KiBpbnNwZWN0ZWRXZWJWaWV3LCBIV05EIGluc3BlY3RlZFdl
YlZpZXdId25kLCBIV05EIGZyb250ZW5kSHduZCwgY29uc3QgQ09NUHRyPFdlYlZpZXc+JiBmcm90
bmVuZFdlYlZpZXcsIEhXTkQgZnJvbnRlbmRXZWJWaWV3SHduZCwgV2ViSW5zcGVjdG9yQ2xpZW50
Kiwgc3RkOjp1bmlxdWVfcHRyPFNldHRpbmdzPik7CiAgICAgdmlydHVhbCB+V2ViSW5zcGVjdG9y
RnJvbnRlbmRDbGllbnQoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZExvYWRlZCgpOwot
ICAgIAorCiAgICAgdmlydHVhbCBXVEY6OlN0cmluZyBsb2NhbGl6ZWRTdHJpbmdzVVJMKCk7Ci0g
ICAgCisKICAgICB2aXJ0dWFsIHZvaWQgYnJpbmdUb0Zyb250KCk7CiAgICAgdmlydHVhbCB2b2lk
IGNsb3NlV2luZG93KCk7Ci0gICAgCisKICAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoV2luZG93KERv
Y2tTaWRlKTsKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoV2luZG93KCk7Ci0gICAgCisKICAgICB2
aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dIZWlnaHQodW5zaWduZWQgaGVpZ2h0KTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0QXR0YWNoZWRXaW5kb3dXaWR0aCh1bnNpZ25lZCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldFRvb2xiYXJIZWlnaHQodW5zaWduZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJJbnNwZWN0b3JG
cm9udGVuZENsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBw
b3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAppbmRleCBiM2U2ZTQ1ZjliMThhNmUz
Mjc3OTY5ZTdlY2E2ZmZhYzRlMDUzMzllLi5iYjQ1OWM0MjY5MTcyM2JhMWFlYjg1YTg2NDYzZWI1
YmNiZDlkMjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmNw
cApAQCAtNDEsNyArNDEsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBXZWJJbnNwZWN0b3JGcm9udGVuZENsaWVudDo6V2ViSW5zcGVjdG9yRnJvbnRl
bmRDbGllbnQoV2ViUGFnZSogcGFnZSwgV2ViUGFnZSogaW5zcGVjdG9yUGFnZSkKLSAgICA6IElu
c3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwoJnBhZ2UtPmNvcmVQYWdlKCktPmluc3BlY3RvckNv
bnRyb2xsZXIoKSwgaW5zcGVjdG9yUGFnZS0+Y29yZVBhZ2UoKSwgYWRvcHRQdHIobmV3IFNldHRp
bmdzKCkpKQorICAgIDogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbCgmcGFnZS0+Y29yZVBh
Z2UoKS0+aW5zcGVjdG9yQ29udHJvbGxlcigpLCBpbnNwZWN0b3JQYWdlLT5jb3JlUGFnZSgpLCBz
dGQ6Om1ha2VfdW5pcXVlPFNldHRpbmdzPigpKQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>