<?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>148555</bug_id>
          
          <creation_ts>2015-08-27 19:17:47 -0700</creation_ts>
          <short_desc>REGRESSION(r189079): broke the build (Requested by jessieberlin on #webkit).</short_desc>
          <delta_ts>2015-08-27 19:28:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <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>148373</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>ggaren</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1121539</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 19:17:47 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/189079 broke the build:
broke the build (Requested by jessieberlin on #webkit).

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121541</commentid>
    <comment_count>1</comment_count>
      <attachid>260109</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 19:18:22 -0700</bug_when>
    <thetext>Created attachment 260109
ROLLOUT of r189079

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121543</commentid>
    <comment_count>2</comment_count>
      <attachid>260109</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 19:28:54 -0700</bug_when>
    <thetext>Comment on attachment 260109
ROLLOUT of r189079

Clearing flags on attachment: 260109

Committed r189082: &lt;http://trac.webkit.org/changeset/189082&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1121544</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-27 19:28:57 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>260109</attachid>
            <date>2015-08-27 19:18:22 -0700</date>
            <delta_ts>2015-08-27 19:28:54 -0700</delta_ts>
            <desc>ROLLOUT of r189079</desc>
            <filename>bug-148555-20150827191810.patch</filename>
            <type>text/plain</type>
            <size>59398</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg5MDgxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
YzIxNzg5NWJkMWQ0MmIzZjZkYzM5ZDBiMmY1OWE5MWZjOTdjNWE0Li41OTJhYTA3NDM5NWE5NTNl
NDlkY2E2OGM0MzE4ZWNhMzZkZGRiNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNS0wOC0yNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4OTA3OS4KKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU1NQorCisgICAg
ICAgIGJyb2tlIHRoZSBidWlsZCAoUmVxdWVzdGVkIGJ5IGplc3NpZWJlcmxpbiBvbiAjd2Via2l0
KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkNyZWF0ZSBXZWJB
c3NlbWJseSBmdW5jdGlvbnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNDgzNzMKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTg5MDc5CisKIDIwMTUtMDgtMjcgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0Bn
bWFpbC5jb20+CiAKICAgICAgICAgQ3JlYXRlIFdlYkFzc2VtYmx5IGZ1bmN0aW9ucwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IDU4YTI0YjYyYThhZjM0MzczZTdiZmEzMzgwYjk5ODRjZjliN2YxM2YuLmE2YWViZDc0
MGM3NTZhZGVjOGMyYTNjMWIxYzYxOGRhYTM4MzQyNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxNS0wOC0yNyAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE4OTA3OS4KKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0ODU1NQorCisgICAgICAgIGJy
b2tlIHRoZSBidWlsZCAoUmVxdWVzdGVkIGJ5IGplc3NpZWJlcmxpbiBvbiAjd2Via2l0KS4KKwor
ICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkNyZWF0ZSBXZWJBc3NlbWJs
eSBmdW5jdGlvbnMiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDgzNzMKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTg5
MDc5CisKIDIwMTUtMDgtMjcgIFN1a29sc2FrIFNha3NodXdvbmcgIDxzdWtvbHNha0BnbWFpbC5j
b20+CiAKICAgICAgICAgQ3JlYXRlIFdlYkFzc2VtYmx5IGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAppbmRleCBjMzI0MGEwN2M0MTRlMTk1
NWUwYWFjMDRjYzUwZmRiMmNhYTIyZTZlLi4yMGMxNDdhMDE1ZDJjNDNkZWMzODNmN2JhYTgxMGE2
NmE5MTkxNDYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2Nr
LmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIENvZGVCbG9ja0hhc2ggQ29kZUJsb2NrOjpoYXNoKCkg
Y29uc3QKIHsKICAgICBpZiAoIW1faGFzaCkgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChpc1Nh
ZmVUb0NvbXB1dGVIYXNoKCkpOwotICAgICAgICBtX2hhc2ggPSBDb2RlQmxvY2tIYXNoKG93bmVy
U2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwgc3BlY2lhbGl6YXRpb25LaW5kKCkpOworICAg
ICAgICBtX2hhc2ggPSBDb2RlQmxvY2tIYXNoKG93bmVyRXhlY3V0YWJsZSgpLT5zb3VyY2UoKSwg
c3BlY2lhbGl6YXRpb25LaW5kKCkpOwogICAgIH0KICAgICByZXR1cm4gbV9oYXNoOwogfQpAQCAt
MTE1LDcgKzExNSw3IEBAIENvZGVCbG9ja0hhc2ggQ29kZUJsb2NrOjpoYXNoKCkgY29uc3QKIENT
dHJpbmcgQ29kZUJsb2NrOjpzb3VyY2VDb2RlRm9yVG9vbHMoKSBjb25zdAogewogICAgIGlmIChj
b2RlVHlwZSgpICE9IEZ1bmN0aW9uQ29kZSkKLSAgICAgICAgcmV0dXJuIG93bmVyU2NyaXB0RXhl
Y3V0YWJsZSgpLT5zb3VyY2UoKS50b1VURjgoKTsKKyAgICAgICAgcmV0dXJuIG93bmVyRXhlY3V0
YWJsZSgpLT5zb3VyY2UoKS50b1VURjgoKTsKICAgICAKICAgICBTb3VyY2VQcm92aWRlciogcHJv
dmlkZXIgPSBzb3VyY2UoKTsKICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBq
c0Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4ob3duZXJFeGVjdXRhYmxlKCkpOwpAQCAtMTU1LDEx
ICsxNTUsMTEgQEAgdm9pZCBDb2RlQmxvY2s6OmR1bXBBc3N1bWluZ0pJVFR5cGUoUHJpbnRTdHJl
YW0mIG91dCwgSklUQ29kZTo6SklUVHlwZSBqaXRUeXBlKQogICAgIG91dC5wcmludCgiLCAiLCBp
bnN0cnVjdGlvbkNvdW50KCkpOwogICAgIGlmICh0aGlzLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6
QmFzZWxpbmVKSVQgJiYgbV9zaG91bGRBbHdheXNCZUlubGluZWQpCiAgICAgICAgIG91dC5wcmlu
dCgiIChTaG91bGRBbHdheXNCZUlubGluZWQpIik7Ci0gICAgaWYgKG93bmVyU2NyaXB0RXhlY3V0
YWJsZSgpLT5uZXZlcklubGluZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+bmV2ZXJJ
bmxpbmUoKSkKICAgICAgICAgb3V0LnByaW50KCIgKE5ldmVySW5saW5lKSIpOwotICAgIGlmIChv
d25lclNjcmlwdEV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQorICAgIGlmIChv
d25lckV4ZWN1dGFibGUoKS0+ZGlkVHJ5VG9FbnRlckluTG9vcCgpKQogICAgICAgICBvdXQucHJp
bnQoIiAoRGlkVHJ5VG9FbnRlckluTG9vcCkiKTsKLSAgICBpZiAob3duZXJTY3JpcHRFeGVjdXRh
YmxlKCktPmlzU3RyaWN0TW9kZSgpKQorICAgIGlmIChvd25lckV4ZWN1dGFibGUoKS0+aXNTdHJp
Y3RNb2RlKCkpCiAgICAgICAgIG91dC5wcmludCgiIChTdHJpY3RNb2RlKSIpOwogICAgIGlmICh0
aGlzLT5qaXRUeXBlKCkgPT0gSklUQ29kZTo6QmFzZWxpbmVKSVQgJiYgbV9kaWRGYWlsRlRMQ29t
cGlsYXRpb24pCiAgICAgICAgIG91dC5wcmludCgiIChGVExGYWlsKSIpOwpAQCAtNTUyLDcgKzU1
Miw3IEBAIHZvaWQgQ29kZUJsb2NrOjpkdW1wU291cmNlKCkKIAogdm9pZCBDb2RlQmxvY2s6OmR1
bXBTb3VyY2UoUHJpbnRTdHJlYW0mIG91dCkKIHsKLSAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVj
dXRhYmxlID0gb3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZSog
ZXhlY3V0YWJsZSA9IG93bmVyRXhlY3V0YWJsZSgpOwogICAgIGlmIChleGVjdXRhYmxlLT5pc0Z1
bmN0aW9uRXhlY3V0YWJsZSgpKSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rp
b25FeGVjdXRhYmxlID0gcmVpbnRlcnByZXRfY2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVj
dXRhYmxlKTsKICAgICAgICAgU3RyaW5nIHNvdXJjZSA9IGZ1bmN0aW9uRXhlY3V0YWJsZS0+c291
cmNlKCkucHJvdmlkZXIoKS0+Z2V0UmFuZ2UoCkBAIC0xNzUxLDcgKzE3NTEsNyBAQCBDb2RlQmxv
Y2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2Vk
Q29kZUJsb2NrKiB1bmxpbgogICAgIHNldE51bVBhcmFtZXRlcnModW5saW5rZWRDb2RlQmxvY2st
Pm51bVBhcmFtZXRlcnMoKSk7CiAKICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkgfHwgdm0o
KS0+Y29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICB2bSgpLT5mdW5jdGlvbkhhc0V4ZWN1
dGVkQ2FjaGUoKS0+cmVtb3ZlVW5leGVjdXRlZFJhbmdlKG93bmVyRXhlY3V0YWJsZS0+c291cmNl
SUQoKSwgb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgb3duZXJF
eGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICB2bSgpLT5mdW5j
dGlvbkhhc0V4ZWN1dGVkQ2FjaGUoKS0+cmVtb3ZlVW5leGVjdXRlZFJhbmdlKG1fb3duZXJFeGVj
dXRhYmxlLT5zb3VyY2VJRCgpLCBtX293bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KCksIG1fb3duZXJFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOwog
CiAgICAgc2V0Q29uc3RhbnRSZWdpc3RlcnModW5saW5rZWRDb2RlQmxvY2stPmNvbnN0YW50UmVn
aXN0ZXJzKCksIHVubGlua2VkQ29kZUJsb2NrLT5jb25zdGFudHNTb3VyY2VDb2RlUmVwcmVzZW50
YXRpb24oKSk7CiAgICAgaWYgKHVubGlua2VkQ29kZUJsb2NrLT51c2VzR2xvYmFsT2JqZWN0KCkp
CkBAIC0xNzg1LDcgKzE3ODUsNyBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhTY3JpcHRFeGVjdXRh
YmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxpbgogICAgIGZvciAo
c2l6ZV90IGNvdW50ID0gdW5saW5rZWRDb2RlQmxvY2stPm51bWJlck9mRnVuY3Rpb25EZWNscygp
LCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKICAgICAgICAgVW5saW5rZWRGdW5jdGlvbkV4ZWN1
dGFibGUqIHVubGlua2VkRXhlY3V0YWJsZSA9IHVubGlua2VkQ29kZUJsb2NrLT5mdW5jdGlvbkRl
Y2woaSk7CiAgICAgICAgIGlmICh2bSgpLT50eXBlUHJvZmlsZXIoKSB8fCB2bSgpLT5jb250cm9s
Rmxvd1Byb2ZpbGVyKCkpCi0gICAgICAgICAgICB2bSgpLT5mdW5jdGlvbkhhc0V4ZWN1dGVkQ2Fj
aGUoKS0+aW5zZXJ0VW5leGVjdXRlZFJhbmdlKG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwg
dW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKSwgdW5saW5rZWRF
eGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0KCkpOworICAgICAgICAgICAgdm0oKS0+
ZnVuY3Rpb25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShtX293bmVy
RXhlY3V0YWJsZS0+c291cmNlSUQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5n
U3RhcnRPZmZzZXQoKSwgdW5saW5rZWRFeGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nRW5kT2Zmc2V0
KCkpOwogICAgICAgICBtX2Z1bmN0aW9uRGVjbHNbaV0uc2V0KCptX3ZtLCBvd25lckV4ZWN1dGFi
bGUsIHVubGlua2VkRXhlY3V0YWJsZS0+bGluaygqbV92bSwgb3duZXJFeGVjdXRhYmxlLT5zb3Vy
Y2UoKSkpOwogICAgIH0KIApAQCAtMTc5Myw3ICsxNzkzLDcgQEAgQ29kZUJsb2NrOjpDb2RlQmxv
Y2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9jayog
dW5saW4KICAgICBmb3IgKHNpemVfdCBjb3VudCA9IHVubGlua2VkQ29kZUJsb2NrLT5udW1iZXJP
ZkZ1bmN0aW9uRXhwcnMoKSwgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CiAgICAgICAgIFVubGlu
a2VkRnVuY3Rpb25FeGVjdXRhYmxlKiB1bmxpbmtlZEV4ZWN1dGFibGUgPSB1bmxpbmtlZENvZGVC
bG9jay0+ZnVuY3Rpb25FeHByKGkpOwogICAgICAgICBpZiAodm0oKS0+dHlwZVByb2ZpbGVyKCkg
fHwgdm0oKS0+Y29udHJvbEZsb3dQcm9maWxlcigpKQotICAgICAgICAgICAgdm0oKS0+ZnVuY3Rp
b25IYXNFeGVjdXRlZENhY2hlKCktPmluc2VydFVuZXhlY3V0ZWRSYW5nZShvd25lckV4ZWN1dGFi
bGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zm
c2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ0VuZE9mZnNldCgpKTsKKyAg
ICAgICAgICAgIHZtKCktPmZ1bmN0aW9uSGFzRXhlY3V0ZWRDYWNoZSgpLT5pbnNlcnRVbmV4ZWN1
dGVkUmFuZ2UobV9vd25lckV4ZWN1dGFibGUtPnNvdXJjZUlEKCksIHVubGlua2VkRXhlY3V0YWJs
ZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0KCksIHVubGlua2VkRXhlY3V0YWJsZS0+dHlwZVBy
b2ZpbGluZ0VuZE9mZnNldCgpKTsKICAgICAgICAgbV9mdW5jdGlvbkV4cHJzW2ldLnNldCgqbV92
bSwgb3duZXJFeGVjdXRhYmxlLCB1bmxpbmtlZEV4ZWN1dGFibGUtPmxpbmsoKm1fdm0sIG93bmVy
RXhlY3V0YWJsZS0+c291cmNlKCkpKTsKICAgICB9CiAKQEAgLTE5MjUsNyArMTkyNSw3IEBAIENv
ZGVCbG9jazo6Q29kZUJsb2NrKFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5s
aW5rZWRDb2RlQmxvY2sqIHVubGluCiAKICAgICAgICAgICAgIGluc3RydWN0aW9uc1tpICsgb3BM
ZW5ndGggLSAxXSA9IG9iamVjdEFsbG9jYXRpb25Qcm9maWxlOwogICAgICAgICAgICAgb2JqZWN0
QWxsb2NhdGlvblByb2ZpbGUtPmluaXRpYWxpemUoKnZtKCksCi0gICAgICAgICAgICAgICAgb3du
ZXJFeGVjdXRhYmxlLCBtX2dsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIGluZmVycmVk
SW5saW5lQ2FwYWNpdHkpOworICAgICAgICAgICAgICAgIG1fb3duZXJFeGVjdXRhYmxlLmdldCgp
LCBtX2dsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCksIGluZmVycmVkSW5saW5lQ2FwYWNp
dHkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIApAQCAtMjEwNiw3ICsyMTA2LDcg
QEAgQ29kZUJsb2NrOjpDb2RlQmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
LCBVbmxpbmtlZENvZGVCbG9jayogdW5saW4KICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHVz
ZXIncyBwcm9ncmFtLCBnaXZlIHRoZSB0eXBlIHByb2ZpbGVyIHNvbWUgcmFuZ2UgdG8gaWRlbnRp
ZnkgdGhlc2UgcmV0dXJuIHN0YXRlbWVudHMuCiAgICAgICAgICAgICAgICAgICAgIC8vIEN1cnJl
bnRseSwgdGhlIHRleHQgb2Zmc2V0IHRoYXQgaXMgdXNlZCBhcyBpZGVudGlmaWNhdGlvbiBpcyAi
ZiIgaW4gdGhlIGZ1bmN0aW9uIGtleXdvcmQKICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGlz
IHN0b3JlZCBvbiBUeXBlTG9jYXRpb24ncyBtX2Rpdm90Rm9yRnVuY3Rpb25PZmZzZXRJZlJldHVy
blN0YXRlbWVudCBtZW1iZXIgdmFyaWFibGUuCi0gICAgICAgICAgICAgICAgICAgIGRpdm90U3Rh
cnQgPSBkaXZvdEVuZCA9IG93bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0T2Zmc2V0
KCk7CisgICAgICAgICAgICAgICAgICAgIGRpdm90U3RhcnQgPSBkaXZvdEVuZCA9IG1fb3duZXJF
eGVjdXRhYmxlLT50eXBlUHJvZmlsaW5nU3RhcnRPZmZzZXQoKTsKICAgICAgICAgICAgICAgICAg
ICAgc2hvdWxkQW5hbHl6ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMjExNCwxMiArMjExNCwxMiBAQCBDb2RlQmxvY2s6OkNvZGVCbG9jayhT
Y3JpcHRFeGVjdXRhYmxlKiBvd25lckV4ZWN1dGFibGUsIFVubGlua2VkQ29kZUJsb2NrKiB1bmxp
bgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBzdGQ6OnBhaXI8VHlwZUxvY2F0aW9uKiwg
Ym9vbD4gbG9jYXRpb25QYWlyID0gdm0oKS0+dHlwZVByb2ZpbGVyKCktPnR5cGVMb2NhdGlvbkNh
Y2hlKCktPmdldFR5cGVMb2NhdGlvbihnbG9iYWxWYXJpYWJsZUlELAotICAgICAgICAgICAgICAg
IG93bmVyRXhlY3V0YWJsZS0+c291cmNlSUQoKSwgZGl2b3RTdGFydCwgZGl2b3RFbmQsIGdsb2Jh
bFR5cGVTZXQsIHZtKCkpOworICAgICAgICAgICAgICAgIG1fb3duZXJFeGVjdXRhYmxlLT5zb3Vy
Y2VJRCgpLCBkaXZvdFN0YXJ0LCBkaXZvdEVuZCwgZ2xvYmFsVHlwZVNldCwgdm0oKSk7CiAgICAg
ICAgICAgICBUeXBlTG9jYXRpb24qIGxvY2F0aW9uID0gbG9jYXRpb25QYWlyLmZpcnN0OwogICAg
ICAgICAgICAgYm9vbCBpc05ld0xvY2F0aW9uID0gbG9jYXRpb25QYWlyLnNlY29uZDsKIAogICAg
ICAgICAgICAgaWYgKGZsYWcgPT0gUHJvZmlsZVR5cGVCeXRlY29kZUZ1bmN0aW9uUmV0dXJuU3Rh
dGVtZW50KQotICAgICAgICAgICAgICAgIGxvY2F0aW9uLT5tX2Rpdm90Rm9yRnVuY3Rpb25PZmZz
ZXRJZlJldHVyblN0YXRlbWVudCA9IG93bmVyRXhlY3V0YWJsZS0+dHlwZVByb2ZpbGluZ1N0YXJ0
T2Zmc2V0KCk7CisgICAgICAgICAgICAgICAgbG9jYXRpb24tPm1fZGl2b3RGb3JGdW5jdGlvbk9m
ZnNldElmUmV0dXJuU3RhdGVtZW50ID0gbV9vd25lckV4ZWN1dGFibGUtPnR5cGVQcm9maWxpbmdT
dGFydE9mZnNldCgpOwogCiAgICAgICAgICAgICBpZiAoc2hvdWxkQW5hbHl6ZSAmJiBpc05ld0xv
Y2F0aW9uKQogICAgICAgICAgICAgICAgIHZtKCktPnR5cGVQcm9maWxlcigpLT5pbnNlcnROZXdM
b2NhdGlvbihsb2NhdGlvbik7CkBAIC0yMTYzLDM5ICsyMTYzLDYgQEAgQ29kZUJsb2NrOjpDb2Rl
QmxvY2soU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBVbmxpbmtlZENvZGVCbG9j
ayogdW5saW4KICAgICBtX2hlYXAtPnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKHNpemVvZihD
b2RlQmxvY2spICsgbV9pbnN0cnVjdGlvbnMuc2l6ZSgpICogc2l6ZW9mKEluc3RydWN0aW9uKSk7
CiB9CiAKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi1Db2RlQmxvY2s6OkNvZGVCbG9jayhXZWJB
c3NlbWJseUV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVk0mIHZtLCBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQotICAgIDogbV9nbG9iYWxPYmplY3QoZ2xvYmFsT2JqZWN0LT52bSgp
LCBvd25lckV4ZWN1dGFibGUsIGdsb2JhbE9iamVjdCkKLSAgICAsIG1faGVhcCgmbV9nbG9iYWxP
YmplY3QtPnZtKCkuaGVhcCkKLSAgICAsIG1fbnVtQ2FsbGVlUmVnaXN0ZXJzKDApCi0gICAgLCBt
X251bVZhcnMoMCkKLSAgICAsIG1faXNDb25zdHJ1Y3RvcihmYWxzZSkKLSAgICAsIG1fc2hvdWxk
QWx3YXlzQmVJbmxpbmVkKGZhbHNlKQotICAgICwgbV9kaWRGYWlsRlRMQ29tcGlsYXRpb24oZmFs
c2UpCi0gICAgLCBtX2hhc0JlZW5Db21waWxlZFdpdGhGVEwoZmFsc2UpCi0gICAgLCBtX2hhc0Rl
YnVnZ2VyU3RhdGVtZW50KGZhbHNlKQotICAgICwgbV9zdGVwcGluZ01vZGUoU3RlcHBpbmdNb2Rl
RGlzYWJsZWQpCi0gICAgLCBtX251bUJyZWFrcG9pbnRzKDApCi0gICAgLCBtX293bmVyRXhlY3V0
YWJsZShtX2dsb2JhbE9iamVjdC0+dm0oKSwgb3duZXJFeGVjdXRhYmxlLCBvd25lckV4ZWN1dGFi
bGUpCi0gICAgLCBtX3ZtKCZ2bSkKLSAgICAsIG1faXNTdHJpY3RNb2RlKGZhbHNlKQotICAgICwg
bV9uZWVkc0FjdGl2YXRpb24oZmFsc2UpCi0gICAgLCBtX21heUJlRXhlY3V0aW5nKGZhbHNlKQot
ICAgICwgbV9jb2RlVHlwZShGdW5jdGlvbkNvZGUpCi0gICAgLCBtX29zckV4aXRDb3VudGVyKDAp
Ci0gICAgLCBtX29wdGltaXphdGlvbkRlbGF5Q291bnRlcigwKQotICAgICwgbV9yZW9wdGltaXph
dGlvblJldHJ5Q291bnRlcigwKQotI2lmIEVOQUJMRShKSVQpCi0gICAgLCBtX2NhcGFiaWxpdHlM
ZXZlbFN0YXRlKERGRzo6Q2Fubm90Q29tcGlsZSkKLSNlbmRpZgotewotICAgIEFTU0VSVChtX2hl
YXAtPmlzRGVmZXJyZWQoKSk7Ci0KLSAgICBtX2hlYXAtPm1fY29kZUJsb2Nrcy5hZGQodGhpcyk7
Ci0gICAgbV9oZWFwLT5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChzaXplb2YoQ29kZUJsb2Nr
KSk7Ci19Ci0jZW5kaWYKLQogQ29kZUJsb2NrOjp+Q29kZUJsb2NrKCkKIHsKICAgICBpZiAobV92
bS0+bV9wZXJCeXRlY29kZVByb2ZpbGVyKQpAQCAtMjU0MSwxMSArMjUwOCw3IEBAIHZvaWQgQ29k
ZUJsb2NrOjp2aXNpdFdlYWtSZWZlcmVuY2VzKFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogdm9pZCBD
b2RlQmxvY2s6OmZpbmFsaXplVW5jb25kaXRpb25hbGx5KCkKIHsKICAgICBJbnRlcnByZXRlciog
aW50ZXJwcmV0ZXIgPSBtX3ZtLT5pbnRlcnByZXRlcjsKLSAgICBib29sIG93bmVkQnlXZWJBc3Nl
bWJseUV4ZWN1dGFibGUgPSBmYWxzZTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgb3du
ZWRCeVdlYkFzc2VtYmx5RXhlY3V0YWJsZSA9IG1fb3duZXJFeGVjdXRhYmxlLT5pc1dlYkFzc2Vt
Ymx5RXhlY3V0YWJsZSgpOwotI2VuZGlmCi0gICAgaWYgKEpJVENvZGU6OmNvdWxkQmVJbnRlcnBy
ZXRlZChqaXRUeXBlKCkpICYmICFvd25lZEJ5V2ViQXNzZW1ibHlFeGVjdXRhYmxlKSB7CisgICAg
aWYgKEpJVENvZGU6OmNvdWxkQmVJbnRlcnByZXRlZChqaXRUeXBlKCkpKSB7CiAgICAgICAgIGNv
bnN0IFZlY3Rvcjx1bnNpZ25lZD4mIHByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zID0gbV91bmxp
bmtlZENvZGUtPnByb3BlcnR5QWNjZXNzSW5zdHJ1Y3Rpb25zKCk7CiAgICAgICAgIGZvciAoc2l6
ZV90IHNpemUgPSBwcm9wZXJ0eUFjY2Vzc0luc3RydWN0aW9ucy5zaXplKCksIGkgPSAwOyBpIDwg
c2l6ZTsgKytpKSB7CiAgICAgICAgICAgICBJbnN0cnVjdGlvbiogY3VySW5zdHJ1Y3Rpb24gPSAm
aW5zdHJ1Y3Rpb25zKClbcHJvcGVydHlBY2Nlc3NJbnN0cnVjdGlvbnNbaV1dOwpAQCAtMjk1MCw3
ICsyOTEzLDcgQEAgSGFuZGxlckluZm8qIENvZGVCbG9jazo6aGFuZGxlckZvckJ5dGVjb2RlT2Zm
c2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBSZXF1aXIKIHVuc2lnbmVkIENvZGVCbG9jazo6
bGluZU51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0KQogewog
ICAgIFJFTEVBU0VfQVNTRVJUKGJ5dGVjb2RlT2Zmc2V0IDwgaW5zdHJ1Y3Rpb25zKCkuc2l6ZSgp
KTsKLSAgICByZXR1cm4gb3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmZpcnN0TGluZSgpICsgbV91
bmxpbmtlZENvZGUtPmxpbmVOdW1iZXJGb3JCeXRlY29kZU9mZnNldChieXRlY29kZU9mZnNldCk7
CisgICAgcmV0dXJuIG1fb3duZXJFeGVjdXRhYmxlLT5maXJzdExpbmUoKSArIG1fdW5saW5rZWRD
b2RlLT5saW5lTnVtYmVyRm9yQnl0ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpOwogfQogCiB1
bnNpZ25lZCBDb2RlQmxvY2s6OmNvbHVtbk51bWJlckZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVk
IGJ5dGVjb2RlT2Zmc2V0KQpAQCAtMjk2OSw3ICsyOTMyLDcgQEAgdm9pZCBDb2RlQmxvY2s6OmV4
cHJlc3Npb25SYW5nZUZvckJ5dGVjb2RlT2Zmc2V0KHVuc2lnbmVkIGJ5dGVjb2RlT2Zmc2V0LCBp
bnQmIGQKICAgICBtX3VubGlua2VkQ29kZS0+ZXhwcmVzc2lvblJhbmdlRm9yQnl0ZWNvZGVPZmZz
ZXQoYnl0ZWNvZGVPZmZzZXQsIGRpdm90LCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0LCBsaW5lLCBj
b2x1bW4pOwogICAgIGRpdm90ICs9IG1fc291cmNlT2Zmc2V0OwogICAgIGNvbHVtbiArPSBsaW5l
ID8gMSA6IGZpcnN0TGluZUNvbHVtbk9mZnNldCgpOwotICAgIGxpbmUgKz0gb3duZXJTY3JpcHRF
eGVjdXRhYmxlKCktPmZpcnN0TGluZSgpOworICAgIGxpbmUgKz0gbV9vd25lckV4ZWN1dGFibGUt
PmZpcnN0TGluZSgpOwogfQogCiBib29sIENvZGVCbG9jazo6aGFzT3BEZWJ1Z0ZvckxpbmVBbmRD
b2x1bW4odW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uKQpAQCAtMzA0NiwxMiArMzAwOSwx
MiBAQCB2b2lkIENvZGVCbG9jazo6bGlua0luY29taW5nQ2FsbChFeGVjU3RhdGUqIGNhbGxlckZy
YW1lLCBMTEludENhbGxMaW5rSW5mbyogaW5jbwogCiB2b2lkIENvZGVCbG9jazo6aW5zdGFsbCgp
CiB7Ci0gICAgb3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmluc3RhbGxDb2RlKHRoaXMpOworICAg
IG93bmVyRXhlY3V0YWJsZSgpLT5pbnN0YWxsQ29kZSh0aGlzKTsKIH0KIAogUGFzc1JlZlB0cjxD
b2RlQmxvY2s+IENvZGVCbG9jazo6bmV3UmVwbGFjZW1lbnQoKQogewotICAgIHJldHVybiBvd25l
clNjcmlwdEV4ZWN1dGFibGUoKS0+bmV3UmVwbGFjZW1lbnRDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6
YXRpb25LaW5kKCkpOworICAgIHJldHVybiBvd25lckV4ZWN1dGFibGUoKS0+bmV3UmVwbGFjZW1l
bnRDb2RlQmxvY2tGb3Ioc3BlY2lhbGl6YXRpb25LaW5kKCkpOwogfQogCiAjaWYgRU5BQkxFKEpJ
VCkKQEAgLTMwODYsMTggKzMwNDksNiBAQCBERkc6OkNhcGFiaWxpdHlMZXZlbCBGdW5jdGlvbkNv
ZGVCbG9jazo6Y2FwYWJpbGl0eUxldmVsSW50ZXJuYWwoKQogICAgICAgICByZXR1cm4gREZHOjpm
dW5jdGlvbkZvckNvbnN0cnVjdENhcGFiaWxpdHlMZXZlbCh0aGlzKTsKICAgICByZXR1cm4gREZH
OjpmdW5jdGlvbkZvckNhbGxDYXBhYmlsaXR5TGV2ZWwodGhpcyk7CiB9Ci0KLSNpZiBFTkFCTEUo
V0VCQVNTRU1CTFkpCi1Db2RlQmxvY2sqIFdlYkFzc2VtYmx5Q29kZUJsb2NrOjpyZXBsYWNlbWVu
dCgpCi17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLURGRzo6Q2FwYWJpbGl0eUxldmVsIFdl
YkFzc2VtYmx5Q29kZUJsb2NrOjpjYXBhYmlsaXR5TGV2ZWxJbnRlcm5hbCgpCi17Ci0gICAgcmV0
dXJuIERGRzo6Q2Fubm90Q29tcGlsZTsKLX0KLSNlbmRpZgogI2VuZGlmCiAKIHZvaWQgQ29kZUJs
b2NrOjpqZXR0aXNvbihQcm9maWxlcjo6SmV0dGlzb25SZWFzb24gcmVhc29uLCBSZW9wdGltaXph
dGlvbk1vZGUgbW9kZSwgY29uc3QgRmlyZURldGFpbCogZGV0YWlsKQpAQCAtMzY1MCwxMCArMzYw
MSw2IEBAIHZvaWQgQ29kZUJsb2NrOjp1cGRhdGVBbGxBcnJheVByZWRpY3Rpb25zKCkKIAogdm9p
ZCBDb2RlQmxvY2s6OnVwZGF0ZUFsbFByZWRpY3Rpb25zKCkKIHsKLSNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCi0gICAgaWYgKG1fb3duZXJFeGVjdXRhYmxlLT5pc1dlYkFzc2VtYmx5RXhlY3V0YWJs
ZSgpKQotICAgICAgICByZXR1cm47Ci0jZW5kaWYKICAgICB1cGRhdGVBbGxWYWx1ZVByb2ZpbGVQ
cmVkaWN0aW9ucygpOwogICAgIHVwZGF0ZUFsbEFycmF5UHJlZGljdGlvbnMoKTsKIH0KQEAgLTM5
NzEsNyArMzkxOCw3IEBAIHZvaWQgQ29kZUJsb2NrOjppbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmll
c0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoVmVjdG9yPEluc3RydWN0CiAgICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVCh2bSgpLT5pbnRlcnByZXRlci0+Z2V0T3Bjb2RlSUQoaW5zdHJ1Y3Rpb25zW2Vu
ZElkeF0udS5vcGNvZGUpID09IG9wX3Byb2ZpbGVfY29udHJvbF9mbG93KTsKICAgICAgICAgICAg
IGJhc2ljQmxvY2tFbmRPZmZzZXQgPSBpbnN0cnVjdGlvbnNbZW5kSWR4ICsgMV0udS5vcGVyYW5k
IC0gMTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGJhc2ljQmxvY2tFbmRPZmZzZXQg
PSBtX3NvdXJjZU9mZnNldCArIG93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5zb3VyY2UoKS5sZW5n
dGgoKSAtIDE7IC8vIE9mZnNldCBiZWZvcmUgdGhlIGNsb3NpbmcgYnJhY2UuCisgICAgICAgICAg
ICBiYXNpY0Jsb2NrRW5kT2Zmc2V0ID0gbV9zb3VyY2VPZmZzZXQgKyBtX293bmVyRXhlY3V0YWJs
ZS0+c291cmNlKCkubGVuZ3RoKCkgLSAxOyAvLyBPZmZzZXQgYmVmb3JlIHRoZSBjbG9zaW5nIGJy
YWNlLgogICAgICAgICAgICAgYmFzaWNCbG9ja1N0YXJ0T2Zmc2V0ID0gc3RkOjptaW4oYmFzaWNC
bG9ja1N0YXJ0T2Zmc2V0LCBiYXNpY0Jsb2NrRW5kT2Zmc2V0KTsgLy8gU29tZSBzdGFydCBvZmZz
ZXRzIG1heSBiZSBhdCB0aGUgY2xvc2luZyBicmFjZSwgZW5zdXJlIGl0IGlzIHRoZSBvZmZzZXQg
YmVmb3JlLgogICAgICAgICB9CiAKQEAgLTM5OTksNyArMzk0Niw3IEBAIHZvaWQgQ29kZUJsb2Nr
OjppbnNlcnRCYXNpY0Jsb2NrQm91bmRhcmllc0ZvckNvbnRyb2xGbG93UHJvZmlsZXIoVmVjdG9y
PEluc3RydWN0CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIEJh
c2ljQmxvY2tMb2NhdGlvbiogYmFzaWNCbG9ja0xvY2F0aW9uID0gdm0oKS0+Y29udHJvbEZsb3dQ
cm9maWxlcigpLT5nZXRCYXNpY0Jsb2NrTG9jYXRpb24ob3duZXJTY3JpcHRFeGVjdXRhYmxlKCkt
PnNvdXJjZUlEKCksIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9mZnNldCk7
CisgICAgICAgIEJhc2ljQmxvY2tMb2NhdGlvbiogYmFzaWNCbG9ja0xvY2F0aW9uID0gdm0oKS0+
Y29udHJvbEZsb3dQcm9maWxlcigpLT5nZXRCYXNpY0Jsb2NrTG9jYXRpb24obV9vd25lckV4ZWN1
dGFibGUtPnNvdXJjZUlEKCksIGJhc2ljQmxvY2tTdGFydE9mZnNldCwgYmFzaWNCbG9ja0VuZE9m
ZnNldCk7CiAKICAgICAgICAgLy8gRmluZCBhbGwgZnVuY3Rpb25zIHRoYXQgYXJlIGVuY2xvc2Vk
IHdpdGhpbiB0aGUgcmFuZ2U6IFtiYXNpY0Jsb2NrU3RhcnRPZmZzZXQsIGJhc2ljQmxvY2tFbmRP
ZmZzZXRdCiAgICAgICAgIC8vIGFuZCBpbnNlcnQgdGhlc2UgZnVuY3Rpb25zJyBzdGFydC9lbmQg
b2Zmc2V0cyBhcyBnYXBzIGluIHRoZSBjdXJyZW50IEJhc2ljQmxvY2tMb2NhdGlvbi4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAppbmRleCBjYjllYmQ2MWI1ZGRm
ZTBjYjNmNjdmMzEwZGY4ODE3N2RkNjM1NDliLi45NDk5NDA1NjQzYWE5MTNkYzc4ZTc5OWFhMGNj
NTY3MmViMzZlZjNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUv
Q29kZUJsb2NrLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9j
ay5oCkBAIC05Niw5ICs5Niw2IEBAIHByb3RlY3RlZDoKICAgICBDb2RlQmxvY2soQ29weVBhcnNl
ZEJsb2NrVGFnLCBDb2RlQmxvY2smIG90aGVyKTsKICAgICAgICAgCiAgICAgQ29kZUJsb2NrKFNj
cmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSwgVW5saW5rZWRDb2RlQmxvY2sqLCBKU1Nj
b3BlKiwgUGFzc1JlZlB0cjxTb3VyY2VQcm92aWRlcj4sIHVuc2lnbmVkIHNvdXJjZU9mZnNldCwg
dW5zaWduZWQgZmlyc3RMaW5lQ29sdW1uT2Zmc2V0KTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkp
Ci0gICAgQ29kZUJsb2NrKFdlYkFzc2VtYmx5RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxlLCBW
TSYsIEpTR2xvYmFsT2JqZWN0Kik7Ci0jZW5kaWYKIAogICAgIFdyaXRlQmFycmllcjxKU0dsb2Jh
bE9iamVjdD4gbV9nbG9iYWxPYmplY3Q7CiAgICAgSGVhcCogbV9oZWFwOwpAQCAtMzA2LDggKzMw
Myw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgamV0dGlzb24oUHJvZmlsZXI6OkpldHRpc29uUmVh
c29uLCBSZW9wdGltaXphdGlvbk1vZGUgPSBEb250Q291bnRSZW9wdGltaXphdGlvbiwgY29uc3Qg
RmlyZURldGFpbCogPSBudWxscHRyKTsKICAgICAKLSAgICBFeGVjdXRhYmxlQmFzZSogb3duZXJF
eGVjdXRhYmxlKCkgY29uc3QgeyByZXR1cm4gbV9vd25lckV4ZWN1dGFibGUuZ2V0KCk7IH0KLSAg
ICBTY3JpcHRFeGVjdXRhYmxlKiBvd25lclNjcmlwdEV4ZWN1dGFibGUoKSBjb25zdCB7IHJldHVy
biBqc0Nhc3Q8U2NyaXB0RXhlY3V0YWJsZSo+KG1fb3duZXJFeGVjdXRhYmxlLmdldCgpKTsgfQor
ICAgIFNjcmlwdEV4ZWN1dGFibGUqIG93bmVyRXhlY3V0YWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1f
b3duZXJFeGVjdXRhYmxlLmdldCgpOyB9CiAKICAgICB2b2lkIHNldFZNKFZNKiB2bSkgeyBtX3Zt
ID0gdm07IH0KICAgICBWTSogdm0oKSB7IHJldHVybiBtX3ZtOyB9CkBAIC0zNTAsMTUgKzM0Niw3
IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1fbmVlZHNBY3RpdmF0aW9uOwogICAgIH0KICAg
ICAKLSAgICBDb2RlVHlwZSBjb2RlVHlwZSgpIGNvbnN0Ci0gICAgewotI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLSAgICAgICAgaWYgKG1fb3duZXJFeGVjdXRhYmxlLT5pc1dlYkFzc2VtYmx5RXhl
Y3V0YWJsZSgpKQotICAgICAgICAgICAgcmV0dXJuIEZ1bmN0aW9uQ29kZTsKLSNlbmRpZgotICAg
ICAgICByZXR1cm4gbV91bmxpbmtlZENvZGUtPmNvZGVUeXBlKCk7Ci0gICAgfQotCisgICAgQ29k
ZVR5cGUgY29kZVR5cGUoKSBjb25zdCB7IHJldHVybiBtX3VubGlua2VkQ29kZS0+Y29kZVR5cGUo
KTsgfQogICAgIFB1dFByb3BlcnR5U2xvdDo6Q29udGV4dCBwdXRCeUlkQ29udGV4dCgpIGNvbnN0
CiAgICAgewogICAgICAgICBpZiAoY29kZVR5cGUoKSA9PSBFdmFsQ29kZSkKQEAgLTk5NSw3ICs5
ODMsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgdW5zaWduZWQgbV9udW1CcmVha3BvaW50cyA6
IDMwOwogICAgICAgICB9OwogICAgIH07Ci0gICAgV3JpdGVCYXJyaWVyPEV4ZWN1dGFibGVCYXNl
PiBtX293bmVyRXhlY3V0YWJsZTsKKyAgICBXcml0ZUJhcnJpZXI8U2NyaXB0RXhlY3V0YWJsZT4g
bV9vd25lckV4ZWN1dGFibGU7CiAgICAgVk0qIG1fdm07CiAKICAgICBSZWZDb3VudGVkQXJyYXk8
SW5zdHJ1Y3Rpb24+IG1faW5zdHJ1Y3Rpb25zOwpAQCAtMTE0NiwyNyArMTEzNCw2IEBAIHByb3Rl
Y3RlZDoKICNlbmRpZgogfTsKIAotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLWNsYXNzIFdlYkFz
c2VtYmx5Q29kZUJsb2NrIDogcHVibGljIENvZGVCbG9jayB7Ci1wdWJsaWM6Ci0gICAgV2ViQXNz
ZW1ibHlDb2RlQmxvY2soQ29weVBhcnNlZEJsb2NrVGFnLCBXZWJBc3NlbWJseUNvZGVCbG9jayYg
b3RoZXIpCi0gICAgICAgIDogQ29kZUJsb2NrKENvcHlQYXJzZWRCbG9jaywgb3RoZXIpCi0gICAg
ewotICAgIH0KLQotICAgIFdlYkFzc2VtYmx5Q29kZUJsb2NrKFdlYkFzc2VtYmx5RXhlY3V0YWJs
ZSogb3duZXJFeGVjdXRhYmxlLCBWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
Ci0gICAgICAgIDogQ29kZUJsb2NrKG93bmVyRXhlY3V0YWJsZSwgdm0sIGdsb2JhbE9iamVjdCkK
LSAgICB7Ci0gICAgfQotCi0jaWYgRU5BQkxFKEpJVCkKLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFs
IENvZGVCbG9jayogcmVwbGFjZW1lbnQoKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIERGRzo6Q2Fw
YWJpbGl0eUxldmVsIGNhcGFiaWxpdHlMZXZlbEludGVybmFsKCkgb3ZlcnJpZGU7Ci0jZW5kaWYK
LX07Ci0jZW5kaWYKLQogaW5saW5lIFJlZ2lzdGVyJiBFeGVjU3RhdGU6OnIoaW50IGluZGV4KQog
ewogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gdGhpcy0+Y29kZUJsb2NrKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBjNmYxNGE5NDE1ODBi
YjRiZmM1MzU3OWFiNTM4NjA1OGYzOWNiODIwLi4zNTM4MzcyNzMwMzYwYzkzMGExZTZmN2Y2ODdl
NWE5MzQwZGIxYjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIv
RGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAKQEAgLTIyNyw3ICsyMjcsNyBAQCB2b2lkIERlYnVnZ2VyOjpyZWdpc3RlckNvZGVCbG9j
ayhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIAogdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2lu
dChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnJlYWtwb2lu
dFN0YXRlIGVuYWJsZWRPck5vdCkKIHsKLSAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxl
ID0gY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKTsKKyAgICBTY3JpcHRFeGVjdXRh
YmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKIAogICAgIFNv
dXJjZUlEIHNvdXJjZUlEID0gc3RhdGljX2Nhc3Q8U291cmNlSUQ+KGV4ZWN1dGFibGUtPnNvdXJj
ZUlEKCkpOwogICAgIGlmIChicmVha3BvaW50LnNvdXJjZUlEICE9IHNvdXJjZUlEKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAK
aW5kZXggZDM4M2MzZmZkMDgyMGY4YTJiNzFlODdjNDU1MmRmNzdkMDY1NGY3Yi4uYmYwOTNlODli
NDRiYWYzNTU2MTE1MTE3NDYyNzdhMTAxYzdhNzI2YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCkBAIC0yNDIsNyArMjQy
LDcgQEAgU291cmNlSUQgRGVidWdnZXJDYWxsRnJhbWU6OnNvdXJjZUlERm9yQ2FsbEZyYW1lKENh
bGxGcmFtZSogY2FsbEZyYW1lKQogICAgIENvZGVCbG9jayogY29kZUJsb2NrID0gY2FsbEZyYW1l
LT5jb2RlQmxvY2soKTsKICAgICBpZiAoIWNvZGVCbG9jaykKICAgICAgICAgcmV0dXJuIG5vU291
cmNlSUQ7Ci0gICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPnNv
dXJjZUlEKCk7CisgICAgcmV0dXJuIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPnNvdXJj
ZUlEKCk7CiB9CiAKIEpTVmFsdWUgRGVidWdnZXJDYWxsRnJhbWU6OnRoaXNWYWx1ZUZvckNhbGxG
cmFtZShDYWxsRnJhbWUqIGNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHQnl0ZUNvZGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdCeXRlQ29kZVBhcnNlci5jcHAKaW5kZXggN2Y2NTA1MmRhOGYyZjFmOTc0MzRjOGNiN2E2
YTIwZmM0MjI2ZTUwNy4uMGExNjI0ZTczMTE3NjRmMzc3MDZkYmI0MTlmNjNlZWI3NjJiYmI0NyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdCeXRlQ29kZVBhcnNlci5jcHAK
QEAgLTkzOSw3ICs5MzksNyBAQCBwcml2YXRlOgogICAgICAgICBDb2RlQmxvY2sqIG1fcHJvZmls
ZWRCbG9jazsKICAgICAgICAgSW5saW5lQ2FsbEZyYW1lKiBtX2lubGluZUNhbGxGcmFtZTsKICAg
ICAgICAgCi0gICAgICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUoKSB7IHJldHVybiBt
X2NvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCk7IH0KKyAgICAgICAgU2NyaXB0RXhl
Y3V0YWJsZSogZXhlY3V0YWJsZSgpIHsgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4ZWN1dGFi
bGUoKTsgfQogICAgICAgICAKICAgICAgICAgUXVlcnlhYmxlRXhpdFByb2ZpbGUgbV9leGl0UHJv
ZmlsZTsKICAgICAgICAgCkBAIC0xMjUyLDggKzEyNTIsOCBAQCB1bnNpZ25lZCBCeXRlQ29kZVBh
cnNlcjo6aW5saW5pbmdDb3N0KENhbGxWYXJpYW50IGNhbGxlZSwgaW50IGFyZ3VtZW50Q291bnRJ
bmNsdQogICAgICAgICBkYXRhTG9nKCIgICAgTWlnaHQgaW5saW5lIGZ1bmN0aW9uOiAiLCBtaWdo
dElubGluZUZ1bmN0aW9uRm9yKGNvZGVCbG9jaywga2luZCksICJcbiIpOwogICAgICAgICBkYXRh
TG9nKCIgICAgTWlnaHQgY29tcGlsZSBmdW5jdGlvbjogIiwgbWlnaHRDb21waWxlRnVuY3Rpb25G
b3IoY29kZUJsb2NrLCBraW5kKSwgIlxuIik7CiAgICAgICAgIGRhdGFMb2coIiAgICBJcyBzdXBw
b3J0ZWQgZm9yIGlubGluaW5nOiAiLCBpc1N1cHBvcnRlZEZvcklubGluaW5nKGNvZGVCbG9jayks
ICJcbiIpOwotICAgICAgICBkYXRhTG9nKCIgICAgTmVlZHMgYWN0aXZhdGlvbjogIiwgY29kZUJs
b2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9uKCksICJcbiIpOwot
ICAgICAgICBkYXRhTG9nKCIgICAgSXMgaW5saW5pbmcgY2FuZGlkYXRlOiAiLCBjb2RlQmxvY2st
Pm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pc0lubGluaW5nQ2FuZGlkYXRlKCksICJcbiIpOwor
ICAgICAgICBkYXRhTG9nKCIgICAgTmVlZHMgYWN0aXZhdGlvbjogIiwgY29kZUJsb2NrLT5vd25l
ckV4ZWN1dGFibGUoKS0+bmVlZHNBY3RpdmF0aW9uKCksICJcbiIpOworICAgICAgICBkYXRhTG9n
KCIgICAgSXMgaW5saW5pbmcgY2FuZGlkYXRlOiAiLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5pc0lubGluaW5nQ2FuZGlkYXRlKCksICJcbiIpOwogICAgIH0KICAgICBpZiAoIWNhbklu
bGluZShjYXBhYmlsaXR5TGV2ZWwpKSB7CiAgICAgICAgIGlmICh2ZXJib3NlKQpAQCAtNDQzNiw3
ICs0NDM2LDcgQEAgQnl0ZUNvZGVQYXJzZXI6OklubGluZVN0YWNrRW50cnk6OklubGluZVN0YWNr
RW50cnkoCiAgICAgICAgIGJ5dGVDb2RlUGFyc2VyLT5tX2dyYXBoLmZyZWV6ZShjb2RlQmxvY2st
Pm93bmVyRXhlY3V0YWJsZSgpKTsKICAgICAgICAgLy8gVGhlIG93bmVyIGlzIHRoZSBtYWNoaW5l
IGNvZGUgYmxvY2ssIGFuZCB3ZSBhbHJlYWR5IGhhdmUgYSBiYXJyaWVyIG9uIHRoYXQgd2hlbiB0
aGUKICAgICAgICAgLy8gcGxhbiBmaW5pc2hlcy4KLSAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUt
PmV4ZWN1dGFibGUuc2V0V2l0aG91dFdyaXRlQmFycmllcihjb2RlQmxvY2stPm93bmVyU2NyaXB0
RXhlY3V0YWJsZSgpKTsKKyAgICAgICAgbV9pbmxpbmVDYWxsRnJhbWUtPmV4ZWN1dGFibGUuc2V0
V2l0aG91dFdyaXRlQmFycmllcihjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpKTsKICAgICAg
ICAgbV9pbmxpbmVDYWxsRnJhbWUtPnNldFN0YWNrT2Zmc2V0KGlubGluZUNhbGxGcmFtZVN0YXJ0
Lm9mZnNldCgpIC0gSlNTdGFjazo6Q2FsbEZyYW1lSGVhZGVyU2l6ZSk7CiAgICAgICAgIGlmIChj
YWxsZWUpIHsKICAgICAgICAgICAgIG1faW5saW5lQ2FsbEZyYW1lLT5jYWxsZWVSZWNvdmVyeSA9
IFZhbHVlUmVjb3Zlcnk6OmNvbnN0YW50KGNhbGxlZSk7CkBAIC00NTI5LDcgKzQ1MjksNyBAQCB2
b2lkIEJ5dGVDb2RlUGFyc2VyOjpwYXJzZUNvZGVCbG9jaygpCiAgICAgICAgIH0KICAgICAgICAg
ZGF0YUxvZygKICAgICAgICAgICAgICI6IG5lZWRzQWN0aXZhdGlvbiA9ICIsIGNvZGVCbG9jay0+
bmVlZHNBY3RpdmF0aW9uKCksCi0gICAgICAgICAgICAiLCBpc1N0cmljdE1vZGUgPSAiLCBjb2Rl
QmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxuIik7Cisg
ICAgICAgICAgICAiLCBpc1N0cmljdE1vZGUgPSAiLCBjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJs
ZSgpLT5pc1N0cmljdE1vZGUoKSwgIlxuIik7CiAgICAgICAgIGNvZGVCbG9jay0+YmFzZWxpbmVW
ZXJzaW9uKCktPmR1bXBCeXRlY29kZSgpOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQ2FwYWJpbGl0aWVzLmNwcAppbmRleCAxZjI3YzU1NjU3NjJjMjgyM2Nk
NzhlYzkxNzhhM2MxMTVhOTYwYTE5Li43ZjU0MzA4NDg1MjkxNTkzZmI3NWY2YmJjMDY5YmFhM2I2
Y2QxMzI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NhcGFiaWxp
dGllcy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDYXBhYmlsaXRpZXMu
Y3BwCkBAIC00NCwxMSArNDQsNyBAQCBib29sIGlzU3VwcG9ydGVkKCkKIAogYm9vbCBpc1N1cHBv
cnRlZEZvcklubGluaW5nKENvZGVCbG9jayogY29kZUJsb2NrKQogewotI2lmIEVOQUJMRShXRUJB
U1NFTUJMWSkKLSAgICBpZiAoY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNXZWJBc3Nl
bWJseUV4ZWN1dGFibGUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi0gICAgcmV0
dXJuIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPmlzSW5saW5pbmdDYW5kaWRh
dGUoKTsKKyAgICByZXR1cm4gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+aXNJbmxpbmlu
Z0NhbmRpZGF0ZSgpOwogfQogCiBib29sIG1pZ2h0Q29tcGlsZUV2YWwoQ29kZUJsb2NrKiBjb2Rl
QmxvY2spCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNDY0NzZkNDc4YjNk
ZjEwZDc1ZGZmNDliYTMxMGM1OWVhOTg3ZTA0Ny4uNGRiNDcxYjFmZGE5NWU4M2Q5Njk5OThiZjc2
MWNkMjBmNDczZjkxNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdH
cmFwaC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtMzQ1
LDcgKzM0NSw3IEBAIHB1YmxpYzoKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlRm9y
KElubGluZUNhbGxGcmFtZSogaW5saW5lQ2FsbEZyYW1lKQogICAgIHsKICAgICAgICAgaWYgKCFp
bmxpbmVDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gbV9jb2RlQmxvY2stPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpOworICAgICAgICAgICAgcmV0dXJuIG1fY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKTsKICAgICAgICAgCiAgICAgICAgIHJldHVybiBpbmxpbmVDYWxsRnJhbWUtPmV4
ZWN1dGFibGUuZ2V0KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdPU1JFbnRyeS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVu
dHJ5LmNwcAppbmRleCBkODU3NjVmMGY2MGY5NTQ5YWMwZjIyNzcwMzkzM2JiNjdiNjVjYjdlLi4w
MmRiZTRmYTVkZDM0MjRlZWQzYzUxMmU4OWI2MTRhZWQyYjgwMjgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR09TUkVudHJ5LmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQqIHBy
ZXBhcmVPU1JFbnRyeShFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCB1bnNp
Z25lZCBieXRlY29kZUluCiAgICAgc2FuaXRpemVTdGFja0ZvclZNKHZtKTsKICAgICAKICAgICBp
ZiAoYnl0ZWNvZGVJbmRleCkKLSAgICAgICAgY29kZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFi
bGUoKS0+c2V0RGlkVHJ5VG9FbnRlckluTG9vcCh0cnVlKTsKKyAgICAgICAgY29kZUJsb2NrLT5v
d25lckV4ZWN1dGFibGUoKS0+c2V0RGlkVHJ5VG9FbnRlckluTG9vcCh0cnVlKTsKICAgICAKICAg
ICBpZiAoY29kZUJsb2NrLT5qaXRUeXBlKCkgIT0gSklUQ29kZTo6REZHSklUKSB7CiAgICAgICAg
IFJFTEVBU0VfQVNTRVJUKGNvZGVCbG9jay0+aml0VHlwZSgpID09IEpJVENvZGU6OkZUTEpJVCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRD
YWxsU3RhY2tGYWN0b3J5LmNwcAppbmRleCBmZDcxMjc0YTM1NjE0YjJmMDc1ZjU3NWFhMTViMTli
MWIyN2ZjYjlkLi5mMzNkNDA1Y2JhY2Q2NjMxY2IyOTQ2ZjA1ZWQ5YmYzMzFhMjNmYTQ5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0Zh
Y3RvcnkuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0Q2Fs
bFN0YWNrRmFjdG9yeS5jcHAKQEAgLTY2LDEwICs2Niw2IEBAIHB1YmxpYzoKICAgICAgICAgfQog
CiAgICAgICAgIGlmIChtX3JlbWFpbmluZ0NhcGFjaXR5Rm9yRnJhbWVDYXB0dXJlKSB7Ci0jaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgICAgICAgICAgaWYgKHZpc2l0b3ItPmNvZGVCbG9jaygp
LT5vd25lckV4ZWN1dGFibGUoKS0+aXNXZWJBc3NlbWJseUV4ZWN1dGFibGUoKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gU3RhY2tWaXNpdG9yOjpDb250aW51ZTsKLSNlbmRpZgogICAgICAgICAg
ICAgdW5zaWduZWQgbGluZTsKICAgICAgICAgICAgIHVuc2lnbmVkIGNvbHVtbjsKICAgICAgICAg
ICAgIHZpc2l0b3ItPmNvbXB1dGVMaW5lQW5kQ29sdW1uKGxpbmUsIGNvbHVtbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA2
NmZhOGVjZjU0MDYzNTg2Y2Q0YWFhOGZiODQ5N2JjNjE1MWViMDM3Li4xMDUwMWMxZDAxNmIxOWVl
ZWNhNGQyODVkMjY2NWVjY2JhZjgyYjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnRlcnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTE2OCw3ICsxNjgsNyBAQCBKU1ZhbHVl
IGV2YWwoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIEFTU0VSVCghY2FsbEZyYW1lLT52
bSgpLmV4Y2VwdGlvbigpKTsKIAogICAgICAgICBUaGlzVERaTW9kZSB0aGlzVERaTW9kZSA9IGNh
bGxlckNvZGVCbG9jay0+dW5saW5rZWRDb2RlQmxvY2soKS0+Y29uc3RydWN0b3JLaW5kKCkgPT0g
Q29uc3RydWN0b3JLaW5kOjpEZXJpdmVkID8gVGhpc1REWk1vZGU6OkFsd2F5c0NoZWNrIDogVGhp
c1REWk1vZGU6OkNoZWNrSWZOZWVkZWQ7Ci0gICAgICAgIGV2YWwgPSBjYWxsZXJDb2RlQmxvY2st
PmV2YWxDb2RlQ2FjaGUoKS5nZXRTbG93KGNhbGxGcmFtZSwgY2FsbGVyQ29kZUJsb2NrLT5vd25l
clNjcmlwdEV4ZWN1dGFibGUoKSwgY2FsbGVyQ29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSwgdGhp
c1REWk1vZGUsIHByb2dyYW1Tb3VyY2UsIGNhbGxlclNjb3BlQ2hhaW4pOworICAgICAgICBldmFs
ID0gY2FsbGVyQ29kZUJsb2NrLT5ldmFsQ29kZUNhY2hlKCkuZ2V0U2xvdyhjYWxsRnJhbWUsIGNh
bGxlckNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCksIGNhbGxlckNvZGVCbG9jay0+aXNTdHJp
Y3RNb2RlKCksIHRoaXNURFpNb2RlLCBwcm9ncmFtU291cmNlLCBjYWxsZXJTY29wZUNoYWluKTsK
ICAgICAgICAgaWYgKCFldmFsKQogICAgICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAg
ICAgfQpAQCAtNTE1LDE2ICs1MTUsNiBAQCBTdHJpbmcgU3RhY2tGcmFtZTo6dG9TdHJpbmcoQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgcmV0dXJuIHRyYWNlQnVpbGQudG9TdHJpbmcoKS5pbXBs
KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZShFeGVj
dXRhYmxlQmFzZSogZXhlY3V0YWJsZSkKLXsKLSNpZiAhRU5BQkxFKFdFQkFTU0VNQkxZKQotICAg
IFVOVVNFRF9QQVJBTShleGVjdXRhYmxlKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0jZWxzZQotICAg
IHJldHVybiBleGVjdXRhYmxlLT5pc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSgpOwotI2VuZGlmCi19
Ci0KIGNsYXNzIEdldFN0YWNrVHJhY2VGdW5jdG9yIHsKIHB1YmxpYzoKICAgICBHZXRTdGFja1Ry
YWNlRnVuY3RvcihWTSYgdm0sIFZlY3RvcjxTdGFja0ZyYW1lPiYgcmVzdWx0cywgc2l6ZV90IHJl
bWFpbmluZ0NhcGFjaXR5KQpAQCAtNTM4LDE3ICs1MjgsMTUgQEAgcHVibGljOgogICAgIHsKICAg
ICAgICAgVk0mIHZtID0gbV92bTsKICAgICAgICAgaWYgKG1fcmVtYWluaW5nQ2FwYWNpdHlGb3JG
cmFtZUNhcHR1cmUpIHsKLSAgICAgICAgICAgIGlmICh2aXNpdG9yLT5pc0pTRnJhbWUoKQotICAg
ICAgICAgICAgICAgICYmICFpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSh2aXNpdG9yLT5jb2RlQmxv
Y2soKS0+b3duZXJFeGVjdXRhYmxlKCkpCi0gICAgICAgICAgICAgICAgJiYgIXZpc2l0b3ItPmNv
ZGVCbG9jaygpLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0J1aWx0aW5GdW5jdGlvbigpKSB7Cisg
ICAgICAgICAgICBpZiAodmlzaXRvci0+aXNKU0ZyYW1lKCkgJiYgIXZpc2l0b3ItPmNvZGVCbG9j
aygpLT51bmxpbmtlZENvZGVCbG9jaygpLT5pc0J1aWx0aW5GdW5jdGlvbigpKSB7CiAgICAgICAg
ICAgICAgICAgQ29kZUJsb2NrKiBjb2RlQmxvY2sgPSB2aXNpdG9yLT5jb2RlQmxvY2soKTsKICAg
ICAgICAgICAgICAgICBTdGFja0ZyYW1lIHMgPSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cm9u
ZzxKU09iamVjdD4odm0sIHZpc2l0b3ItPmNhbGxlZSgpKSwKICAgICAgICAgICAgICAgICAgICAg
Z2V0U3RhY2tGcmFtZUNvZGVUeXBlKHZpc2l0b3IpLAotICAgICAgICAgICAgICAgICAgICBTdHJv
bmc8U2NyaXB0RXhlY3V0YWJsZT4odm0sIGNvZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxl
KCkpLAorICAgICAgICAgICAgICAgICAgICBTdHJvbmc8U2NyaXB0RXhlY3V0YWJsZT4odm0sIGNv
ZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCkpLAogICAgICAgICAgICAgICAgICAgICBTdHJvbmc8
VW5saW5rZWRDb2RlQmxvY2s+KHZtLCBjb2RlQmxvY2stPnVubGlua2VkQ29kZUJsb2NrKCkpLAog
ICAgICAgICAgICAgICAgICAgICBjb2RlQmxvY2stPnNvdXJjZSgpLAotICAgICAgICAgICAgICAg
ICAgICBjb2RlQmxvY2stPm93bmVyU2NyaXB0RXhlY3V0YWJsZSgpLT5maXJzdExpbmUoKSwKKyAg
ICAgICAgICAgICAgICAgICAgY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5l
KCksCiAgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+Zmlyc3RMaW5lQ29sdW1uT2Zmc2V0
KCksCiAgICAgICAgICAgICAgICAgICAgIGNvZGVCbG9jay0+c291cmNlT2Zmc2V0KCksCiAgICAg
ICAgICAgICAgICAgICAgIHZpc2l0b3ItPmJ5dGVjb2RlT2Zmc2V0KCksCkBAIC02NDEsNyArNjI5
LDcgQEAgcHVibGljOgogICAgICAgICBtX2NvZGVCbG9jayA9IHZpc2l0b3ItPmNvZGVCbG9jaygp
OwogICAgICAgICB1bnNpZ25lZCBieXRlY29kZU9mZnNldCA9IHZpc2l0b3ItPmJ5dGVjb2RlT2Zm
c2V0KCk7CiAKLSAgICAgICAgaWYgKG1faXNUZXJtaW5hdGlvbiB8fCAhKG1faGFuZGxlciA9ICht
X2NvZGVCbG9jayAmJiAhaXNXZWJBc3NlbWJseUV4ZWN1dGFibGUobV9jb2RlQmxvY2stPm93bmVy
RXhlY3V0YWJsZSgpKSkgPyBtX2NvZGVCbG9jay0+aGFuZGxlckZvckJ5dGVjb2RlT2Zmc2V0KGJ5
dGVjb2RlT2Zmc2V0KSA6IG51bGxwdHIpKSB7CisgICAgICAgIGlmIChtX2lzVGVybWluYXRpb24g
fHwgIShtX2hhbmRsZXIgPSBtX2NvZGVCbG9jayA/IG1fY29kZUJsb2NrLT5oYW5kbGVyRm9yQnl0
ZWNvZGVPZmZzZXQoYnl0ZWNvZGVPZmZzZXQpIDogbnVsbHB0cikpIHsKICAgICAgICAgICAgIGlm
ICghdW53aW5kQ2FsbEZyYW1lKHZpc2l0b3IpKSB7CiAgICAgICAgICAgICAgICAgaWYgKExlZ2Fj
eVByb2ZpbGVyKiBwcm9maWxlciA9IHZtLmVuYWJsZWRQcm9maWxlcigpKQogICAgICAgICAgICAg
ICAgICAgICBwcm9maWxlci0+ZXhjZXB0aW9uVW53aW5kKG1fY2FsbEZyYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9TdGFja1Zpc2l0b3IuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKaW5kZXgg
M2YyYjkxNDA0NTFkNDg4MzRhOWY3MTAzMzQ2NGEyMTQ3ZDFiZGI3MC4uZDM3NmRiNDIxN2ZhNjFl
NmMzMmVhOWRhMjdhNzViZmIwMzMwYjNiNyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2ludGVycHJldGVyL1N0YWNrVmlzaXRvci5jcHAKQEAgLTIyMSw3ICsyMjEsNyBAQCBTdHJp
bmcgU3RhY2tWaXNpdG9yOjpGcmFtZTo6c291cmNlVVJMKCkKICAgICBjYXNlIENvZGVUeXBlOjpF
dmFsOgogICAgIGNhc2UgQ29kZVR5cGU6OkZ1bmN0aW9uOgogICAgIGNhc2UgQ29kZVR5cGU6Okds
b2JhbDogewotICAgICAgICBTdHJpbmcgc291cmNlVVJMID0gY29kZUJsb2NrKCktPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpLT5zb3VyY2VVUkwoKTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVSTCA9
IGNvZGVCbG9jaygpLT5vd25lckV4ZWN1dGFibGUoKS0+c291cmNlVVJMKCk7CiAgICAgICAgIGlm
ICghc291cmNlVVJMLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHRyYWNlTGluZSA9IHNvdXJjZVVS
TC5pbXBsKCk7CiAgICAgICAgIGJyZWFrOwpAQCAtMjkyLDExICsyOTIsMTEgQEAgdm9pZCBTdGFj
a1Zpc2l0b3I6OkZyYW1lOjpjb21wdXRlTGluZUFuZENvbHVtbih1bnNpZ25lZCYgbGluZSwgdW5z
aWduZWQmIGNvbHVtbikKICAgICB1bnNpZ25lZCBkaXZvdENvbHVtbiA9IDA7CiAgICAgcmV0cmll
dmVFeHByZXNzaW9uSW5mbyhkaXZvdCwgdW51c2VkU3RhcnRPZmZzZXQsIHVudXNlZEVuZE9mZnNl
dCwgZGl2b3RMaW5lLCBkaXZvdENvbHVtbik7CiAKLSAgICBsaW5lID0gZGl2b3RMaW5lICsgY29k
ZUJsb2NrLT5vd25lclNjcmlwdEV4ZWN1dGFibGUoKS0+Zmlyc3RMaW5lKCk7CisgICAgbGluZSA9
IGRpdm90TGluZSArIGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPmZpcnN0TGluZSgpOwog
ICAgIGNvbHVtbiA9IGRpdm90Q29sdW1uICsgKGRpdm90TGluZSA/IDEgOiBjb2RlQmxvY2stPmZp
cnN0TGluZUNvbHVtbk9mZnNldCgpKTsKIAotICAgIGlmIChjb2RlQmxvY2stPm93bmVyU2NyaXB0
RXhlY3V0YWJsZSgpLT5oYXNPdmVycmlkZUxpbmVOdW1iZXIoKSkKLSAgICAgICAgbGluZSA9IGNv
ZGVCbG9jay0+b3duZXJTY3JpcHRFeGVjdXRhYmxlKCktPm92ZXJyaWRlTGluZU51bWJlcigpOwor
ICAgIGlmIChjb2RlQmxvY2stPm93bmVyRXhlY3V0YWJsZSgpLT5oYXNPdmVycmlkZUxpbmVOdW1i
ZXIoKSkKKyAgICAgICAgbGluZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCktPm92ZXJy
aWRlTGluZU51bWJlcigpOwogfQogCiB2b2lkIFN0YWNrVmlzaXRvcjo6RnJhbWU6OnJldHJpZXZl
RXhwcmVzc2lvbkluZm8oaW50JiBkaXZvdCwgaW50JiBzdGFydE9mZnNldCwgaW50JiBlbmRPZmZz
ZXQsIHVuc2lnbmVkJiBsaW5lLCB1bnNpZ25lZCYgY29sdW1uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5kZXggY2I3YmJmNjFjOTE5NjE2MTI0ZGE2MmQx
YWI5OGM4NWY3OTExZjE1MS4uYTFmNzY1NjJiZDcwYjdmZWFhNmViYzlkZjIxNjkyYTBlYzg1ZWMz
NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC04
NDgsMjIgKzg0OCw5IEBAIGNoYXIqIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uTGlua0NhbGwoRXhl
Y1N0YXRlKiBleGVjQ2FsbGVlLCBDYWxsTGlua0luZm8qIGNhbGxMCiAKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7Ci0gICAg
aWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpIHsKKyAgICBpZiAoZXhlY3V0YWJsZS0+
aXNIb3N0RnVuY3Rpb24oKSkKICAgICAgICAgY29kZVB0ciA9IGV4ZWN1dGFibGUtPmVudHJ5cG9p
bnRGb3IoKnZtLCBraW5kLCBNdXN0Q2hlY2tBcml0eSwgY2FsbExpbmtJbmZvLT5yZWdpc3RlclBy
ZXNlcnZhdGlvbk1vZGUoKSk7Ci0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIH0gZWxzZSBp
ZiAoZXhlY3V0YWJsZS0+aXNXZWJBc3NlbWJseUV4ZWN1dGFibGUoKSkgewotICAgICAgICBXZWJB
c3NlbWJseUV4ZWN1dGFibGUqIHdlYkFzc2VtYmx5RXhlY3V0YWJsZSA9IHN0YXRpY19jYXN0PFdl
YkFzc2VtYmx5RXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwotICAgICAgICB3ZWJBc3NlbWJseUV4
ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24oZXhlY0NhbGxlZSk7Ci0gICAgICAgIGNvZGVC
bG9jayA9IHdlYkFzc2VtYmx5RXhlY3V0YWJsZS0+Y29kZUJsb2NrRm9yQ2FsbCgpOwotICAgICAg
ICBBU1NFUlQoY29kZUJsb2NrKTsKLSAgICAgICAgQXJpdHlDaGVja01vZGUgYXJpdHk7Ci0gICAg
ICAgIGlmIChleGVjQ2FsbGVlLT5hcmd1bWVudENvdW50SW5jbHVkaW5nVGhpcygpIDwgc3RhdGlj
X2Nhc3Q8c2l6ZV90Pihjb2RlQmxvY2stPm51bVBhcmFtZXRlcnMoKSkpCi0gICAgICAgICAgICBh
cml0eSA9IE11c3RDaGVja0FyaXR5OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBhcml0eSA9
IEFyaXR5Q2hlY2tOb3RSZXF1aXJlZDsKLSAgICAgICAgY29kZVB0ciA9IHdlYkFzc2VtYmx5RXhl
Y3V0YWJsZS0+ZW50cnlwb2ludEZvcigqdm0sIGtpbmQsIGFyaXR5LCBjYWxsTGlua0luZm8tPnJl
Z2lzdGVyUHJlc2VydmF0aW9uTW9kZSgpKTsKLSNlbmRpZgotICAgIH0gZWxzZSB7CisgICAgZWxz
ZSB7CiAgICAgICAgIEZ1bmN0aW9uRXhlY3V0YWJsZSogZnVuY3Rpb25FeGVjdXRhYmxlID0gc3Rh
dGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSk7CiAKICAgICAgICAgaWYg
KCFpc0NhbGwoa2luZCkgJiYgZnVuY3Rpb25FeGVjdXRhYmxlLT5jb25zdHJ1Y3RBYmlsaXR5KCkg
PT0gQ29uc3RydWN0QWJpbGl0eTo6Q2Fubm90Q29uc3RydWN0KSB7CkBAIC05MDksMzMgKzg5Niwx
NyBAQCBpbmxpbmUgY2hhciogdmlydHVhbEZvcldpdGhGdW5jdGlvbigKICAgICBKU1Njb3BlKiBz
Y29wZSA9IGZ1bmN0aW9uLT5zY29wZVVuY2hlY2tlZCgpOwogICAgIEV4ZWN1dGFibGVCYXNlKiBl
eGVjdXRhYmxlID0gZnVuY3Rpb24tPmV4ZWN1dGFibGUoKTsKICAgICBpZiAoVU5MSUtFTFkoIWV4
ZWN1dGFibGUtPmhhc0pJVENvZGVGb3Ioa2luZCkpKSB7Ci0gICAgICAgIGJvb2wgaXNXZWJBc3Nl
bWJseUV4ZWN1dGFibGUgPSBmYWxzZTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAg
IGlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlID0gZXhlY3V0YWJsZS0+aXNXZWJBc3NlbWJseUV4ZWN1
dGFibGUoKTsKLSNlbmRpZgotICAgICAgICBpZiAoIWlzV2ViQXNzZW1ibHlFeGVjdXRhYmxlKSB7
Ci0gICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0
YXRpY19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwotCi0gICAgICAgICAg
ICBpZiAoIWlzQ2FsbChraW5kKSAmJiBmdW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxp
dHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5OjpDYW5ub3RDb25zdHJ1Y3QpIHsKLSAgICAgICAgICAg
ICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5vdEFDb25zdHJ1Y3Rv
ckVycm9yKGV4ZWMsIGZ1bmN0aW9uKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJlaW50ZXJw
cmV0X2Nhc3Q8Y2hhcio+KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0aW9uRnJvbUNhbGxTbG93
UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkpOwotICAgICAgICAgICAg
fQorICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uRXhlY3V0YWJsZSA9IHN0YXRp
Y19jYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KGV4ZWN1dGFibGUpOwogCi0gICAgICAgICAgICBK
U09iamVjdCogZXJyb3IgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPnByZXBhcmVGb3JFeGVjdXRpb24o
ZXhlY0NhbGxlZSwgZnVuY3Rpb24sIHNjb3BlLCBraW5kKTsKLSAgICAgICAgICAgIGlmIChlcnJv
cikgewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXJy
b3IpOwotICAgICAgICAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNoYXIqPih2bS0+
Z2V0Q1RJU3R1Yih0aHJvd0V4Y2VwdGlvbkZyb21DYWxsU2xvd1BhdGhHZW5lcmF0b3IpLmNvZGUo
KS5leGVjdXRhYmxlQWRkcmVzcygpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsK
LSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSkg
ewotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
Tm90QUNvbnN0cnVjdG9yRXJyb3IoZXhlYywgZnVuY3Rpb24pKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRp
b25Gcm9tQ2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7
Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmICghaXNDYWxsKGtpbmQpICYmIGZ1bmN0aW9uRXhl
Y3V0YWJsZS0+Y29uc3RydWN0QWJpbGl0eSgpID09IENvbnN0cnVjdEFiaWxpdHk6OkNhbm5vdENv
bnN0cnVjdCkgeworICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBj
cmVhdGVOb3RBQ29uc3RydWN0b3JFcnJvcihleGVjLCBmdW5jdGlvbikpOworICAgICAgICAgICAg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHZtLT5nZXRDVElTdHViKHRocm93RXhjZXB0
aW9uRnJvbUNhbGxTbG93UGF0aEdlbmVyYXRvcikuY29kZSgpLmV4ZWN1dGFibGVBZGRyZXNzKCkp
OworICAgICAgICB9CiAKLSAgICAgICAgICAgIFdlYkFzc2VtYmx5RXhlY3V0YWJsZSogd2ViQXNz
ZW1ibHlFeGVjdXRhYmxlID0gc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlFeGVjdXRhYmxlKj4oZXhl
Y3V0YWJsZSk7Ci0gICAgICAgICAgICB3ZWJBc3NlbWJseUV4ZWN1dGFibGUtPnByZXBhcmVGb3JF
eGVjdXRpb24oZXhlY0NhbGxlZSk7Ci0jZW5kaWYKKyAgICAgICAgSlNPYmplY3QqIGVycm9yID0g
ZnVuY3Rpb25FeGVjdXRhYmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWNDYWxsZWUsIGZ1bmN0
aW9uLCBzY29wZSwga2luZCk7CisgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgZXhl
Yy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBlcnJvcik7CisgICAgICAgICAgICByZXR1cm4g
cmVpbnRlcnByZXRfY2FzdDxjaGFyKj4odm0tPmdldENUSVN0dWIodGhyb3dFeGNlcHRpb25Gcm9t
Q2FsbFNsb3dQYXRoR2VuZXJhdG9yKS5jb2RlKCkuZXhlY3V0YWJsZUFkZHJlc3MoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3IoCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0
L1JlcGF0Y2guY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9SZXBhdGNoLmNwcAppbmRl
eCBhZDRmZTcyNDA0YmRmODA1NWE2OGVhNjEyMDVkZGVkYWFlODg5ZDc2Li43Y2Y2NzA4YTRiMzZi
NjUyZmQyMjBlMDc0YzBhY2IwZmE0OWI1OTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L1JlcGF0Y2guY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvUmVw
YXRjaC5jcHAKQEAgLTE3NDIsMTMgKzE3NDIsOCBAQCB2b2lkIGxpbmtQb2x5bW9ycGhpY0NhbGwo
CiAgICAgICAgIGlmICh2YXJpYW50LmV4ZWN1dGFibGUoKS0+aXNIb3N0RnVuY3Rpb24oKSkKICAg
ICAgICAgICAgIGNvZGVCbG9jayA9IG51bGxwdHI7CiAgICAgICAgIGVsc2UgewotICAgICAgICAg
ICAgRXhlY3V0YWJsZUJhc2UqIGV4ZWN1dGFibGUgPSB2YXJpYW50LmV4ZWN1dGFibGUoKTsKLSNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgICAgICAgICBpZiAoZXhlY3V0YWJsZS0+aXNXZWJB
c3NlbWJseUV4ZWN1dGFibGUoKSkKLSAgICAgICAgICAgICAgICBjb2RlQmxvY2sgPSBqc0Nhc3Q8
V2ViQXNzZW1ibHlFeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNvZGVCbG9ja0ZvckNhbGwoKTsK
LSAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIGNvZGVCbG9jayA9IGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y29kZUJsb2NrRm9yQ2FsbCgp
OworICAgICAgICAgICAgY29kZUJsb2NrID0ganNDYXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KHZh
cmlhbnQuZXhlY3V0YWJsZSgpKS0+Y29kZUJsb2NrRm9yQ2FsbCgpOworICAgICAgICAgICAgCiAg
ICAgICAgICAgICAvLyBJZiB3ZSBjYW5ub3QgaGFuZGxlIGEgY2FsbGVlLCBhc3N1bWUgdGhhdCBp
dCdzIGJldHRlciBmb3IgdGhpcyB3aG9sZSB0aGluZyB0byBiZSBhCiAgICAgICAgICAgICAvLyB2
aXJ0dWFsIGNhbGwuCiAgICAgICAgICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudEluY2x1ZGlu
Z1RoaXMoKSA8IHN0YXRpY19jYXN0PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkp
IHx8IGNhbGxMaW5rSW5mby5jYWxsVHlwZSgpID09IENhbGxMaW5rSW5mbzo6Q2FsbFZhcmFyZ3Mg
fHwgY2FsbExpbmtJbmZvLmNhbGxUeXBlKCkgPT0gQ2FsbExpbmtJbmZvOjpDb25zdHJ1Y3RWYXJh
cmdzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQvTExJbnREYXRh
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludERhdGEuY3BwCmluZGV4IDcz
MTNmY2UyNDIwMGNjOTE2MTY5ZTgxNGEwYTA1OTMwYWFiYWE1M2QuLmU5MjZmNTJkYzc2ZDllZGUy
ZjBlM2E1YjNkYzI2YjMzNmE5MmY4NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludERhdGEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9M
TEludERhdGEuY3BwCkBAIC0xMzIsOCArMTMyLDggQEAgdm9pZCBEYXRhOjpwZXJmb3JtQXNzZXJ0
aW9ucyhWTSYgdm0pCiAgICAgQVNTRVJUKG1heEZyYW1lRXh0ZW50Rm9yU2xvd1BhdGhDYWxsID09
IDY0KTsKICNlbmRpZgogICAgIEFTU0VSVChTdHJpbmdUeXBlID09IDYpOwotICAgIEFTU0VSVChP
YmplY3RUeXBlID09IDE5KTsKLSAgICBBU1NFUlQoRmluYWxPYmplY3RUeXBlID09IDIwKTsKKyAg
ICBBU1NFUlQoT2JqZWN0VHlwZSA9PSAxOCk7CisgICAgQVNTRVJUKEZpbmFsT2JqZWN0VHlwZSA9
PSAxOSk7CiAgICAgQVNTRVJUKE1hc3F1ZXJhZGVzQXNVbmRlZmluZWQgPT0gMSk7CiAgICAgQVNT
RVJUKEltcGxlbWVudHNIYXNJbnN0YW5jZSA9PSAyKTsKICAgICBBU1NFUlQoSW1wbGVtZW50c0Rl
ZmF1bHRIYXNJbnN0YW5jZSA9PSA4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvbGxpbnQv
TExJbnRTbG93UGF0aHMuY3BwCmluZGV4IDI3Y2JjYzVkOTkyOGI2MzQ0MWE0ZDA3ZGI1NzA1MGUw
ZjhkYTQwYjYuLjJhMjQ4ODNjMjk4MzU0ZTRkYTBkNjYwZDAzZWMzYWE2MzhjYzQxZjMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9MTEludFNsb3dQYXRocy5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2xsaW50L0xMSW50U2xvd1BhdGhzLmNwcApAQCAtMTEx
NiwxNCArMTExNiw5IEBAIGlubGluZSBTbG93UGF0aFJldHVyblR5cGUgc2V0VXBDYWxsKEV4ZWNT
dGF0ZSogZXhlY0NhbGxlZSwgSW5zdHJ1Y3Rpb24qIHBjLCBDb2RlCiAKICAgICBNYWNyb0Fzc2Vt
YmxlckNvZGVQdHIgY29kZVB0cjsKICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IDA7Ci0gICAg
Ym9vbCBpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSA9IGZhbHNlOwotI2lmIEVOQUJMRShXRUJBU1NF
TUJMWSkKLSAgICBpc1dlYkFzc2VtYmx5RXhlY3V0YWJsZSA9IGV4ZWN1dGFibGUtPmlzV2ViQXNz
ZW1ibHlFeGVjdXRhYmxlKCk7Ci0jZW5kaWYKLQotICAgIGlmIChleGVjdXRhYmxlLT5pc0hvc3RG
dW5jdGlvbigpKSB7CisgICAgaWYgKGV4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCkpCiAgICAg
ICAgIGNvZGVQdHIgPSBleGVjdXRhYmxlLT5lbnRyeXBvaW50Rm9yKHZtLCBraW5kLCBNdXN0Q2hl
Y2tBcml0eSwgUmVnaXN0ZXJQcmVzZXJ2YXRpb25Ob3RSZXF1aXJlZCk7Ci0gICAgfSBlbHNlIGlm
ICghaXNXZWJBc3NlbWJseUV4ZWN1dGFibGUpIHsKKyAgICBlbHNlIHsKICAgICAgICAgRnVuY3Rp
b25FeGVjdXRhYmxlKiBmdW5jdGlvbkV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkV4
ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKIAogICAgICAgICBpZiAoIWlzQ2FsbChraW5kKSAmJiBm
dW5jdGlvbkV4ZWN1dGFibGUtPmNvbnN0cnVjdEFiaWxpdHkoKSA9PSBDb25zdHJ1Y3RBYmlsaXR5
OjpDYW5ub3RDb25zdHJ1Y3QpCkBAIC0xMTQwLDE5ICsxMTM1LDYgQEAgaW5saW5lIFNsb3dQYXRo
UmV0dXJuVHlwZSBzZXRVcENhbGwoRXhlY1N0YXRlKiBleGVjQ2FsbGVlLCBJbnN0cnVjdGlvbiog
cGMsIENvZGUKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYXJpdHkgPSBBcml0eUNoZWNrTm90
UmVxdWlyZWQ7CiAgICAgICAgIGNvZGVQdHIgPSBmdW5jdGlvbkV4ZWN1dGFibGUtPmVudHJ5cG9p
bnRGb3Iodm0sIGtpbmQsIGFyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk5vdFJlcXVpcmVkKTsK
LSAgICB9IGVsc2UgewotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLSAgICAgICAgV2ViQXNzZW1i
bHlFeGVjdXRhYmxlKiB3ZWJBc3NlbWJseUV4ZWN1dGFibGUgPSBzdGF0aWNfY2FzdDxXZWJBc3Nl
bWJseUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKTsKLSAgICAgICAgd2ViQXNzZW1ibHlFeGVjdXRh
YmxlLT5wcmVwYXJlRm9yRXhlY3V0aW9uKGV4ZWNDYWxsZWUpOwotICAgICAgICBjb2RlQmxvY2sg
PSB3ZWJBc3NlbWJseUV4ZWN1dGFibGUtPmNvZGVCbG9ja0ZvckNhbGwoKTsKLSAgICAgICAgQVNT
RVJUKGNvZGVCbG9jayk7Ci0gICAgICAgIEFyaXR5Q2hlY2tNb2RlIGFyaXR5OwotICAgICAgICBp
ZiAoZXhlY0NhbGxlZS0+YXJndW1lbnRDb3VudEluY2x1ZGluZ1RoaXMoKSA8IHN0YXRpY19jYXN0
PHNpemVfdD4oY29kZUJsb2NrLT5udW1QYXJhbWV0ZXJzKCkpKQotICAgICAgICAgICAgYXJpdHkg
PSBNdXN0Q2hlY2tBcml0eTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgYXJpdHkgPSBBcml0
eUNoZWNrTm90UmVxdWlyZWQ7Ci0gICAgICAgIGNvZGVQdHIgPSB3ZWJBc3NlbWJseUV4ZWN1dGFi
bGUtPmVudHJ5cG9pbnRGb3Iodm0sIGtpbmQsIGFyaXR5LCBSZWdpc3RlclByZXNlcnZhdGlvbk5v
dFJlcXVpcmVkKTsKLSNlbmRpZgogICAgIH0KICAgICAKICAgICBBU1NFUlQoISFjb2RlUHRyKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJl
dGVyLmFzbSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9sbGludC9Mb3dMZXZlbEludGVycHJldGVy
LmFzbQppbmRleCAxMzZjOTE2NjFmMjJkMmQ4MDkzYzE5OGM5YzViZDY2NDQzOGY1NDk2Li41YWQ4
MzQ2NWNkMWE0ZThmNGU5NjRhNjdlZDA4YTE1N2U3ZmEzNzVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvbGxpbnQvTG93TGV2ZWxJbnRlcnByZXRlci5hc20KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2xsaW50L0xvd0xldmVsSW50ZXJwcmV0ZXIuYXNtCkBAIC0xNjEsOCAr
MTYxLDggQEAgY29uc3QgU2xvd1B1dEFycmF5U3RvcmFnZVNoYXBlID0gMzAKIAogIyBUeXBlIGNv
bnN0YW50cy4KIGNvbnN0IFN0cmluZ1R5cGUgPSA2Ci1jb25zdCBPYmplY3RUeXBlID0gMTkKLWNv
bnN0IEZpbmFsT2JqZWN0VHlwZSA9IDIwCitjb25zdCBPYmplY3RUeXBlID0gMTgKK2NvbnN0IEZp
bmFsT2JqZWN0VHlwZSA9IDE5CiAKICMgVHlwZSBmbGFncyBjb25zdGFudHMuCiBjb25zdCBNYXNx
dWVyYWRlc0FzVW5kZWZpbmVkID0gMQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0NvbW1vblNsb3dQYXRocy5jcHAKaW5kZXggNzU4MDgzMzJlNGRkNDA4NDQyYTAzNDM3ZDU1
YzEwNWFjYzI5NWFiMS4uYWNiZTE0NjI5ZDI4NGVlODI1MTFmNzNjNTY4MDkxZGVkZjNiNDQ0ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uU2xvd1BhdGhz
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25TbG93UGF0aHMu
Y3BwCkBAIC01MjUsNyArNTI1LDcgQEAgU0xPV19QQVRIX0RFQ0woc2xvd19wYXRoX3RvX3ByaW1p
dGl2ZSkKIFNMT1dfUEFUSF9ERUNMKHNsb3dfcGF0aF9lbnRlcikKIHsKICAgICBCRUdJTigpOwot
ICAgIEV4ZWN1dGFibGVCYXNlKiBvd25lckV4ZWN1dGFibGUgPSBleGVjLT5jb2RlQmxvY2soKS0+
b3duZXJFeGVjdXRhYmxlKCk7CisgICAgU2NyaXB0RXhlY3V0YWJsZSogb3duZXJFeGVjdXRhYmxl
ID0gZXhlYy0+Y29kZUJsb2NrKCktPm93bmVyRXhlY3V0YWJsZSgpOwogICAgIEhlYXA6OmhlYXAo
b3duZXJFeGVjdXRhYmxlKS0+d3JpdGVCYXJyaWVyKG93bmVyRXhlY3V0YWJsZSk7CiAgICAgRU5E
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRh
YmxlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCmlu
ZGV4IGU0ODU0Nzk3NTY3ZGU4Y2RiZTk2NjE1NzAyZmI2ZTc1MWI2M2M1ZmQuLjFiOWE3M2Q3OTMz
OGFhMzkxNGYzZTQ1NDUxYmI2ZjlhMDBjYzkwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0V4ZWN1dGFibGUuY3BwCkBAIC0zMSwxMiArMzEsMTAgQEAKICNpbmNsdWRlICJE
RkdEcml2ZXIuaCIKICNpbmNsdWRlICJKSVQuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCi0j
aW5jbHVkZSAiSlNXQVNNTW9kdWxlLmgiCiAjaW5jbHVkZSAiTExJbnRFbnRyeXBvaW50LmgiCiAj
aW5jbHVkZSAiUGFyc2VyLmgiCiAjaW5jbHVkZSAiUHJvZmlsZXJEYXRhYmFzZS5oIgogI2luY2x1
ZGUgIlR5cGVQcm9maWxlci5oIgotI2luY2x1ZGUgIldBU01GdW5jdGlvblBhcnNlci5oIgogI2lu
Y2x1ZGUgPHd0Zi9Db21tYVByaW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtNTY0LDYyICs1NjIsNiBAQCBGdW5j
dGlvbkV4ZWN1dGFibGUqIEZ1bmN0aW9uRXhlY3V0YWJsZTo6ZnJvbUdsb2JhbENvZGUoCiAgICAg
cmV0dXJuIHVubGlua2VkRXhlY3V0YWJsZS0+bGluayhleGVjLnZtKCksIHNvdXJjZSwgb3ZlcnJp
ZGVMaW5lTnVtYmVyKTsKIH0KIAotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLWNvbnN0IENsYXNz
SW5mbyBXZWJBc3NlbWJseUV4ZWN1dGFibGU6OnNfaW5mbyA9IHsgIldlYkFzc2VtYmx5RXhlY3V0
YWJsZSIsICZFeGVjdXRhYmxlQmFzZTo6c19pbmZvLCAwLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFdl
YkFzc2VtYmx5RXhlY3V0YWJsZSkgfTsKLQotV2ViQXNzZW1ibHlFeGVjdXRhYmxlOjpXZWJBc3Nl
bWJseUV4ZWN1dGFibGUoVk0mIHZtLCBjb25zdCBTb3VyY2VDb2RlJiBzb3VyY2UsIEpTV0FTTU1v
ZHVsZSogbW9kdWxlLCB1bnNpZ25lZCBmdW5jdGlvbkluZGV4KQotICAgIDogRXhlY3V0YWJsZUJh
c2Uodm0sIHZtLndlYkFzc2VtYmx5RXhlY3V0YWJsZVN0cnVjdHVyZS5nZXQoKSwgTlVNX1BBUkFN
RVRFUlNfTk9UX0NPTVBJTEVEKQotICAgICwgbV9zb3VyY2Uoc291cmNlKQotICAgICwgbV9tb2R1
bGUodm0sIHRoaXMsIG1vZHVsZSkKLSAgICAsIG1fZnVuY3Rpb25JbmRleChmdW5jdGlvbkluZGV4
KQotewotfQotCi12b2lkIFdlYkFzc2VtYmx5RXhlY3V0YWJsZTo6ZGVzdHJveShKU0NlbGwqIGNl
bGwpCi17Ci0gICAgc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlFeGVjdXRhYmxlKj4oY2VsbCktPldl
YkFzc2VtYmx5RXhlY3V0YWJsZTo6fldlYkFzc2VtYmx5RXhlY3V0YWJsZSgpOwotfQotCi12b2lk
IFdlYkFzc2VtYmx5RXhlY3V0YWJsZTo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RW
aXNpdG9yJiB2aXNpdG9yKQotewotICAgIFdlYkFzc2VtYmx5RXhlY3V0YWJsZSogdGhpc09iamVj
dCA9IGpzQ2FzdDxXZWJBc3NlbWJseUV4ZWN1dGFibGUqPihjZWxsKTsKLSAgICBBU1NFUlRfR0Nf
T0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7Ci0gICAgRXhlY3V0YWJsZUJhc2U6
OnZpc2l0Q2hpbGRyZW4odGhpc09iamVjdCwgdmlzaXRvcik7Ci0gICAgaWYgKHRoaXNPYmplY3Qt
Pm1fY29kZUJsb2NrRm9yQ2FsbCkKLSAgICAgICAgdGhpc09iamVjdC0+bV9jb2RlQmxvY2tGb3JD
YWxsLT52aXNpdEFnZ3JlZ2F0ZSh2aXNpdG9yKTsKLSAgICB2aXNpdG9yLmFwcGVuZCgmdGhpc09i
amVjdC0+bV9tb2R1bGUpOwotfQotCi12b2lkIFdlYkFzc2VtYmx5RXhlY3V0YWJsZTo6Y2xlYXJD
b2RlKCkKLXsKLSAgICBtX2NvZGVCbG9ja0ZvckNhbGwgPSBudWxscHRyOwotICAgIEJhc2U6OmNs
ZWFyQ29kZSgpOwotfQotCi12b2lkIFdlYkFzc2VtYmx5RXhlY3V0YWJsZTo6cHJlcGFyZUZvckV4
ZWN1dGlvbihFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgaWYgKGhhc0pJVENvZGVGb3JDYWxsKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgRGVmZXJH
QyBkZWZlckdDKHZtLmhlYXApOwotCi0gICAgUmVmUHRyPFdlYkFzc2VtYmx5Q29kZUJsb2NrPiBj
b2RlQmxvY2sgPSBhZG9wdFJlZihuZXcgV2ViQXNzZW1ibHlDb2RlQmxvY2soCi0gICAgICAgIHRo
aXMsIHZtLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCkpKTsKLQotICAgIFdBU01GdW5jdGlv
blBhcnNlcjo6Y29tcGlsZSh2bSwgY29kZUJsb2NrLmdldCgpLCBtX21vZHVsZS5nZXQoKSwgbV9z
b3VyY2UsIG1fZnVuY3Rpb25JbmRleCk7Ci0KLSAgICBtX2ppdENvZGVGb3JDYWxsID0gY29kZUJs
b2NrLT5qaXRDb2RlKCk7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNrID0gTWFj
cm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0gICAgbV9qaXRDb2RlRm9yQ2FsbFdpdGhBcml0eUNoZWNr
QW5kUHJlc2VydmVSZWdzID0gTWFjcm9Bc3NlbWJsZXJDb2RlUHRyKCk7Ci0gICAgbV9udW1QYXJh
bWV0ZXJzRm9yQ2FsbCA9IGNvZGVCbG9jay0+bnVtUGFyYW1ldGVycygpOwotCi0gICAgbV9jb2Rl
QmxvY2tGb3JDYWxsID0gY29kZUJsb2NrOwotCi0gICAgSGVhcDo6aGVhcCh0aGlzKS0+d3JpdGVC
YXJyaWVyKHRoaXMpOwotfQotI2VuZGlmCi0KIHZvaWQgRXhlY3V0YWJsZUJhc2U6OmR1bXAoUHJp
bnRTdHJlYW0mIG91dCkgY29uc3QKIHsKICAgICBFeGVjdXRhYmxlQmFzZSogcmVhbFRoaXMgPSBj
b25zdF9jYXN0PEV4ZWN1dGFibGVCYXNlKj4odGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FeGVjdXRhYmxlLmgKaW5kZXggMTAyNmE1M2VhMGMxODk0ZTUyOGJkYjAxNzlmYzMz
NDVlZDNlOThmOS4uYjUxMzU0N2QwODMxY2E5NTE0MDkwM2ZjMDAyNjExMzBhM2M2NWY5YiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaApAQCAtNTAsMTEgKzUw
LDkgQEAgY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBFdmFsQ29kZUJs
b2NrOwogY2xhc3MgRnVuY3Rpb25Db2RlQmxvY2s7Ci1jbGFzcyBKU1Njb3BlOwotY2xhc3MgSlNX
QVNNTW9kdWxlOwogY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwogY2xhc3MgUHJvZ3JhbUNv
ZGVCbG9jazsKLWNsYXNzIFdlYkFzc2VtYmx5Q29kZUJsb2NrOworY2xhc3MgSlNTY29wZTsKICAg
ICAKIGVudW0gQ29tcGlsYXRpb25LaW5kIHsgRmlyc3RDb21waWxhdGlvbiwgT3B0aW1pemluZ0Nv
bXBpbGF0aW9uIH07CiAKQEAgLTk0LDE1ICs5MiwxNSBAQCBwdWJsaWM6CiAgICAgICAgIAogICAg
IENvZGVCbG9ja0hhc2ggaGFzaEZvcihDb2RlU3BlY2lhbGl6YXRpb25LaW5kKSBjb25zdDsKIAot
ICAgIGJvb2wgaXNFdmFsRXhlY3V0YWJsZSgpIGNvbnN0CisgICAgYm9vbCBpc0V2YWxFeGVjdXRh
YmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0gRXZhbEV4ZWN1dGFibGVUeXBl
OwogICAgIH0KLSAgICBib29sIGlzRnVuY3Rpb25FeGVjdXRhYmxlKCkgY29uc3QKKyAgICBib29s
IGlzRnVuY3Rpb25FeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0eXBlKCkgPT0g
RnVuY3Rpb25FeGVjdXRhYmxlVHlwZTsKICAgICB9Ci0gICAgYm9vbCBpc1Byb2dyYW1FeGVjdXRh
YmxlKCkgY29uc3QKKyAgICBib29sIGlzUHJvZ3JhbUV4ZWN1dGFibGUoKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIHR5cGUoKSA9PSBQcm9ncmFtRXhlY3V0YWJsZVR5cGU7CiAgICAgfQpAQCAtMTEz
LDEzICsxMTEsNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX251bVBhcmFtZXRlcnNGb3JD
YWxsID09IE5VTV9QQVJBTUVURVJTX0lTX0hPU1Q7CiAgICAgfQogCi0jaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQotICAgIGJvb2wgaXNXZWJBc3NlbWJseUV4ZWN1dGFibGUoKSBjb25zdAotICAgIHsK
LSAgICAgICAgcmV0dXJuIHR5cGUoKSA9PSBXZWJBc3NlbWJseUV4ZWN1dGFibGVUeXBlOwotICAg
IH0KLSNlbmRpZgotCiAgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiB2
bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90bykgeyByZXR1cm4g
U3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG8sIFR5cGVJbmZvKENlbGxU
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7IH0KICAgICAgICAgCiAgICAgdm9pZCBjbGVh
ckNvZGUoKTsKQEAgLTU2Nyw3ICs1NTgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBk
ZXN0cm95KEpTQ2VsbCopOwogICAgICAgICAKLSAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZSogdW5saW5rZWRFeGVjdXRhYmxlKCkgY29uc3QKKyAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0
YWJsZSogdW5saW5rZWRFeGVjdXRhYmxlKCkKICAgICB7CiAgICAgICAgIHJldHVybiBtX3VubGlu
a2VkRXhlY3V0YWJsZS5nZXQoKTsKICAgICB9CkBAIC02ODEsNTAgKzY3Miw2IEBAIHByaXZhdGU6
CiAgICAgV3JpdGVCYXJyaWVyPEluZmVycmVkVmFsdWU+IG1fc2luZ2xldG9uRnVuY3Rpb247CiB9
OwogCi0jaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQotY2xhc3MgV2ViQXNzZW1ibHlFeGVjdXRhYmxl
IGZpbmFsIDogcHVibGljIEV4ZWN1dGFibGVCYXNlIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEV4
ZWN1dGFibGVCYXNlIEJhc2U7Ci0gICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBTdHJ1Y3R1cmVJc0ltbW9ydGFsOwotCi0gICAg
c3RhdGljIFdlYkFzc2VtYmx5RXhlY3V0YWJsZSogY3JlYXRlKFZNJiB2bSwgY29uc3QgU291cmNl
Q29kZSYgc291cmNlLCBKU1dBU01Nb2R1bGUqIG1vZHVsZSwgdW5zaWduZWQgZnVuY3Rpb25JbmRl
eCkKLSAgICB7Ci0gICAgICAgIFdlYkFzc2VtYmx5RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IG5l
dyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFdlYkFzc2VtYmx5RXhlY3V0YWJsZT4odm0uaGVhcCkp
IFdlYkFzc2VtYmx5RXhlY3V0YWJsZSh2bSwgc291cmNlLCBtb2R1bGUsIGZ1bmN0aW9uSW5kZXgp
OwotICAgICAgICBleGVjdXRhYmxlLT5maW5pc2hDcmVhdGlvbih2bSk7Ci0gICAgICAgIHJldHVy
biBleGVjdXRhYmxlOwotICAgIH0KLQotICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVj
dHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG8p
Ci0gICAgewotICAgICAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVj
dCwgcHJvdG8sIFR5cGVJbmZvKFdlYkFzc2VtYmx5RXhlY3V0YWJsZVR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKLSAgICB9Ci0KLSAgICBzdGF0aWMgdm9pZCBkZXN0cm95KEpTQ2VsbCop
OwotCi0gICAgREVDTEFSRV9JTkZPOwotCi0gICAgdm9pZCBjbGVhckNvZGUoKTsKLQotICAgIHZv
aWQgcHJlcGFyZUZvckV4ZWN1dGlvbihFeGVjU3RhdGUqKTsKLQotICAgIFdlYkFzc2VtYmx5Q29k
ZUJsb2NrKiBjb2RlQmxvY2tGb3JDYWxsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX2NvZGVC
bG9ja0ZvckNhbGwuZ2V0KCk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIFdlYkFzc2VtYmx5RXhl
Y3V0YWJsZShWTSYsIGNvbnN0IFNvdXJjZUNvZGUmLCBKU1dBU01Nb2R1bGUqLCB1bnNpZ25lZCBm
dW5jdGlvbkluZGV4KTsKLQotICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwg
U2xvdFZpc2l0b3ImKTsKLQotICAgIFNvdXJjZUNvZGUgbV9zb3VyY2U7Ci0gICAgV3JpdGVCYXJy
aWVyPEpTV0FTTU1vZHVsZT4gbV9tb2R1bGU7Ci0gICAgdW5zaWduZWQgbV9mdW5jdGlvbkluZGV4
OwotCi0gICAgUmVmUHRyPFdlYkFzc2VtYmx5Q29kZUJsb2NrPiBtX2NvZGVCbG9ja0ZvckNhbGw7
Ci19OwotI2VuZGlmCi0KIGlubGluZSB2b2lkIEV4ZWN1dGFibGVCYXNlOjpjbGVhckNvZGVWaXJ0
dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogewogICAgIHN3aXRjaCAoZXhlY3V0YWJs
ZS0+dHlwZSgpKSB7CkBAIC03MzQsMTAgKzY4MSw2IEBAIGlubGluZSB2b2lkIEV4ZWN1dGFibGVC
YXNlOjpjbGVhckNvZGVWaXJ0dWFsKEV4ZWN1dGFibGVCYXNlKiBleGVjdXRhYmxlKQogICAgICAg
ICByZXR1cm4ganNDYXN0PFByb2dyYW1FeGVjdXRhYmxlKj4oZXhlY3V0YWJsZSktPmNsZWFyQ29k
ZSgpOwogICAgIGNhc2UgRnVuY3Rpb25FeGVjdXRhYmxlVHlwZToKICAgICAgICAgcmV0dXJuIGpz
Q2FzdDxGdW5jdGlvbkV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7Ci0jaWYg
RU5BQkxFKFdFQkFTU0VNQkxZKQotICAgIGNhc2UgV2ViQXNzZW1ibHlFeGVjdXRhYmxlVHlwZToK
LSAgICAgICAgcmV0dXJuIGpzQ2FzdDxXZWJBc3NlbWJseUV4ZWN1dGFibGUqPihleGVjdXRhYmxl
KS0+Y2xlYXJDb2RlKCk7Ci0jZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4ganND
YXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihleGVjdXRhYmxlKS0+Y2xlYXJDb2RlKCk7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBmODNh
ZGY4NWQxYWU3ZWUzMWNkYjM0MmY3MTUxNDE3OTNkZjdlYTVlLi4wZjczNTRlZDdhNmJkMWUzZTY0
YjE4NTg1OWMxNGYxNTAzMjZkNDU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0Z1bmN0aW9uLmNwcApAQCAtNjcsMTYgKzY3LDYgQEAgSlNGdW5jdGlvbiogSlNGdW5jdGlv
bjo6Y3JlYXRlKFZNJiB2bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3Bl
KgogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi1KU0Z1
bmN0aW9uKiBKU0Z1bmN0aW9uOjpjcmVhdGUoVk0mIHZtLCBXZWJBc3NlbWJseUV4ZWN1dGFibGUq
IGV4ZWN1dGFibGUsIEpTU2NvcGUqIHNjb3BlKQotewotICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8SlNGdW5jdGlvbj4odm0uaGVhcCkpIEpTRnVu
Y3Rpb24odm0sIGV4ZWN1dGFibGUsIHNjb3BlKTsKLSAgICBBU1NFUlQoZnVuY3Rpb24tPnN0cnVj
dHVyZSgpLT5nbG9iYWxPYmplY3QoKSk7Ci0gICAgZnVuY3Rpb24tPmZpbmlzaENyZWF0aW9uKHZt
KTsKLSAgICByZXR1cm4gZnVuY3Rpb247Ci19Ci0jZW5kaWYKLQogc3RhdGljIGlubGluZSBOYXRp
dmVFeGVjdXRhYmxlKiBnZXROYXRpdmVFeGVjdXRhYmxlKFZNJiB2bSwgTmF0aXZlRnVuY3Rpb24g
bmF0aXZlRnVuY3Rpb24sIEludHJpbnNpYyBpbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2
ZUNvbnN0cnVjdG9yKQogewogI2lmICFFTkFCTEUoSklUKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNGdW5jdGlvbi5oCmluZGV4IDAxY2UzNmE1ZTI3ZTRmMjRlZWY4ZjM5MTA4NDgx
YWNjZWVhZDgzNTcuLjkyODM1MGUyNDc4YzQ1ZjdiZjdlOGFhODRjOWVjM2E0ZTI1MmE4NmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmgKQEAgLTQwLDcgKzQw
LDYgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7
CiBjbGFzcyBOYXRpdmVFeGVjdXRhYmxlOwogY2xhc3MgU291cmNlQ29kZTsKLWNsYXNzIFdlYkFz
c2VtYmx5RXhlY3V0YWJsZTsKIG5hbWVzcGFjZSBERkcgewogY2xhc3MgU3BlY3VsYXRpdmVKSVQ7
CiBjbGFzcyBKSVRDb21waWxlcjsKQEAgLTc0LDkgKzczLDYgQEAgcHVibGljOgogICAgIEpTX0VY
UE9SVF9QUklWQVRFIHN0YXRpYyBKU0Z1bmN0aW9uKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVj
dCosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSwgTmF0aXZlU3RkRnVuY3Rpb24mJiwg
SW50cmluc2ljID0gTm9JbnRyaW5zaWMsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUNvbnN0cnVjdG9y
ID0gY2FsbEhvc3RGdW5jdGlvbkFzQ29uc3RydWN0b3IpOwogCiAgICAgc3RhdGljIEpTRnVuY3Rp
b24qIGNyZWF0ZShWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKLSNpZiBFTkFC
TEUoV0VCQVNTRU1CTFkpCi0gICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZShWTSYsIFdlYkFz
c2VtYmx5RXhlY3V0YWJsZSosIEpTU2NvcGUqKTsKLSNlbmRpZgogCiAgICAgc3RhdGljIEpTRnVu
Y3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5jdGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpT
R2xvYmFsT2JqZWN0Kik7CiAgICAgc3RhdGljIEpTRnVuY3Rpb24qIGNyZWF0ZUJ1aWx0aW5GdW5j
dGlvbihWTSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJiBuYW1lKTsKQEAgLTE0NywxMCArMTQzLDYgQEAgcHJvdGVjdGVkOgogICAgIEpTRnVuY3Rp
b24oVk0mLCBGdW5jdGlvbkV4ZWN1dGFibGUqLCBKU1Njb3BlKik7CiAgICAgSlNGdW5jdGlvbihW
TSYsIEZ1bmN0aW9uRXhlY3V0YWJsZSosIEpTU2NvcGUqLCBTdHJ1Y3R1cmUqKTsKIAotI2lmIEVO
QUJMRShXRUJBU1NFTUJMWSkKLSAgICBKU0Z1bmN0aW9uKFZNJiwgV2ViQXNzZW1ibHlFeGVjdXRh
YmxlKiwgSlNTY29wZSopOwotI2VuZGlmCi0KICAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwg
TmF0aXZlRXhlY3V0YWJsZSosIGludCBsZW5ndGgsIGNvbnN0IFN0cmluZyYgbmFtZSk7CiAgICAg
dXNpbmcgQmFzZTo6ZmluaXNoQ3JlYXRpb247CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCmluZGV4IDRmNzVhYjk3MDM1ODZmYjRmYmYz
NjQzODFiNjVmNWVkOGVmNTcxYTEuLmYwNTk1ODRjZjA3ZDdmZDY5ZWEyZGNmZTI3YjYzYjY0NGE4
ODQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rp
b25JbmxpbmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlv
bklubGluZXMuaApAQCAtNTIsMTUgKzUyLDYgQEAgaW5saW5lIEpTRnVuY3Rpb246OkpTRnVuY3Rp
b24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUsIEpTU2NvcGUqIHMKIHsK
IH0KIAotI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKLWlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0
aW9uKFZNJiB2bSwgV2ViQXNzZW1ibHlFeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBz
Y29wZSkKLSAgICA6IEJhc2Uodm0sIHNjb3BlLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0
aW9uU3RydWN0dXJlKCkpCi0gICAgLCBtX2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4ZWN1dGFibGUp
Ci0gICAgLCBtX3JhcmVEYXRhKCkKLXsKLX0KLSNlbmRpZgotCiBpbmxpbmUgRnVuY3Rpb25FeGVj
dXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAogewogICAgIEFTU0VSVCgh
aXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CkBAIC03NSwxMCArNjYsNiBAQCBpbmxpbmUgYm9v
bCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlvbigpIGNvbnN0CiAKIGlubGluZSBib29sIEpTRnVu
Y3Rpb246OmlzQnVpbHRpbkZ1bmN0aW9uKCkgY29uc3QKIHsKLSNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCi0gICAgaWYgKG1fZXhlY3V0YWJsZS0+aXNXZWJBc3NlbWJseUV4ZWN1dGFibGUoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCiAgICAgcmV0dXJuICFpc0hvc3RGdW5jdGlvbigp
ICYmIGpzRXhlY3V0YWJsZSgpLT5pc0J1aWx0aW5GdW5jdGlvbigpOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGUuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCmluZGV4IDE1OTZlNjU4NGM4YWViOGI3YzBjY2I0ZGEz
MDMwMjAwOThlNjk1ZmYuLjQwMzI2Y2UwZjMyOWZhN2M3YmJjOTlmNDQ2NDI4ZmU5NmM5MTI0YjMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZS5oCkBAIC00Miw3ICs0Miw2IEBA
IGVudW0gSlNUeXBlIDogdWludDhfdCB7CiAgICAgRXZhbEV4ZWN1dGFibGVUeXBlLAogICAgIFBy
b2dyYW1FeGVjdXRhYmxlVHlwZSwKICAgICBGdW5jdGlvbkV4ZWN1dGFibGVUeXBlLAotICAgIFdl
YkFzc2VtYmx5RXhlY3V0YWJsZVR5cGUsCiAKICAgICBVbmxpbmtlZEZ1bmN0aW9uRXhlY3V0YWJs
ZVR5cGUsCiAgICAgVW5saW5rZWRQcm9ncmFtQ29kZUJsb2NrVHlwZSwKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmNwcAppbmRleCBjNjM3ZTU2ZWJhMTdjZDk2ZGZmYmY4MTI1MDM1NTUwZmFk
ZTFmZmUzLi41YWY2Y2FmMjdkMzU5ZDkxZjQ3YzExNTY0NzU4NDIwOGI3ZjA0OTc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0yMjEsOSArMjIxLDYgQEAgVk06OlZNKFZN
VHlwZSB2bVR5cGUsIEhlYXBUeXBlIGhlYXBUeXBlKQogICAgIGV2YWxFeGVjdXRhYmxlU3RydWN0
dXJlLnNldCgqdGhpcywgRXZhbEV4ZWN1dGFibGU6OmNyZWF0ZVN0cnVjdHVyZSgqdGhpcywgMCwg
anNOdWxsKCkpKTsKICAgICBwcm9ncmFtRXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMsIFBy
b2dyYW1FeGVjdXRhYmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgZnVuY3Rpb25FeGVjdXRhYmxlU3RydWN0dXJlLnNldCgqdGhpcywgRnVuY3Rpb25FeGVjdXRh
YmxlOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7Ci0jaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQotICAgIHdlYkFzc2VtYmx5RXhlY3V0YWJsZVN0cnVjdHVyZS5zZXQoKnRoaXMs
IFdlYkFzc2VtYmx5RXhlY3V0YWJsZTo6Y3JlYXRlU3RydWN0dXJlKCp0aGlzLCAwLCBqc051bGwo
KSkpOwotI2VuZGlmCiAgICAgcmVnRXhwU3RydWN0dXJlLnNldCgqdGhpcywgUmVnRXhwOjpjcmVh
dGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAgICAgc3ltYm9sU3RydWN0dXJlLnNl
dCgqdGhpcywgU3ltYm9sOjpjcmVhdGVTdHJ1Y3R1cmUoKnRoaXMsIDAsIGpzTnVsbCgpKSk7CiAg
ICAgc3ltYm9sVGFibGVTdHJ1Y3R1cmUuc2V0KCp0aGlzLCBTeW1ib2xUYWJsZTo6Y3JlYXRlU3Ry
dWN0dXJlKCp0aGlzLCAwLCBqc051bGwoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgK
aW5kZXggZWEzZjg1NmEyZmMxZmM0YmFmNDkxNjAxZTg5ZDVmMGU4YzZkYmMzNS4uYmY5MjViNTk1
ZjkyMzkzNjJlZjg3OTE3MDNjM2U1MGEyNzJhYzI4MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9WTS5oCkBAIC0yNzksOSArMjc5LDYgQEAgcHVibGljOgogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+
IGV2YWxFeGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHByb2dyYW1F
eGVjdXRhYmxlU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IGZ1bmN0aW9uRXhlY3V0
YWJsZVN0cnVjdHVyZTsKLSNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCi0gICAgU3Ryb25nPFN0cnVj
dHVyZT4gd2ViQXNzZW1ibHlFeGVjdXRhYmxlU3RydWN0dXJlOwotI2VuZGlmCiAgICAgU3Ryb25n
PFN0cnVjdHVyZT4gcmVnRXhwU3RydWN0dXJlOwogICAgIFN0cm9uZzxTdHJ1Y3R1cmU+IHN5bWJv
bFN0cnVjdHVyZTsKICAgICBTdHJvbmc8U3RydWN0dXJlPiBzeW1ib2xUYWJsZVN0cnVjdHVyZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL0pTV0FTTU1vZHVsZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9kdWxlLmgKaW5kZXggNDY3YjNlNmEx
MWY2NTg0YWNlOGFkN2M0NDIwNzM4MGQxMzc4MjU4Zi4uYTcyNjZiNTdkYThkMzdlNzA2ZWFjZjA3
ODBjMmJkN2MwYmUxZjhkMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
SlNXQVNNTW9kdWxlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vSlNXQVNNTW9k
dWxlLmgKQEAgLTY0LDggKzY0LDYgQEAgcHVibGljOgogICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25E
ZWNsYXJhdGlvbj4mIGZ1bmN0aW9uRGVjbGFyYXRpb25zKCkgeyByZXR1cm4gbV9mdW5jdGlvbkRl
Y2xhcmF0aW9uczsgfQogICAgIFZlY3RvcjxXQVNNRnVuY3Rpb25Qb2ludGVyVGFibGU+JiBmdW5j
dGlvblBvaW50ZXJUYWJsZXMoKSB7IHJldHVybiBtX2Z1bmN0aW9uUG9pbnRlclRhYmxlczsgfQog
Ci0gICAgVmVjdG9yPFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPj4mIGZ1bmN0aW9ucygpIHsgcmV0
dXJuIG1fZnVuY3Rpb25zOyB9Ci0KIHByaXZhdGU6CiAgICAgSlNXQVNNTW9kdWxlKFZNJiB2bSwg
U3RydWN0dXJlKiBzdHJ1Y3R1cmUpCiAgICAgICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBhcnNlci5jcHAKaW5k
ZXggNzhhMWExOTJjZWM4ODQ3YWQxMTAzODg4MDJiYTMwY2ZjOTU3Y2ZhOS4uZDY4OWY1NmIxY2I4
MGZjNzE5MGJiNDk3YzA1Y2RlZDZiN2M0MzgzMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XQVNNRnVuY3Rpb25QYXJzZXIuY3BwCkBAIC0yOCw5ICsyOCw3IEBACiAKICNp
ZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAKLSNpbmNsdWRlICJDQ2FsbEhlbHBlcnMuaCIKICNpbmNs
dWRlICJKU1dBU01Nb2R1bGUuaCIKLSNpbmNsdWRlICJMaW5rQnVmZmVyLmgiCiAjaW5jbHVkZSAi
V0FTTUZ1bmN0aW9uU3ludGF4Q2hlY2tlci5oIgogCiAjZGVmaW5lIFBST1BBR0FURV9FUlJPUigp
IGRvIHsgaWYgKCFtX2Vycm9yTWVzc2FnZS5pc051bGwoKSkgcmV0dXJuIDA7IH0gd2hpbGUgKDAp
CkBAIC02MSwyNyArNTksNiBAQCBib29sIFdBU01GdW5jdGlvblBhcnNlcjo6Y2hlY2tTeW50YXgo
SlNXQVNNTW9kdWxlKiBtb2R1bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdQogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFdBU01GdW5jdGlvblBhcnNlcjo6Y29tcGlsZShWTSYgdm0sIENvZGVC
bG9jayogY29kZUJsb2NrLCBKU1dBU01Nb2R1bGUqIG1vZHVsZSwgY29uc3QgU291cmNlQ29kZSYs
IHNpemVfdCBmdW5jdGlvbkluZGV4KQotewotICAgIC8vIEZJWE1FOiBBY3R1YWxseSBjb21waWxl
IHRoZSBjb2RlLgotICAgIENDYWxsSGVscGVycyBqaXQoJnZtLCBjb2RlQmxvY2spOwotICAgIE1h
Y3JvQXNzZW1ibGVyOjpMYWJlbCBiZWdpbkxhYmVsID0gaml0LmxhYmVsKCk7Ci0gICAgaml0Lm1v
dmUoTWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW02NChKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
MCkpKSwgR1BSSW5mbzo6cmV0dXJuVmFsdWVHUFIpOwotICAgIGppdC5yZXQoKTsKLSAgICBNYWNy
b0Fzc2VtYmxlcjo6TGFiZWwgYXJpdHlDaGVjayA9IGppdC5sYWJlbCgpOwotICAgIGppdC5qdW1w
KGJlZ2luTGFiZWwpOwotCi0gICAgTGlua0J1ZmZlciBwYXRjaEJ1ZmZlcih2bSwgaml0LCBjb2Rl
QmxvY2ssIEpJVENvbXBpbGF0aW9uTXVzdFN1Y2NlZWQpOwotICAgIE1hY3JvQXNzZW1ibGVyQ29k
ZVB0ciB3aXRoQXJpdHlDaGVjayA9IHBhdGNoQnVmZmVyLmxvY2F0aW9uT2YoYXJpdHlDaGVjayk7
Ci0gICAgTWFjcm9Bc3NlbWJsZXI6OkNvZGVSZWYgcmVzdWx0ID0gRklOQUxJWkVfQ09ERShwYXRj
aEJ1ZmZlciwgKCJCYXNlbGluZSBKSVQgY29kZSBmb3IgV2ViQXNzZW1ibHkiKSk7Ci0gICAgY29k
ZUJsb2NrLT5zZXRKSVRDb2RlKGFkb3B0UmVmKG5ldyBEaXJlY3RKSVRDb2RlKHJlc3VsdCwgd2l0
aEFyaXR5Q2hlY2ssIEpJVENvZGU6OkJhc2VsaW5lSklUKSkpOwotICAgIGNvZGVCbG9jay0+Y2Fw
YWJpbGl0eUxldmVsKCk7Ci0KLSAgICB1aW50MzJfdCBzaWduYXR1cmVJbmRleCA9IG1vZHVsZS0+
ZnVuY3Rpb25EZWNsYXJhdGlvbnMoKVtmdW5jdGlvbkluZGV4XS5zaWduYXR1cmVJbmRleDsKLSAg
ICBjb25zdCBXQVNNU2lnbmF0dXJlJiBzaWduYXR1cmUgPSBtb2R1bGUtPnNpZ25hdHVyZXMoKVtz
aWduYXR1cmVJbmRleF07Ci0gICAgY29kZUJsb2NrLT5zZXROdW1QYXJhbWV0ZXJzKDEgKyBzaWdu
YXR1cmUuYXJndW1lbnRzLnNpemUoKSk7Ci19Ci0KIHRlbXBsYXRlIDxjbGFzcyBDb250ZXh0Pgog
Ym9vbCBXQVNNRnVuY3Rpb25QYXJzZXI6OnBhcnNlRnVuY3Rpb24oQ29udGV4dCYgY29udGV4dCkK
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01GdW5jdGlvblBh
cnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgK
aW5kZXggNzA0YzQ2YzlkOTRkNDA2NGFjZTdiNGY3Y2MxY2M4ZjM2MzgxYzU0Mi4uNGQ2MzEzYWZk
NzhjODBjNTc0MmVkMmY3MWFiNjVhNWZlNzVjNWI5MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV0FTTUZ1bmN0aW9uUGFyc2VyLmgKQEAgLTM2LDE0ICszNiwxMSBAQAogCiBu
YW1lc3BhY2UgSlNDIHsKIAotY2xhc3MgQ29kZUJsb2NrOwogY2xhc3MgSlNXQVNNTW9kdWxlOwot
Y2xhc3MgVk07CiAKIGNsYXNzIFdBU01GdW5jdGlvblBhcnNlciB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGJvb2wgY2hlY2tTeW50YXgoSlNXQVNNTW9kdWxlKiwgY29uc3QgU291cmNlQ29kZSYsIHNp
emVfdCBmdW5jdGlvbkluZGV4LCB1bnNpZ25lZCBzdGFydE9mZnNldEluU291cmNlLCB1bnNpZ25l
ZCYgZW5kT2Zmc2V0SW5Tb3VyY2UsIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKLSAgICBzdGF0aWMg
dm9pZCBjb21waWxlKFZNJiwgQ29kZUJsb2NrKiwgSlNXQVNNTW9kdWxlKiwgY29uc3QgU291cmNl
Q29kZSYsIHNpemVfdCBmdW5jdGlvbkluZGV4KTsKIAogcHJpdmF0ZToKICAgICBXQVNNRnVuY3Rp
b25QYXJzZXIoSlNXQVNNTW9kdWxlKiBtb2R1bGUsIGNvbnN0IFNvdXJjZUNvZGUmIHNvdXJjZSwg
c2l6ZV90IGZ1bmN0aW9uSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XQVNNTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dB
U01Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDY3ZTNhYTY0NmNlNmZkOTQ3ZmU5OGY0YzY1ZWVkMWRj
N2ZkNTE5MjAuLjUwZGJiOGU1MDliNmM3ZjQ1N2QxZDc2ZDYxNmNhODA0NTc1Y2E4YWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dBU01Nb2R1bGVQYXJzZXIuY3BwCkBAIC00
OSwxNyArNDksMTUgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAKLVdBU01Nb2R1bGVQYXJzZXI6OldB
U01Nb2R1bGVQYXJzZXIoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBTb3VyY2VDb2RlJiBzb3VyY2UpCi0gICAgOiBtX3ZtKHZtKQotICAgICwgbV9nbG9iYWxPYmpl
Y3Qodm0sIGdsb2JhbE9iamVjdCkKLSAgICAsIG1fc291cmNlKHNvdXJjZSkKK1dBU01Nb2R1bGVQ
YXJzZXI6OldBU01Nb2R1bGVQYXJzZXIoY29uc3QgU291cmNlQ29kZSYgc291cmNlKQorICAgIDog
bV9zb3VyY2Uoc291cmNlKQogICAgICwgbV9yZWFkZXIoc3RhdGljX2Nhc3Q8V2ViQXNzZW1ibHlT
b3VyY2VQcm92aWRlcio+KHNvdXJjZS5wcm92aWRlcigpKS0+ZGF0YSgpKQogewogfQogCi1KU1dB
U01Nb2R1bGUqIFdBU01Nb2R1bGVQYXJzZXI6OnBhcnNlKFN0cmluZyYgZXJyb3JNZXNzYWdlKQor
SlNXQVNNTW9kdWxlKiBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZShWTSYgdm0sIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIFN0cmluZyYgZXJyb3JNZXNzYWdlKQogewotICAgIG1fbW9kdWxl
LnNldChtX3ZtLCBKU1dBU01Nb2R1bGU6OmNyZWF0ZShtX3ZtLCBtX2dsb2JhbE9iamVjdC0+d2Fz
bU1vZHVsZVN0cnVjdHVyZSgpKSk7CisgICAgbV9tb2R1bGUuc2V0KHZtLCBKU1dBU01Nb2R1bGU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT53YXNtTW9kdWxlU3RydWN0dXJlKCkpKTsKICAgICBw
YXJzZU1vZHVsZSgpOwogICAgIGlmICghbV9lcnJvck1lc3NhZ2UuaXNOdWxsKCkpIHsKICAgICAg
ICAgZXJyb3JNZXNzYWdlID0gbV9lcnJvck1lc3NhZ2U7CkBAIC0yMTksNyArMjE3LDYgQEAgdm9p
ZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVjbGFyYXRpb25TZWN0aW9uKCkKICAg
ICB1aW50MzJfdCBudW1iZXJPZkZ1bmN0aW9uRGVjbGFyYXRpb25zOwogICAgIFJFQURfQ09NUEFD
VF9VSU5UMzJfT1JfRkFJTChudW1iZXJPZkZ1bmN0aW9uRGVjbGFyYXRpb25zLCAiQ2Fubm90IHJl
YWQgdGhlIG51bWJlciBvZiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuIik7CiAgICAgbV9tb2R1bGUt
PmZ1bmN0aW9uRGVjbGFyYXRpb25zKCkucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShudW1iZXJPZkZ1
bmN0aW9uRGVjbGFyYXRpb25zKTsKLSAgICBtX21vZHVsZS0+ZnVuY3Rpb25zKCkucmVzZXJ2ZUlu
aXRpYWxDYXBhY2l0eShudW1iZXJPZkZ1bmN0aW9uRGVjbGFyYXRpb25zKTsKICAgICBmb3IgKHVp
bnQzMl90IGkgPSAwOyBpIDwgbnVtYmVyT2ZGdW5jdGlvbkRlY2xhcmF0aW9uczsgKytpKSB7CiAg
ICAgICAgIFdBU01GdW5jdGlvbkRlY2xhcmF0aW9uIGZ1bmN0aW9uRGVjbGFyYXRpb247CiAgICAg
ICAgIFJFQURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChmdW5jdGlvbkRlY2xhcmF0aW9uLnNpZ25h
dHVyZUluZGV4LCAiQ2Fubm90IHJlYWQgdGhlIHNpZ25hdHVyZSBpbmRleC4iKTsKQEAgLTI2OCwx
MCArMjY1LDYgQEAgdm9pZCBXQVNNTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uRGVmaW5pdGlv
bihzaXplX3QgZnVuY3Rpb25JbmRleCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBtX3Jl
YWRlci5zZXRPZmZzZXQoZW5kT2Zmc2V0SW5Tb3VyY2UpOwotCi0gICAgV2ViQXNzZW1ibHlFeGVj
dXRhYmxlKiB3ZWJBc3NlbWJseUV4ZWN1dGFibGUgPSBXZWJBc3NlbWJseUV4ZWN1dGFibGU6OmNy
ZWF0ZShtX3ZtLCBtX3NvdXJjZSwgbV9tb2R1bGUuZ2V0KCksIGZ1bmN0aW9uSW5kZXgpOwotICAg
IEpTRnVuY3Rpb24qIGZ1bmN0aW9uID0gSlNGdW5jdGlvbjo6Y3JlYXRlKG1fdm0sIHdlYkFzc2Vt
Ymx5RXhlY3V0YWJsZSwgbV9nbG9iYWxPYmplY3QuZ2V0KCkpOwotICAgIG1fbW9kdWxlLT5mdW5j
dGlvbnMoKS51bmNoZWNrZWRBcHBlbmQoV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+KG1fdm0sIG1f
bW9kdWxlLmdldCgpLCBmdW5jdGlvbikpOwogfQogCiB2b2lkIFdBU01Nb2R1bGVQYXJzZXI6OnBh
cnNlRXhwb3J0U2VjdGlvbigpCkBAIC0yOTIsMTEgKzI4NSwxMSBAQCB2b2lkIFdBU01Nb2R1bGVQ
YXJzZXI6OnBhcnNlRXhwb3J0U2VjdGlvbigpCiAgICAgICAgIGZvciAodWludDMyX3QgZXhwb3J0
SW5kZXggPSAwOyBleHBvcnRJbmRleCA8IG51bWJlck9mRXhwb3J0czsgKytleHBvcnRJbmRleCkg
ewogICAgICAgICAgICAgU3RyaW5nIGV4cG9ydE5hbWU7CiAgICAgICAgICAgICBSRUFEX1NUUklO
R19PUl9GQUlMKGV4cG9ydE5hbWUsICJDYW5ub3QgcmVhZCB0aGUgZnVuY3Rpb24gZXhwb3J0IG5h
bWUuIik7CisgICAgICAgICAgICAvLyBGSVhNRTogQ2hlY2sgdGhhdCBleHBvcnROYW1lIGlzIGxl
Z2FsLgogICAgICAgICAgICAgdWludDMyX3QgZnVuY3Rpb25JbmRleDsKICAgICAgICAgICAgIFJF
QURfQ09NUEFDVF9VSU5UMzJfT1JfRkFJTChmdW5jdGlvbkluZGV4LCAiQ2Fubm90IHJlYWQgdGhl
IGZ1bmN0aW9uIGluZGV4LiIpOwogICAgICAgICAgICAgRkFJTF9JRl9GQUxTRShmdW5jdGlvbklu
ZGV4IDwgbV9tb2R1bGUtPmZ1bmN0aW9uRGVjbGFyYXRpb25zKCkuc2l6ZSgpLCAiVGhlIGZ1bmN0
aW9uIGluZGV4IGlzIGluY29ycmVjdC4iKTsKLSAgICAgICAgICAgIElkZW50aWZpZXIgaWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoJm1fdm0sIGV4cG9ydE5hbWUpOwotICAgICAg
ICAgICAgbV9tb2R1bGUtPnB1dERpcmVjdChtX3ZtLCBpZGVudGlmaWVyLCBtX21vZHVsZS0+ZnVu
Y3Rpb25zKClbZnVuY3Rpb25JbmRleF0uZ2V0KCkpOworICAgICAgICAgICAgLy8gRklYTUU6IEV4
cG9ydCB0aGUgZnVuY3Rpb24uCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAt
MzA3LDggKzMwMCw4IEBAIHZvaWQgV0FTTU1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnRTZWN0aW9u
KCkKIAogSlNXQVNNTW9kdWxlKiBwYXJzZVdlYkFzc2VtYmx5KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgU291cmNlQ29kZSYgc291cmNlLCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKIHsKLSAgICBXQVNN
TW9kdWxlUGFyc2VyIG1vZHVsZVBhcnNlcihleGVjLT52bSgpLCBleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCksIHNvdXJjZSk7Ci0gICAgcmV0dXJuIG1vZHVsZVBhcnNlci5wYXJzZShlcnJvck1l
c3NhZ2UpOworICAgIFdBU01Nb2R1bGVQYXJzZXIgV0FTTU1vZHVsZVBhcnNlcihzb3VyY2UpOwor
ICAgIHJldHVybiBXQVNNTW9kdWxlUGFyc2VyLnBhcnNlKGV4ZWMtPnZtKCksIGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSwgZXJyb3JNZXNzYWdlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2Vy
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XQVNNTW9kdWxlUGFyc2VyLmgKaW5kZXgg
ZTJmNGZiNzU4Yzk1MTM1M2Y4NjA4N2Q1OTA0YzVmMzYyNjNlZWZhYi4uMzBmMWE1NjU5ODhjNjAx
NGI1NDVmYzFjNmMyNmMwOTNkOGZiNTQwZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV0FTTU1vZHVsZVBhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dBU01Nb2R1bGVQYXJzZXIuaApAQCAtNDIsOCArNDIsOCBAQCBjbGFzcyBWTTsKIAogY2xh
c3MgV0FTTU1vZHVsZVBhcnNlciB7CiBwdWJsaWM6Ci0gICAgV0FTTU1vZHVsZVBhcnNlcihWTSYs
IEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU291cmNlQ29kZSYpOwotICAgIEpTV0FTTU1vZHVsZSog
cGFyc2UoU3RyaW5nJiBlcnJvck1lc3NhZ2UpOworICAgIFdBU01Nb2R1bGVQYXJzZXIoY29uc3Qg
U291cmNlQ29kZSYpOworICAgIEpTV0FTTU1vZHVsZSogcGFyc2UoVk0mLCBKU0dsb2JhbE9iamVj
dCosIFN0cmluZyYgZXJyb3JNZXNzYWdlKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlTW9k
dWxlKCk7CkBAIC01Nyw4ICs1Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJzZUZ1bmN0aW9u
RGVmaW5pdGlvbihzaXplX3QgZnVuY3Rpb25JbmRleCk7CiAgICAgdm9pZCBwYXJzZUV4cG9ydFNl
Y3Rpb24oKTsKIAotICAgIFZNJiBtX3ZtOwotICAgIFN0cm9uZzxKU0dsb2JhbE9iamVjdD4gbV9n
bG9iYWxPYmplY3Q7CiAgICAgY29uc3QgU291cmNlQ29kZSYgbV9zb3VyY2U7CiAgICAgV0FTTVJl
YWRlciBtX3JlYWRlcjsKICAgICBTdHJvbmc8SlNXQVNNTW9kdWxlPiBtX21vZHVsZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAppbmRleCAyOGU3NmIxODEzODY4MjJjM2RhZjI1YmY2
OTg3NDJmNDg4N2M0ZjYzLi45ODEyZjNiYzFhNzk0MTYxYzlkZWQyMjUzYzY0NDg3Y2E0ZWYxZThj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCkBAIC0xNDYzLDcgKzE0NjMsNyBA
QCBTdHJpbmcgSW50ZXJuYWxzOjpwYXJzZXJNZXRhRGF0YShEZXByZWNhdGVkOjpTY3JpcHRWYWx1
ZSB2YWx1ZSkKICAgICAgICAgR2V0Q2FsbGVyQ29kZUJsb2NrRnVuY3RvciBpdGVyOwogICAgICAg
ICBleGVjLT5pdGVyYXRlKGl0ZXIpOwogICAgICAgICBDb2RlQmxvY2sqIGNvZGVCbG9jayA9IGl0
ZXIuY29kZUJsb2NrKCk7Ci0gICAgICAgIGV4ZWN1dGFibGUgPSBjb2RlQmxvY2stPm93bmVyU2Ny
aXB0RXhlY3V0YWJsZSgpOworICAgICAgICBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4
ZWN1dGFibGUoKTsgCiAgICAgfSBlbHNlIGlmIChjb2RlLmlzRnVuY3Rpb24oKSkgewogICAgICAg
ICBKU0Z1bmN0aW9uKiBmdW5jT2JqID0gSlNDOjpqc0Nhc3Q8SlNGdW5jdGlvbio+KGNvZGUudG9P
YmplY3QoZXhlYykpOwogICAgICAgICBleGVjdXRhYmxlID0gZnVuY09iai0+anNFeGVjdXRhYmxl
KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>