<?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>148193</bug_id>
          
          <creation_ts>2015-08-19 14:53:35 -0700</creation_ts>
          <short_desc>Avoid double hash lookup in our JS bindings named property getter code</short_desc>
          <delta_ts>2015-08-25 03:08:53 -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>Bindings</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=148092</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>148425</dependson>
          <blocked>148209</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1119034</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-19 14:53:35 -0700</bug_when>
    <thetext>Avoid double hash lookup in our JS bindings named property getter code for performance reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119036</commentid>
    <comment_count>1</comment_count>
      <attachid>259409</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-19 14:58:14 -0700</bug_when>
    <thetext>Created attachment 259409
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119058</commentid>
    <comment_count>2</comment_count>
      <attachid>259415</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-19 15:30:17 -0700</bug_when>
    <thetext>Created attachment 259415
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119073</commentid>
    <comment_count>3</comment_count>
      <attachid>259415</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-19 16:04:00 -0700</bug_when>
    <thetext>Comment on attachment 259415
Patch

r=me

I wonder if Dromaeo will be faster now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119099</commentid>
    <comment_count>4</comment_count>
      <attachid>259415</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-19 17:06:39 -0700</bug_when>
    <thetext>Comment on attachment 259415
Patch

Clearing flags on attachment: 259415

Committed r188663: &lt;http://trac.webkit.org/changeset/188663&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119100</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-08-19 17:06:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119134</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-08-19 18:00:58 -0700</bug_when>
    <thetext>This broke the Windows build (see the EWS output? :-) )

The new file &quot;bindings/js/JSDOMNamedFlowCollectionCustom.cpp&quot; needed to be added to the JSBindingsAllInOne.cpp file, since the project settings told MSVC to not build the new file.

Fix landed in r188674.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1119156</commentid>
    <comment_count>7</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-08-19 19:02:22 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; This broke the Windows build (see the EWS output? :-) )
&gt; 
&gt; The new file &quot;bindings/js/JSDOMNamedFlowCollectionCustom.cpp&quot; needed to be
&gt; added to the JSBindingsAllInOne.cpp file, since the project settings told
&gt; MSVC to not build the new file.
&gt; 
&gt; Fix landed in r188674.

Sorry, I thought I had fixed it but I forgot about JSBindingsAllInOne.cpp.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259409</attachid>
            <date>2015-08-19 14:58:14 -0700</date>
            <delta_ts>2015-08-19 15:30:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148193-20150819145811.patch</filename>
            <type>text/plain</type>
            <size>57976</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU3MDFkYWRmMWI1MWMw
MmY2ZGE4MWM1ZmY2YTI1MDUwODkwZDZhYy4uZDRkNzQwOThhODBkZDQ5Y2ZjZDBkMjBjODY3ZDk3
OTg3ZmQ1YWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgZG91YmxlIGhhc2gg
bG9va3VwIGluIG91ciBKUyBiaW5kaW5ncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTkzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgZG91Ymxl
IGhhc2ggbG9va3VwIGluIG91ciBKUyBiaW5kaW5ncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgY29k
ZQorICAgICAgICBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgQWRkIG5ldyBmaWxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01OYW1lZEZs
b3dDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICBNb3ZlZCBjdXN0b20gbmFt
ZWQgZ2V0dGVyIGNvZGUgZm9yIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24gZnJvbSB0aGUKKyAgICAg
ICAgYmluZGluZ3MgZ2VuZXJhdG9yIHRvIGFuIGFjdHVhbCBjdXN0b20gYmluZGluZ3MgZmlsZS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgUmViYXNlbGluZSBiaW5kaW5n
cyB0ZXN0cy4KKwogMjAxNS0wOC0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUHVuY3R1YXRpb24gbmVhciBIaW5kaSB0ZXh0IGlz
IGdhcmJsZWQgd2hlbiBzdHlsZWQgd2l0aCB0aGUgc3lzdGVtIGZvbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggODQ2OGI2ZGQzYjc1YjMxODcxOTAxMDM0ZTc2Y2E1MjE2MGEwYmIyZS4uNTIyZWZk
MTVmNGQxNTYxNjg1MzY5YmQxNzkzNmQ0YmQ3MjE1ZjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTExMDgsNiArMTEwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dFRhc2suY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAor
ICAgIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NUGx1Z2luQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVz
cG9uc2UuY3BwCmluZGV4IGJiM2VlMzI3M2RmNGQwNWFmNjEzZjc5ZjNkYjQwMjg5ZDU1MmE3Y2Eu
LmMzODViZWYyNTc2NmNmM2E5MDcxZWIxYzY0ZWNiODg3NTQ2NmY5ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmNw
cApAQCAtMzksMTggKzM5LDEzIEBAIFJUQ1N0YXRzUmVzcG9uc2U6OlJUQ1N0YXRzUmVzcG9uc2Uo
KQogewogfQogCi1QYXNzUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiBSVENTdGF0c1Jlc3BvbnNlOjpu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorUmVmUHRyPFJUQ1N0YXRzUmVwb3J0
PiBSVENTdGF0c1Jlc3BvbnNlOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
ewogICAgIGlmIChtX2lkbWFwLmZpbmQobmFtZSkgIT0gbV9pZG1hcC5lbmQoKSkKICAgICAgICAg
cmV0dXJuIG1fcmVzdWx0W21faWRtYXAuZ2V0KG5hbWUpXTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotYm9vbCBSVENTdGF0c1Jlc3BvbnNlOjpjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2lkbWFwLmNvbnRhaW5zKG5hbWUpOwot
fQotCiBzaXplX3QgUlRDU3RhdHNSZXNwb25zZTo6YWRkUmVwb3J0KFN0cmluZyBpZCwgU3RyaW5n
IHR5cGUsIGRvdWJsZSB0aW1lc3RhbXApCiB7CiAgICAgbV9yZXN1bHQuYXBwZW5kKFJUQ1N0YXRz
UmVwb3J0OjpjcmVhdGUoaWQsIHR5cGUsIHRpbWVzdGFtcCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAppbmRleCBkNDFi
OWI4ZDU5M2JmMWFkOTM2ZmQ2NDRjOWQ2NDY0Y2FiODkwODAzLi5kNzA0YWMyY2UyZjJlMDA0MzZk
ZjYxMjlkODBlNTVjZmYyMTIwNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaApAQCAtNDUsOCArNDUsNyBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1N0YXRzUmVwb3J0Pj4mIHJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9OwogCi0gICAgUGFzc1JlZlB0cjxSVENTdGF0c1Jl
cG9ydD4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIGJvb2wgY2FuR2V0SXRl
bXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZlB0cjxSVENTdGF0c1JlcG9y
dD4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgdmlydHVhbCBzaXplX3Qg
YWRkUmVwb3J0KFN0cmluZyBpZCwgU3RyaW5nIHR5cGUsIGRvdWJsZSB0aW1lc3RhbXApIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9ydCwgU3RyaW5n
IG5hbWUsIFN0cmluZyB2YWx1ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMmJlNjEzZTY2MjIxOTdmZmE5YmJi
MzZkYThmYTFlMmRkZjRkMTBjOS4uMDZhMjBkZWMzMDE3MmNhMGQ1MzEzZDE5MzJmYmI3Mjg4YmEz
NGY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMTY4Myw2ICsxNjgzLDcgQEAKIAkJNDVGRUE1RDAxNTZEREU4QzAwNjU0MTAx
IC8qIERlY2ltYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ1RkVBNUNFMTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDYzNDU5MkMxQUMyMjcxMDAwRUNC
NzFDIC8qIFBvd2VyT2JzZXJ2ZXJNYWMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNDYzNDU5MkIxQUMyMjcxMDAwRUNCNzFDIC8qIFBvd2VyT2JzZXJ2
ZXJNYWMuY3BwICovOyB9OwogCQk0NjM0NTkyRTFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGlt
ZXJDRi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
NjM0NTkyRDFBQzIyNzNDMDBFQ0I3MUMgLyogU2hhcmVkVGltZXJDRi5jcHAgKi87IH07CisJCTQ2
NjlCMjg3MUI4NTJBMEIwMDBGOTA1RiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb25DdXN0b20u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZGMjc2
OEUxQjg1Mjk3RjAwNUMyNTU2IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAg
Ki87IH07CiAJCTQ2ODlGMUFGMTI2N0JBRTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2ODlGMUFFMTI2N0JB
RTEwMEU4RDM4MCAvKiBGaWxlTWV0YWRhdGEuaCAqLzsgfTsKIAkJNDZDODNFRkQxQTlCQkUyOTAw
QTc5QTQxIC8qIEdlb05vdGlmaWVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ2QzgzRUZCMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5j
cHAgKi87IH07CiAJCTQ2QzgzRUZFMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDZDODNFRkMxQTlC
QkUyOTAwQTc5QTQxIC8qIEdlb05vdGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTg5MzUsNiArODkzNiw3IEBACiAJCTQ2REI3RDU5MUIy
MEZFNTgwMDU2NTFCMiAvKiBWTm9kZVRyYWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVk5vZGVUcmFja2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2
REJCNjRFMUFCOEM5NkYwMEQ5QTgxMyAvKiBQb3dlck9ic2VydmVyTWFjLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvd2VyT2JzZXJ2ZXJNYWMuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNDZFQkVBMDExQjdENEQ1RDAwQkU0OTQxIC8qIENvbGxlY3Rpb25UcmF2
ZXJzYWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29sbGVjdGlvblRyYXZl
cnNhbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0NkYyNzY4RTFCODUyOTdGMDA1
QzI1NTYgLyogSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ5MDcwN0U0MTIxOUMwNDMwMEQ5MEU1
MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTQ5MDcwN0U1MTIxOUMwNDMwMEQ5MEU1MSAvKiBBTkdMRVdlYktpdEJyaWRnZS5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBTkdMRVdlYktpdEJyaWRnZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0OTI5MUU0QTEzNDE3MkM4MDBFNzUzREUgLyogSW1hZ2VS
ZW5kZXJpbmdNb2RlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEltYWdlUmVu
ZGVyaW5nTW9kZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjEzNjMsNiArMjEz
NjUsNyBAQAogCQkJCUUxQzM2QzAyMEVCMDc2RDYwMDc0MTBCQyAvKiBKU0RPTUdsb2JhbE9iamVj
dC5oICovLAogCQkJCTdDMkJERDNCMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2JhbE9iamVj
dFRhc2suY3BwICovLAogCQkJCTdDMkJERDNDMTdDN0Y5OEIwMDM4RkYxNSAvKiBKU0RPTUdsb2Jh
bE9iamVjdFRhc2suaCAqLywKKwkJCQk0NkYyNzY4RTFCODUyOTdGMDA1QzI1NTYgLyogSlNET01O
YW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKIAkJCQlFMTcyQUY4RDE4MTFCQzM3MDBG
QkFEQjkgLyogSlNET01Qcm9taXNlLmNwcCAqLywKIAkJCQlFMTcyQUY4RTE4MTFCQzM3MDBGQkFE
QjkgLyogSlNET01Qcm9taXNlLmggKi8sCiAJCQkJQkM2OTMyNzEwRDdFMjkzOTAwQUU0NEQxIC8q
IEpTRE9NV2luZG93QmFzZS5jcHAgKi8sCkBAIC0zMDAxMSw2ICszMDAxNCw3IEBACiAJCQkJQThE
RjRBRUMwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxlLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTZFRDg3OEM0MTQ3NDkzRjQwMDRDMzU5NyAvKiBSZW5kZXJUYWJsZUNhcHRpb24uY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThERjRBRUEwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxl
Q2VsbC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyog
SlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4
REY0QUU4MDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZUNvbC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQlBOERGNEFGMDA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVSb3cuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQThERjRBRUQwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRlclRhYmxl
U2VjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCmluZGV4IDcwMzFiYTFjZDE2
MWM2OWIyOWFkZWQ5OGU0N2MwZWZkZTI4ODhjOGUuLjQzMTJhZTI3Njk1ZTI4NmY3NzkyYjQwZTNk
ZDVjNzg2ZTgzNjljMDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcApAQCAtMjksMTcgKzI5LDE0IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTU1pbWVU
eXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBET01NaW1lVHlwZUFycmF5
KiBtaW1lVHlwZUFycmF5LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTU1p
bWVUeXBlQXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJv
cGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gbWltZVR5cGVBcnJheS0+
Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOwotfQorICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLUVuY29kZWRKU1ZhbHVlIEpTRE9NTWltZVR5cGVBcnJheTo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgSlNET01NaW1lVHlwZUFycmF5KiB0aGlz
T2JqID0ganNEeW5hbWljQ2FzdDxKU0RPTU1pbWVUeXBlQXJyYXkqPihzbG90QmFzZSk7Ci0gICAg
aWYgKCF0aGlzT2JqKQotICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTsKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0
KCksIHRoaXNPYmotPmltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSkpKTsKKyAgICB2YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCks
IGl0ZW0pOworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU5hbWVkRmxvd0NvbGxl
Y3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01OYW1lZEZs
b3dDb2xsZWN0aW9uQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNzJiYWQzNWMxNDBjM2VkYzMzYTM5
ZGNiZWQ5NGRkNjIwMjM4MTJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMCwwICsxLDQ3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTRE9NTmFt
ZWRGbG93Q29sbGVjdGlvbi5oIgorCisjaW5jbHVkZSAiRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5o
IgorI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgorI2luY2x1ZGUgIkpTV2ViS2l0TmFtZWRGbG93
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworYm9v
bCBKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKK3sKKyAgICBhdXRvIGl0
ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpOworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdmFs
dWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpdGVtKTsKKyAgICByZXR1cm4gdHJ1ZTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAppbmRleCAxNjgyODdhY2Q2MGJi
YmIyNzljODlhNjIzMjI4YTFkNWFiMjdiYWI2Li4yNjY5ZDgzN2RmMjkzNDY1MjM1YTg5NDI1MTQy
ZWY2YzE3NDk4MzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVBsdWdpbkFycmF5Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcApAQCAtMjksMTUgKzI5LDE0IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTVBsdWdpbkFycmF5
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgRE9NUGx1Z2luQXJyYXkqIHBsdWdpbkFy
cmF5LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0RPTVBsdWdpbkFycmF5Ojpu
YW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNW
YWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbkFycmF5LT5jYW5HZXRJdGVtc0Zvck5h
bWUocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci19CisgICAgYXV0
byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotRW5j
b2RlZEpTVmFsdWUgSlNET01QbHVnaW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCi17Ci0gICAgSlNET01QbHVnaW5BcnJheSogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTVBs
dWdpbkFycmF5Kj4oc2xvdEJhc2UpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhl
eGVjLCB0aGlzT2JqLT5nbG9iYWxPYmplY3QoKSwgdGhpc09iai0+aW1wbCgpLm5hbWVkSXRlbShw
cm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKSkpOworICAgIHZhbHVlID0g
dG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaXRlbSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NUGx1Z2luQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NUGx1Z2luQ3VzdG9tLmNwcAppbmRleCBmYjdkYTA2ODFjNGVmMDc5NzdmZmI3NTE3YmQ0
MTFiZGFkZTk2Y2U0Li4xYTc1ODZkYmZmYzAzMjNiODExYjU1N2UzOWY1NThiNzBiY2YwM2U3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5DdXN0b20uY3Bw
CkBAIC0yNywxNSArMjcsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogCi1ib29sIEpTRE9NUGx1Z2luOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRl
KiwgRE9NUGx1Z2luKiBwbHVnaW4sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpT
RE9NUGx1Z2luOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIHBsdWdpbi0+Y2FuR2V0SXRl
bXNGb3JOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotfQor
ICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJp
bmcocHJvcGVydHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLUVuY29kZWRKU1ZhbHVlIEpTRE9NUGx1Z2luOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhl
YywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3Bl
cnR5TmFtZSkKLXsKLSAgICBKU0RPTVBsdWdpbiogdGhpc09iaiA9IGpzQ2FzdDxKU0RPTVBsdWdp
bio+KHNsb3RCYXNlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgdGhp
c09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpKTsKKyAgICB2YWx1ZSA9IHRvSlMoZXhl
YywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pOworICAgIHJldHVybiB0cnVlOwogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDJkNTYzMGVhNzAxOWQzNjg3YWZh
ZTM5N2Q3YzhlZWViOGM2Mjc3OGMuLjc1Y2ZlNWY2NmNiZDBiMzE0MTU4NjMzMzQxMjI0NTcwMjYy
YmQzNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENv
bGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEFsbENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC04OCwxNSArODgsMTQgQEAgQ2FsbFR5cGUgSlNI
VE1MQWxsQ29sbGVjdGlvbjo6Z2V0Q2FsbERhdGEoSlNDZWxsKiwgQ2FsbERhdGEmIGNhbGxEYXRh
KQogICAgIHJldHVybiBDYWxsVHlwZUhvc3Q7CiB9CiAKLWJvb2wgSlNIVE1MQWxsQ29sbGVjdGlv
bjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxBbGxDb2xsZWN0aW9uKiBjb2xs
ZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxBbGxDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLX0KKyAgICBKU1Zh
bHVlIGl0ZW1zID0gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUpOworICAgIGlm
IChpdGVtcy5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLUVuY29kZWRK
U1ZhbHVlIEpTSFRNTEFsbENvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBK
U09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lKQotewotICAgIEpTSFRNTEFsbENvbGxlY3Rpb24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1M
QWxsQ29sbGVjdGlvbio+KHNsb3RCYXNlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5h
bWVkSXRlbXMoZXhlYywgdGhpc09iaiwgcHJvcGVydHlOYW1lKSk7CisgICAgdmFsdWUgPSBpdGVt
czsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpp
dGVtKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggMzY0MDI0ZjJkNzI1ZmEyNDkxZmM5
MWJkMmZiN2QxN2VmNDMyZDNiZC4uNzI3OWE5NDUwYTE3MTM0MDUzZjY4MzAyNWMzYzEwODdkYTUw
NzkwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29sbGVj
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MQ29s
bGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQwLDE4ICs0MCwxNyBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNIVE1MQ29sbGVjdGlvbjo6Y2FuR2V0
SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxDb2xsZWN0aW9uKiBjb2xsZWN0aW9uLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxDb2xsZWN0aW9uOjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24tPmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVU
b0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLX0KKyAgICBBU1NFUlRfV0lUSF9NRVNTQUdF
KGltcGwoKS50eXBlKCkgIT0gRm9ybUNvbnRyb2xzLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNsYXNz
JyBuYW1lR2V0dGVyIik7CisgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShpbXBsKCkudHlwZSgpICE9
IFNlbGVjdE9wdGlvbnMsICJTaG91bGQgY2FsbCB0aGUgc3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsK
IAotRW5jb2RlZEpTVmFsdWUgSlNIVE1MQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCi17Ci0gICAgSlNIVE1MQ29sbGVjdGlvbiogY29sbGVjdGlvbiA9IGpzQ2Fz
dDxKU0hUTUxDb2xsZWN0aW9uKj4oc2xvdEJhc2UpOwotICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
Y29sbGVjdGlvbi0+aW1wbCgpLnR5cGUoKSAhPSBGb3JtQ29udHJvbHMsICJTaG91bGQgY2FsbCB0
aGUgc3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKLSAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKGNvbGxl
Y3Rpb24tPmltcGwoKS50eXBlKCkgIT0gU2VsZWN0T3B0aW9ucywgIlNob3VsZCBjYWxsIHRoZSBz
dWJjbGFzcycgbmFtZUdldHRlciIpOwotICAgIGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSA9IHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2JhbE9iamVjdCgpLCBjb2xsZWN0
aW9uLT5pbXBsKCkubmFtZWRJdGVtKG5hbWUpKSk7CisgICAgYXV0byBpdGVtID0gaW1wbCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBp
ZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlID0gdG9KUyhleGVj
LCBnbG9iYWxPYmplY3QoKSwgaXRlbSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEpTVmFsdWUg
dG9KUyhFeGVjU3RhdGUqLCBKU0RPTUdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBIVE1MQ29s
bGVjdGlvbiogY29sbGVjdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAppbmRleCA2ZDM5YzQ1OWQ3ZDI1NTU0YTk3ZGU0ZGI3
MjRkMzE2NWMyOTMzZGIyLi4wNTJhNTQ2NTdlMGQ2N2E1ODRiNTc2OGQ3YTliNjM5YjE5OWFhOTkw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1
c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRD
dXN0b20uY3BwCkBAIC01MiwxMiArNTIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5n
IG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLWJvb2wgSlNIVE1MRG9jdW1lbnQ6OmNhbkdldEl0ZW1z
Rm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MRG9jdW1lbnQqIGRvY3VtZW50LCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQotewotICAgIEF0b21pY1N0cmluZ0ltcGwqIGF0b21pY1Byb3BlcnR5TmFt
ZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7Ci0gICAgcmV0dXJuIGF0b21pY1Byb3BlcnR5
TmFtZSAmJiBkb2N1bWVudC0+aGFzRG9jdW1lbnROYW1lZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFt
ZSk7Ci19Ci0KIGJvb2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVj
dCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIFBy
b3BlcnR5U2xvdCYgc2xvdCkKIHsKICAgICBKU0hUTUxEb2N1bWVudCogdGhpc09iamVjdCA9IGpz
Q2FzdDxKU0hUTUxEb2N1bWVudCo+KG9iamVjdCk7CkBAIC03MSw4ICs2NSw5IEBAIGJvb2wgSlNI
VE1MRG9jdW1lbnQ6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3Rh
dGUqIGV4ZWMsIFByb3BlCiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGlmIChj
YW5HZXRJdGVtc0Zvck5hbWUoZXhlYywgJnRoaXNPYmplY3QtPmltcGwoKSwgcHJvcGVydHlOYW1l
KSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRE
ZWxldGUgfCBEb250RW51bSwgdGhpc09iamVjdC0+bmFtZUdldHRlcik7CisgICAgSlNWYWx1ZSB2
YWx1ZTsKKyAgICBpZiAodGhpc09iamVjdC0+bmFtZUdldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKSkgeworICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtLCB2YWx1ZSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IH0KIApAQCAtODQsMjggKzc5LDMxIEBAIGJvb2wgSlNIVE1MRG9jdW1lbnQ6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlCiAgICAgcmV0
dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdCh0aGlzT2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5h
bWUsIHNsb3QpOwogfQogCi1FbmNvZGVkSlNWYWx1ZSBKU0hUTUxEb2N1bWVudDo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTERvY3VtZW50OjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFs
dWUpCiB7Ci0gICAgSlNIVE1MRG9jdW1lbnQqIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MRG9jdW1l
bnQqPihzbG90QmFzZSk7Ci0gICAgSFRNTERvY3VtZW50JiBkb2N1bWVudCA9IHRoaXNPYmotPmlt
cGwoKTsKKyAgICBhdXRvJiBkb2N1bWVudCA9IGltcGwoKTsKIAogICAgIEF0b21pY1N0cmluZ0lt
cGwqIGF0b21pY1Byb3BlcnR5TmFtZSA9IHByb3BlcnR5TmFtZS5wdWJsaWNOYW1lKCk7CiAgICAg
aWYgKCFhdG9taWNQcm9wZXJ0eU5hbWUgfHwgIWRvY3VtZW50Lmhhc0RvY3VtZW50TmFtZWRJdGVt
KCphdG9taWNQcm9wZXJ0eU5hbWUpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpZiAoVU5MSUtFTFko
ZG9jdW1lbnQuZG9jdW1lbnROYW1lZEl0ZW1Db250YWluc011bHRpcGxlRWxlbWVudHMoKmF0b21p
Y1Byb3BlcnR5TmFtZSkpKSB7CiAgICAgICAgIFJlZjxIVE1MQ29sbGVjdGlvbj4gY29sbGVjdGlv
biA9IGRvY3VtZW50LmRvY3VtZW50TmFtZWRJdGVtcyhhdG9taWNQcm9wZXJ0eU5hbWUpOwogICAg
ICAgICBBU1NFUlQoY29sbGVjdGlvbi0+bGVuZ3RoKCkgPiAxKTsKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBXVEY6Omdl
dFB0cihjb2xsZWN0aW9uKSkpOworICAgICAgICB2YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2Jq
ZWN0KCksIFdURjo6Z2V0UHRyKGNvbGxlY3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCiAgICAgRWxlbWVudCogZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50TmFtZWRJdGVt
KCphdG9taWNQcm9wZXJ0eU5hbWUpOwogICAgIGlmIChVTkxJS0VMWShpczxIVE1MSUZyYW1lRWxl
bWVudD4oKmVsZW1lbnQpKSkgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG93bmNhc3Q8
SFRNTElGcmFtZUVsZW1lbnQ+KCplbGVtZW50KS5jb250ZW50RnJhbWUoKSkKLSAgICAgICAgICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBmcmFtZSkpOworICAgICAgICBpZiAo
RnJhbWUqIGZyYW1lID0gZG93bmNhc3Q8SFRNTElGcmFtZUVsZW1lbnQ+KCplbGVtZW50KS5jb250
ZW50RnJhbWUoKSkgeworICAgICAgICAgICAgdmFsdWUgPSB0b0pTKGV4ZWMsIGZyYW1lKTsKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCBlbGVtZW50
KSk7CisgICAgdmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBlbGVtZW50KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogLy8gQ3VzdG9tIGF0dHJpYnV0ZXMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0
b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggMjg0ODk3MTJhN2Y2Y2NjNDk5MDdhNmFmYjMxNWRjNWZk
N2M4Y2RjYi4uZWM3ZjdkYmI2Yjg0MWUxYzJlNDBlMGY5MjQxNjI3ZGM5MDNlYWRkYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVj
dGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRm9y
bUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTQ0LDE1ICs0NCwxNCBAQCBzdGF0aWMg
SlNWYWx1ZSBuYW1lZEl0ZW1zKEV4ZWNTdGF0ZSogZXhlYywgSlNIVE1MRm9ybUNvbnRyb2xzQ29s
bGVjdGlvbiogY29sbGVjdAogICAgIHJldHVybiB0b0pTKGV4ZWMsIGNvbGxlY3Rpb24tPmdsb2Jh
bE9iamVjdCgpLCBjb2xsZWN0aW9uLT5pbXBsKCkub3duZXJOb2RlKCkucmFkaW9Ob2RlTGlzdChu
YW1lKS5nZXQoKSk7CiB9CiAKLWJvb2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6Y2Fu
R2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxGb3JtQ29u
dHJvbHNDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJuIGNvbGxlY3Rpb24t
Pmhhc05hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsK
LX0KKyAgICBhdXRvIGl0ZW1zID0gbmFtZWRJdGVtcyhleGVjLCB0aGlzLCBwcm9wZXJ0eU5hbWUp
OworICAgIGlmIChpdGVtcy5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LUVuY29kZWRKU1ZhbHVlIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIEpTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rp
b24qIHRoaXNPYmogPSBqc0Nhc3Q8SlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbio+KHNsb3RC
YXNlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5hbWVkSXRlbXMoZXhlYywgdGhpc09i
aiwgcHJvcGVydHlOYW1lKSk7CisgICAgdmFsdWUgPSBpdGVtczsKKyAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oRXhl
Y1N0YXRlKiBleGVjKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNI
VE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCmluZGV4IDNkMzliZDE1M2FlOGIzM2UwMTk2OWViODkw
YWNlYWJkNGEwNGYzYTIuLmUzNGMwMzU0NmRkZWE2Y2FkZWQxYTNjYWM5ZjdiZjdmMzM4OGJiYTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtRWxl
bWVudEN1c3RvbS5jcHAKQEAgLTM3LDI1ICszNywyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNIVE1MRm9ybUVsZW1lbnQ6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIFByb3BlcnR5TmFt
ZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNT
dGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7
Ci0gICAgcmV0dXJuIGZvcm0tPmhhc05hbWVkRWxlbWVudChwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNIVE1MRm9ybUVsZW1l
bnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIEpTSFRNTEZvcm1F
bGVtZW50KiBqc0Zvcm0gPSBqc0Nhc3Q8SlNIVE1MRm9ybUVsZW1lbnQqPihzbG90QmFzZSk7Ci0g
ICAgSFRNTEZvcm1FbGVtZW50JiBmb3JtID0ganNGb3JtLT5pbXBsKCk7Ci0KLSAgICBWZWN0b3I8
UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zID0gZm9ybS5uYW1lZEVsZW1lbnRzKHByb3BlcnR5TmFt
ZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIFZlY3RvcjxSZWY8RWxlbWVudD4+
IG5hbWVkSXRlbXMgPSBpbXBsKCkubmFtZWRFbGVtZW50cyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKICAgICAKICAgICBpZiAobmFtZWRJdGVtcy5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgaWYg
KG5hbWVkSXRlbXMuc2l6ZSgpID09IDEpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
dG9KUyhleGVjLCBqc0Zvcm0tPmdsb2JhbE9iamVjdCgpLCAmbmFtZWRJdGVtc1swXS5nZXQoKSkp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgaWYgKG5hbWVkSXRlbXMuc2l6ZSgpID09IDEp
IHsKKyAgICAgICAgdmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBuYW1lZEl0ZW1z
WzBdLnB0cigpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQogCiAgICAgLy8gRklYTUU6
IEhUTUw1IHNwZWNpZmllcyB0aGF0IHRoaXMgc2hvdWxkIGJlIGEgUmFkaW9Ob2RlTGlzdC4KLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNGb3JtLT5nbG9iYWxPYmplY3Qo
KSwgU3RhdGljRWxlbWVudExpc3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKSk7CisgICAgdmFs
dWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBTdGF0aWNFbGVtZW50TGlzdDo6YWRvcHQo
bmFtZWRJdGVtcykuZ2V0KCkpOworICAgIHJldHVybiB0cnVlOwogfQogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVtZW50Q3Vz
dG9tLmNwcAppbmRleCA3N2VhZmY1ODAxN2ZmMWYyYjU2ZWRmMTg3NzA4ZjZmMjQyNDAxZWZjLi43
MDg1NmU1NTNjNGZkNmM3ZDAyMGZiOTczNTg5ODZhMjY1MjUzNTZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFtZVNldEVsZW1lbnRDdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZyYW1lU2V0RWxlbWVudEN1c3Rv
bS5jcHAKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlICJIVE1MQ29sbGVjdGlvbi5oIgogI2lu
Y2x1ZGUgIkhUTUxGcmFtZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MRnJhbWVTZXRFbGVtZW50
LmgiCi0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIKICNp
bmNsdWRlICJKU0RPTVdpbmRvd1NoZWxsLmgiCiAjaW5jbHVkZSAiSlNET01CaW5kaW5nLmgiCkBA
IC0zOSwyMyArMzgsMTkgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi11c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwotCi1ib29sIEpTSFRNTEZyYW1lU2V0
RWxlbWVudDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxGcmFtZVNldEVsZW1l
bnQqIGZyYW1lU2V0LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIE5vZGUqIGZy
YW1lID0gZnJhbWVTZXQtPmNoaWxkcmVuKCktPm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICByZXR1cm4gZnJhbWUgJiYgZnJhbWUtPmhhc1Rh
Z05hbWUoZnJhbWVUYWcpOwotfQotCi1FbmNvZGVkSlNWYWx1ZSBKU0hUTUxGcmFtZVNldEVsZW1l
bnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29k
ZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxGcmFtZVNl
dEVsZW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICBIVE1MRWxlbWVudCYgZWxlbWVudCA9IGpz
Q2FzdDxKU0hUTUxFbGVtZW50Kj4oc2xvdEJhc2UpLT5pbXBsKCk7Ci0gICAgTm9kZSogZnJhbWVF
bGVtZW50ID0gZWxlbWVudC5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9t
aWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGRv
d25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxlbWVudCktPmNvbnRlbnREb2N1bWVudCgp
KSB7Ci0gICAgICAgIGlmIChKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3cgPSB0b0pTRE9NV2luZG93
U2hlbGwoZG9jdW1lbnQtPmZyYW1lKCksIGN1cnJlbnRXb3JsZChleGVjKSkpCi0gICAgICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHdpbmRvdyk7CisgICAgYXV0byogZnJhbWVFbGVtZW50
ID0gaW1wbCgpLmNoaWxkcmVuKCktPm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmlu
Zyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBpZiAoIWlzPEhUTUxGcmFtZUVsZW1lbnQ+KGZyYW1lRWxl
bWVudCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChhdXRvKiBkb2N1bWVudCA9
IGRvd25jYXN0PEhUTUxGcmFtZUVsZW1lbnQ+KCpmcmFtZUVsZW1lbnQpLmNvbnRlbnREb2N1bWVu
dCgpKSB7CisgICAgICAgIGlmIChKU0RPTVdpbmRvd1NoZWxsKiB3aW5kb3cgPSB0b0pTRE9NV2lu
ZG93U2hlbGwoZG9jdW1lbnQtPmZyYW1lKCksIGN1cnJlbnRXb3JsZChleGVjKSkpIHsKKyAgICAg
ICAgICAgIHZhbHVlID0gd2luZG93OworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAg
IH0KICAgICB9Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAg
ICByZXR1cm4gZmFsc2U7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTE9wdGlvbnNDb2xsZWN0aW9u
Q3VzdG9tLmNwcAppbmRleCA3YzBkNjkwNjEzNjdhNDliY2E2N2UxNWI4Y2QwMzM2ZjVlNmM1NGQ4
Li5mYjM3NWVmOTk3ZDgyNDgxYzBlMGEzYmNiMWZjMWE1ZTZjNmY1Y2NhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0NvbGxlY3Rp
b25DdXN0b20uY3BwCkBAIC0zNywxNiArMzcsMTQgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpjYW5H
ZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTE9wdGlvbnNDb2xsZWN0aW9uKiBjb2xsZWN0
aW9uLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxPcHRpb25zQ29sbGVj
dGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci19CisgICAgYXV0
byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotRW5j
b2RlZEpTVmFsdWUgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lKQotewotICAgIEpTSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24gPSBqc0Nh
c3Q8SlNIVE1MQ29sbGVjdGlvbio+KHNsb3RCYXNlKTsKLSAgICBjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOwotICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxPYmplY3Qo
KSwgY29sbGVjdGlvbi0+aW1wbCgpLm5hbWVkSXRlbShuYW1lKSkpOworICAgIHZhbHVlID0gdG9K
UyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaXRlbSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZv
aWQgSlNIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnNldExlbmd0aChFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUgdmFsdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05h
bWVkTm9kZU1hcEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAKaW5kZXggZTEwMTIyYzAzMDE2NzZlYjE4ZjI4MmRlNjU1OTYxMDQw
NjIyYjEzOS4uODQ2Y2Y4ZmFhOGM1MTFlZjgyMTUxNzAxYjRhMDA4YmFmYTFiZmNkMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWROb2RlTWFwQ3VzdG9tLmNw
cApAQCAtMzUsMTUgKzM1LDE0IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotYm9vbCBKU05hbWVkTm9kZU1hcDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNT
dGF0ZSosIE5hbWVkTm9kZU1hcCogaW1wbCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNOYW1lZE5vZGVNYXA6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gaW1wbC0+Z2V0
TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotfQor
ICAgIGF1dG8gaXRlbSA9IGltcGwoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNT
dHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLUVuY29kZWRKU1ZhbHVlIEpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0
ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU05hbWVkTm9kZU1hcCogdGhpc09iaiA9IGpzQ2FzdDxK
U05hbWVkTm9kZU1hcCo+KHNsb3RCYXNlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRv
SlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS5nZXROYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpKTsKKyAgICB2
YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pOworICAgIHJldHVybiB0cnVl
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTTm9kZUxpc3RDdXN0b20uY3BwCmluZGV4IDY5ZDNiZTdkYWUyMWE1NzU4YjRhNDEz
NzViMGEyNjE1NzA3MjZiODkuLjJmZDlmMzNmMTNiMDlmOGFmOWQyMTEyOGY4MmNmYTJmNmYxYTQ2
ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTm9kZUxpc3RDdXN0b20u
Y3BwCkBAIC01MSwyMCArNTEsMTYgQEAgYm9vbCBKU05vZGVMaXN0T3duZXI6OmlzUmVhY2hhYmxl
RnJvbU9wYXF1ZVJvb3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGwKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLWJvb2wgSlNOb2RlTGlzdDo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNT
dGF0ZSosIE5vZGVMaXN0KiBub2RlTGlzdCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKKy8v
IEZJWE1FOiBOb2RlTGlzdCBzaG91bGQgbm90IGhhdmUgYSBuYW1lZCBnZXR0ZXIuIEl0IGN1cnJl
bnRseSBoYXMgb25lIGJlY2F1c2UgZ2V0RWxlbWVudEJ5VGFnTmFtZSgpCisvLyByZXR1cm5zIGEg
Tm9kZUxpc3QgaW5zdGVhZCBvZiBhbiBIVE1MQ29sbGVjdGlvbi4KK2Jvb2wgSlNOb2RlTGlzdDo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUmIHZhbHVlKQogewotICAgIC8vIEZJWE1FOiBOb2RlTGlzdCBzaG91bGQgbm90IGhhdmUg
YSBuYW1lZCBnZXR0ZXIuIEl0IGN1cnJlbnRseSBoYXMgb25lIGJlY2F1c2UgZ2V0RWxlbWVudEJ5
VGFnTmFtZSgpCi0gICAgLy8gcmV0dXJucyBhIE5vZGVMaXN0IGluc3RlYWQgb2YgYW4gSFRNTENv
bGxlY3Rpb24uCi0gICAgcmV0dXJuIG5vZGVMaXN0LT5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci19CisgICAgYXV0byBpdGVtID0gaW1wbCgpLm5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBp
ZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotRW5jb2RlZEpTVmFsdWUgSlNOb2Rl
TGlzdDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5j
b2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgLy8gRklYTUU6
IE5vZGVMaXN0IHNob3VsZCBub3QgaGF2ZSBhIG5hbWVkIGdldHRlci4gSXQgY3VycmVudGx5IGhh
cyBvbmUgYmVjYXVzZSBnZXRFbGVtZW50QnlUYWdOYW1lKCkKLSAgICAvLyByZXR1cm5zIGEgTm9k
ZUxpc3QgaW5zdGVhZCBvZiBhbiBIVE1MQ29sbGVjdGlvbi4KLSAgICBKU05vZGVMaXN0KiBub2Rl
TGlzdCA9IGpzQ2FzdDxKU05vZGVMaXN0Kj4oc2xvdEJhc2UpOwotICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSA9IHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7Ci0g
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIG5vZGVMaXN0LT5nbG9iYWxPYmpl
Y3QoKSwgbm9kZUxpc3QtPmltcGwoKS5uYW1lZEl0ZW0obmFtZSkpKTsKKyAgICB2YWx1ZSA9IHRv
SlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pOworICAgIHJldHVybiB0cnVlOwogfQogCiBK
U0M6OkpTVmFsdWUgY3JlYXRlV3JhcHBlcihKU0RPTUdsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0
LCBOb2RlTGlzdCYgbm9kZUxpc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcAppbmRleCAzZjcxMjg5YTk4ZjNmZmY3
MWZmNTc3NTA2MzhjMTAwYjNhZDliYmM0Li45ZWY1ZTkzZWQxY2U1YWZhYmJkOWFkY2IwZGNiNmEz
OGI0ZjRhZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JUQ1N0
YXRzUmVzcG9uc2VDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
UlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKQEAgLTM2LDE1ICszNiwxNCBAQCB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNSVENTdGF0c1Jlc3Bv
bnNlOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgUlRDU3RhdHNSZXNwb25zZSogcmVz
cG9uc2UsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCitib29sIEpTUlRDU3RhdHNSZXNwb25z
ZTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUs
IEpTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiByZXNwb25zZS0+Y2FuR2V0SXRlbXNGb3JO
YW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotfQorICAgIGF1
dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJv
cGVydHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLUVu
Y29kZWRKU1ZhbHVlIEpTUlRDU3RhdHNSZXNwb25zZTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9w
ZXJ0eU5hbWUpCi17Ci0gICAgSlNSVENTdGF0c1Jlc3BvbnNlKiB0aGlzT2JqID0ganNDYXN0PEpT
UlRDU3RhdHNSZXNwb25zZSo+KHNsb3RCYXNlKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmltcGwoKS5uYW1l
ZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkpKTsKKyAgICB2
YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pOworICAgIHJldHVybiB0cnVl
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcAppbmRleCBlNjUxMzQwYWU3M2MzMWQyZDYxNzU3OWZl
ZTg1ZWRjYjUzZmNlZmJmLi45Y2M1ODViZDdlYjFhYTZkOWMwNGJkNjI0ZGI2NTVhMDVkNTEzMzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0b3JhZ2VDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAK
QEAgLTM1LDMyICszNSwyMCBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWJvb2wgSlNTdG9yYWdlOjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiBl
eGVjLCBTdG9yYWdlKiBpbXBsLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0
b3JhZ2U6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlO
YW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IGJvb2wgcmVzdWx0ID0gaW1wbC0+Y29udGFpbnMocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVy
dHlOYW1lKSwgZWMpOworICAgIFN0cmluZyBpdGVtID0gaW1wbCgpLmdldEl0ZW0ocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgZWMpOwogICAgIHNldERPTUV4Y2VwdGlvbihleGVj
LCBlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNTdG9yYWdl
OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVk
SlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU1N0b3JhZ2UqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8SlNTdG9yYWdlKj4oc2xvdEJhc2UpOwotICAgIEpTVmFsdWUgcHJv
dG90eXBlID0gdGhpc09iamVjdC0+cHJvdG90eXBlKCk7Ci0gICAgUHJvcGVydHlTbG90IHNsb3Qo
dGhpc09iamVjdCk7Ci0gICAgaWYgKHByb3RvdHlwZS5pc09iamVjdCgpICYmIGFzT2JqZWN0KHBy
b3RvdHlwZSktPmdldFByb3BlcnR5U2xvdChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHNsb3QuZ2V0VmFsdWUoZXhlYywgcHJvcGVydHlO
YW1lKSk7CiAKLSAgICBpZiAocHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCisgICAgaWYgKGl0ZW0u
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEV4Y2VwdGlvbkNvZGUgZWMg
PSAwOwotICAgIEpTVmFsdWUgcmVzdWx0ID0ganNTdHJpbmdPck51bGwoZXhlYywgdGhpc09iamVj
dC0+aW1wbCgpLmdldEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSwgZWMp
KTsKLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUocmVzdWx0KTsKKyAgICB2YWx1ZSA9IGpzU3RyaW5nV2l0aENhY2hlKGV4ZWMsIGl0ZW0p
OworICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIEpTU3RvcmFnZTo6ZGVsZXRlUHJvcGVydHko
SlNDZWxsKiBjZWxsLCBFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RD
dXN0b20uY3BwCmluZGV4IDhkOWI5NGFhNTE0YjM5NzAxNzI0NDAxNDZjMzMyZDgzZjc3YTVmMTAu
LmQxYzYwNjVhOTc1ODBmMjk3ZTZlYzI0N2JmZmY4MTc0Yjg5OTU2YzEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwCkBA
IC0zNSwxOSArMzUsMTcgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCi1ib29sIEpTU3R5bGVTaGVldExpc3Q6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3Rh
dGUqLCBTdHlsZVNoZWV0TGlzdCogc3R5bGVTaGVldExpc3QsIFByb3BlcnR5TmFtZSBwcm9wZXJ0
eU5hbWUpCitib29sIEpTU3R5bGVTaGVldExpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVj
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKICAgICBpZiAo
cHJvcGVydHlOYW1lLmlzU3ltYm9sKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1
cm4gc3R5bGVTaGVldExpc3QtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKLX0KIAotRW5jb2RlZEpTVmFsdWUgSlNTdHlsZVNoZWV0TGlzdDo6bmFtZUdl
dHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUs
IFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgSlNTdHlsZVNoZWV0TGlzdCogdGhp
c09iaiA9IGpzQ2FzdDxKU1N0eWxlU2hlZXRMaXN0Kj4oc2xvdEJhc2UpOwotICAgIEhUTUxTdHls
ZUVsZW1lbnQqIGVsZW1lbnQgPSB0aGlzT2JqLT5pbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgIEFTU0VSVChlbGVtZW50KTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCks
IGVsZW1lbnQtPnNoZWV0KCkpKTsKKyAgICBhdXRvKiBpdGVtID0gaW1wbCgpLmdldE5hbWVkSXRl
bShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBpZiAoIWl0ZW0pCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QoKSwgaXRlbS0+c2hlZXQoKSk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2Rl
R2VuZXJhdG9ySlMucG0KaW5kZXggZTVmM2NmNDY2MTcwYzE3M2I0ZDVlODg0Y2ZiNjE1NTY2ZTE3
MTViOC4uNGUzZmFlOTczOGU4NDU1YzU1YTY2YTZmOTVjM2QwZDNkODEyYzMwZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KQEAg
LTQzMiwxMCArNDMyLDEzIEBAIHN1YiBHZW5lcmF0ZUdldE93blByb3BlcnR5U2xvdEJvZHkKICAg
ICAgICAgICAgICYkcHJvdG90eXBlQ2hlY2soKTsKICAgICAgICAgfQogCi0gICAgICAgICMgVGhl
IGZpcnN0IGNvbmRpdGlvbiBpcyB0byBtYWtlIHN1cmUgd2UgdXNlIHRoZSBzdWJjbGFzcycgbmFt
ZWQgZ2V0dGVyIGluc3RlYWQgb2YgdGhlIGJhc2UgY2xhc3Mgb25lIHdoZW4gcG9zc2libGUuCi0g
ICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKHRoaXNPYmplY3Qt
PmNsYXNzSW5mbygpID09IGluZm8oKSAmJiBjYW5HZXRJdGVtc0Zvck5hbWUoZXhlYywgJnRoaXNP
YmplY3QtPmltcGwoKSwgcHJvcGVydHlOYW1lKSkge1xuIik7Ci0gICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5U2xvdEltcGwsICIgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKTtc
biIpOwotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICByZXR1
cm4gdHJ1ZTtcbiIpOworICAgICAgICAjIFRoaXMgY29uZGl0aW9uIGlzIHRvIG1ha2Ugc3VyZSB3
ZSB1c2UgdGhlIHN1YmNsYXNzJyBuYW1lZCBnZXR0ZXIgaW5zdGVhZCBvZiB0aGUgYmFzZSBjbGFz
cyBvbmUgd2hlbiBwb3NzaWJsZS4KKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1w
bCwgIiAgICBpZiAodGhpc09iamVjdC0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpKSB7XG4iKTsKKyAg
ICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICAgICAgSlNWYWx1ZSB2YWx1
ZTtcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBp
ZiAodGhpc09iamVjdC0+bmFtZUdldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkge1xu
Iik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAgICAgICAgICBz
bG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVt
LCB2YWx1ZSk7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAg
ICAgICAgICAgIHJldHVybiB0cnVlO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5
U2xvdEltcGwsICIgICAgICAgIH1cbiIpOwogICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNs
b3RJbXBsLCAiICAgIH1cbiIpOwogICAgICAgICBpZiAoJGlubGluZWQpIHsKICAgICAgICAgICAg
ICRoZWFkZXJJbmNsdWRlc3sid3RmL3RleHQvQXRvbWljU3RyaW5nLmgifSA9IDE7CkBAIC0xMTYy
LDggKzExNjUsNyBAQCBzdWIgR2VuZXJhdGVIZWFkZXIKICAgICAjIE5hbWUgZ2V0dGVyCiAgICAg
aWYgKCRuYW1lZEdldHRlckZ1bmN0aW9uIHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRl
cy0+eyJDdXN0b21OYW1lZEdldHRlciJ9KSB7CiAgICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQs
ICJwcml2YXRlOlxuIik7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGlj
IGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRlKiwgJGludGVyZmFjZU5hbWUq
LCBKU0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKLSAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwg
IiAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRl
KiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1l
KTtcbiIpOworICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAiICAgIGJvb2wgbmFtZUdldHRl
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpTVmFsdWUmKTtcbiIp
OwogICAgIH0KIAogICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICJ9O1xuXG4iKTsKQEAgLTIxODUs
MTAgKzIxODcsMTMgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRpb24KICAgICAgICAgICAgIGlm
ICgkbmFtZWRHZXR0ZXJGdW5jdGlvbiB8fCAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0ZXMt
PnsiQ3VzdG9tTmFtZWRHZXR0ZXIifSkgewogICAgICAgICAgICAgICAgICYkcHJvcGVydHlOYW1l
R2VuZXJhdGlvbigpOwogCi0gICAgICAgICAgICAgICAgIyBUaGUgZmlyc3QgY29uZGl0aW9uIGlz
IHRvIG1ha2Ugc3VyZSB3ZSB1c2UgdGhlIHN1YmNsYXNzJyBuYW1lZCBnZXR0ZXIgaW5zdGVhZCBv
ZiB0aGUgYmFzZSBjbGFzcyBvbmUgd2hlbiBwb3NzaWJsZS4KLSAgICAgICAgICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICBpZiAodGhpc09iamVjdC0+Y2xhc3NJbmZvKCkgPT0gaW5mbygp
ICYmIGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCAmdGhpc09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0
eU5hbWUpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAg
ICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9u
dEVudW0sIHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICIgICAgICAgIHJldHVybiB0cnVlO1xuIik7CisgICAgICAgICAgICAg
ICAgIyBUaGlzIGNvbmRpdGlvbiBpcyB0byBtYWtlIHN1cmUgd2UgdXNlIHRoZSBzdWJjbGFzcycg
bmFtZWQgZ2V0dGVyIGluc3RlYWQgb2YgdGhlIGJhc2UgY2xhc3Mgb25lIHdoZW4gcG9zc2libGUu
CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3Qt
PmNsYXNzSW5mbygpID09IGluZm8oKSkge1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIEpTVmFsdWUgdmFsdWU7XG4iKTsKKyAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSkpIHtcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25s
eSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAgICAgICAkaW1w
bEluY2x1ZGVzeyJ3dGYvdGV4dC9BdG9taWNTdHJpbmcuaCJ9ID0gMTsKICAgICAgICAgICAgIH0K
QEAgLTI5MjYsMjAgKzI5MzEsNiBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAg
ICB9CiAgICAgfQogCi0gICAgaWYgKCRpbnRlcmZhY2VOYW1lIGVxICJET01OYW1lZEZsb3dDb2xs
ZWN0aW9uIikgewotICAgICAgICBpZiAoJG5hbWVkR2V0dGVyRnVuY3Rpb24pIHsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCAke2NsYXNzTmFtZX06OmNhbkdldEl0ZW1zRm9y
TmFtZShFeGVjU3RhdGUqLCAkaW50ZXJmYWNlTmFtZSogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjb2xsZWN0aW9u
LT5oYXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7
XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAiRW5jb2RlZEpTVmFsdWUgJHtjbGFzc05hbWV9OjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSlcbiIpOwotICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICJ7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGF1
dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8JGNsYXNzTmFtZSo+KHNsb3RCYXNlKTtcbiIpOwotICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0
b0pTKGV4ZWMsIHRoaXNPYmplY3QtPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqZWN0LT5pbXBsKCku
bmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSk7XG4i
KTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifVxuXG4iKTsKLSAgICAgICAgfQot
ICAgIH0KLQogICAgIGlmICgoISRoYXNQYXJlbnQgJiYgIUdldEN1c3RvbUlzUmVhY2hhYmxlKCRp
bnRlcmZhY2UpKSB8fCBHZXRHZW5lcmF0ZUlzUmVhY2hhYmxlKCRpbnRlcmZhY2UpIHx8ICRjb2Rl
R2VuZXJhdG9yLT5Jbmhlcml0c0V4dGVuZGVkQXR0cmlidXRlKCRpbnRlcmZhY2UsICJBY3RpdmVE
T01PYmplY3QiKSkgewogCiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiYm9vbCBKUyR7aW50
ZXJmYWNlTmFtZX1Pd25lcjo6aXNSZWFjaGFibGVGcm9tT3BhcXVlUm9vdHMoSlNDOjpIYW5kbGU8
SlNDOjpVbmtub3duPiBoYW5kbGUsIHZvaWQqLCBTbG90VmlzaXRvciYgdmlzaXRvcilcbiIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5kZXggYjhiNWE0Y2NkYThmNTE1
NDc3ZDE1YTg2MGIyMTJiMTg4MTFhMGY1MC4uZWRlMDQzZDE2NTQyMDBlOTUwMjI2Nzc2ZWNhZWZh
YzQ1MzNlYzE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCkBAIC0x
NzAsOSArMTcwLDEyIEBAIGJvb2wgSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmdldE93blByb3Bl
cnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4CiAgICAgaWYgKHByb3RvLmlz
T2JqZWN0KCkgJiYganNDYXN0PEpTT2JqZWN0Kj4ocHJvdG8pLT5oYXNQcm9wZXJ0eShleGVjLCBw
cm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAodGhpc09iamVj
dC0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpICYmIGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCAmdGhp
c09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9t
KHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0aGlzT2JqZWN0
LT5uYW1lR2V0dGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRoaXNPYmplY3Qt
PmNsYXNzSW5mbygpID09IGluZm8oKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAg
ICBpZiAodGhpc09iamVjdC0+bmFtZUdldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkg
eworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRE
ZWxldGUgfCBEb250RW51bSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
ICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMTgyLDkgKzE4NSwxMiBAQCBi
b29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdAogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXIqPihvYmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5I
RVJJVFModGhpc09iamVjdCwgaW5mbygpKTsKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9
IElkZW50aWZpZXI6OmZyb20oZXhlYywgaW5kZXgpOwotICAgIGlmICh0aGlzT2JqZWN0LT5jbGFz
c0luZm8oKSA9PSBpbmZvKCkgJiYgY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsICZ0aGlzT2JqZWN0
LT5pbXBsKCksIHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09i
amVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRoaXNPYmplY3QtPm5hbWVH
ZXR0ZXIpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGhpc09iamVjdC0+Y2xhc3NJ
bmZvKCkgPT0gaW5mbygpKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgIGlmICh0
aGlzT2JqZWN0LT5uYW1lR2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7CisgICAg
ICAgICAgICBzbG90LnNldFZhbHVlKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtLCB2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQog
ICAgIH0KICAgICByZXR1cm4gQmFzZTo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2Jq
ZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRl
ci5oCmluZGV4IGU2NDE1NzI5ZGUxZjQxYjY5ZGJjZmFmN2RkMDYyNWY5YmM0ZTIwNzYuLjRmOTky
OTE1ZDE4YWQ2YTY5MDRjY2M5ZTYwNDlmMTQ2MjU2MTJlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0
b21OYW1lZEdldHRlci5oCkBAIC03MCw4ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHBy
aXZhdGU6Ci0gICAgc3RhdGljIGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRl
KiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiwgSlNDOjpQcm9wZXJ0eU5hbWUpOwotICAgIHN0YXRp
YyBKU0M6OkVuY29kZWRKU1ZhbHVlIG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpT
T2JqZWN0KiwgSlNDOjpFbmNvZGVkSlNWYWx1ZSwgSlNDOjpQcm9wZXJ0eU5hbWUpOworICAgIGJv
b2wgbmFtZUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6UHJvcGVydHlOYW1lLCBKU0M6OkpT
VmFsdWUmKTsKIH07CiAKIGNsYXNzIEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyT3duZXIgOiBwdWJs
aWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5jcHAKaW5kZXgg
MzMzMmEwNzZhYmE4ODgyMzNjNmQ1NTZmZmJkMGFhODk0YWY1YmI5Ny4uYTgzNGQ1MzIzMjg5YWM1
ZTViMWY4YjY2ZmIyNWQyMTU3YzBjZGFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRUYXJnZXQuY3BwCkBA
IC0xODksOSArMTg5LDEyIEBAIGJvb2wgSlNUZXN0RXZlbnRUYXJnZXQ6OmdldE93blByb3BlcnR5
U2xvdChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByCiAgICAgaWYgKHByb3Rv
LmlzT2JqZWN0KCkgJiYganNDYXN0PEpTT2JqZWN0Kj4ocHJvdG8pLT5oYXNQcm9wZXJ0eShleGVj
LCBwcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAodGhpc09i
amVjdC0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpICYmIGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCAm
dGhpc09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3Vz
dG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0aGlzT2Jq
ZWN0LT5uYW1lR2V0dGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRoaXNPYmpl
Y3QtPmNsYXNzSW5mbygpID09IGluZm8oKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAg
ICAgICBpZiAodGhpc09iamVjdC0+bmFtZUdldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVl
KSkgeworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERv
bnREZWxldGUgfCBEb250RW51bSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpAQCAtMjA2LDkgKzIwOSwxMiBA
QCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0OjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2Jq
ZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAg
ICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4
KTsKLSAgICBpZiAodGhpc09iamVjdC0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpICYmIGNhbkdldEl0
ZW1zRm9yTmFtZShleGVjLCAmdGhpc09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0eU5hbWUpKSB7Ci0g
ICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8
IERvbnRFbnVtLCB0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgaWYgKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09IGluZm8oKSkgeworICAgICAgICBK
U1ZhbHVlIHZhbHVlOworICAgICAgICBpZiAodGhpc09iamVjdC0+bmFtZUdldHRlcihleGVjLCBw
cm9wZXJ0eU5hbWUsIHZhbHVlKSkgeworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdmFsdWUpOworICAgICAgICAg
ICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIEJhc2U6OmdldE93
blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuaAppbmRleCA0OTJiNzdkOTNlNjA1Y2I3MjU4OWI2ZjFkOTZhMGIy
ZDU4ZjM2M2FmLi44MzFkYWY5YzUzYzhlNjYwOTA4NzRiMDI5Mzc0MGI1MWRhZjlhMDBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZl
bnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0RXZlbnRUYXJnZXQuaApAQCAtNzQsOCArNzQsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIHN0YXRpYyBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNT
dGF0ZSosIFRlc3RFdmVudFRhcmdldCosIEpTQzo6UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0aWMg
SlNDOjpFbmNvZGVkSlNWYWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09i
amVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBib29s
IG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1Zh
bHVlJik7CiB9OwogCiBjbGFzcyBKU1Rlc3RFdmVudFRhcmdldE93bmVyIDogcHVibGljIEpTQzo6
V2Vha0hhbmRsZU93bmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcAppbmRl
eCAzMDZkYjI4NWI4YTZkYmU0NDRhZmNmYmMyMzc1ZWE2MmQ2MDRlNDU0Li5iMTg1Njc0MTNhNzAx
Y2M2YmI1NWQzYmUzN2EzYTdlM2NjYjY4MTUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwCkBAIC0xNjYsOSArMTY2LDEyIEBAIGJvb2wgSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
czo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlCiB7
CiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVycmlkZUJ1aWx0aW5zKj4o
b2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8o
KSk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09IGluZm8oKSAmJiBjYW5HZXRJ
dGVtc0Zvck5hbWUoZXhlYywgJnRoaXNPYmplY3QtPmltcGwoKSwgcHJvcGVydHlOYW1lKSkgewot
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUg
fCBEb250RW51bSwgdGhpc09iamVjdC0+bmFtZUdldHRlcik7Ci0gICAgICAgIHJldHVybiB0cnVl
OworICAgIGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpIHsKKyAgICAgICAg
SlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIoZXhlYywg
cHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09i
amVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHZhbHVlKTsKKyAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIGlmIChnZXRTdGF0aWNWYWx1
ZVNsb3Q8SlNUZXN0T3ZlcnJpZGVCdWlsdGlucywgQmFzZT4oZXhlYywgSlNUZXN0T3ZlcnJpZGVC
dWlsdGluc1RhYmxlLCB0aGlzT2JqZWN0LCBwcm9wZXJ0eU5hbWUsIHNsb3QpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTE4MCw5ICsxODMsMTIgQEAgYm9vbCBKU1Rlc3RPdmVycmlkZUJ1aWx0
aW5zOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGEK
ICAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMqPihv
YmplY3QpOwogICAgIEFTU0VSVF9HQ19PQkpFQ1RfSU5IRVJJVFModGhpc09iamVjdCwgaW5mbygp
KTsKICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IElkZW50aWZpZXI6OmZyb20oZXhlYywg
aW5kZXgpOwotICAgIGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkgJiYgY2Fu
R2V0SXRlbXNGb3JOYW1lKGV4ZWMsICZ0aGlzT2JqZWN0LT5pbXBsKCksIHByb3BlcnR5TmFtZSkp
IHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVs
ZXRlIHwgRG9udEVudW0sIHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIpOwotICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICBpZiAodGhpc09iamVjdC0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpKSB7CisgICAg
ICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKGV4
ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7CisgICAgICAgICAgICBzbG90LnNldFZhbHVlKHRo
aXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB2YWx1ZSk7CisgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gQmFzZTo6
Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleCh0aGlzT2JqZWN0LCBleGVjLCBpbmRleCwgc2xvdCk7
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMv
SlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAppbmRleCA3Y2M4ZjBiNzBlOGZmMzE5
M2UyMGMyMjFhNjJjMTE0ZDI5YjRiZTk0Li5mNWFkNTU1Y2MzYTViYzZlM2E5MmRmNzA4MGZlZTkx
MjdlMWY4YjQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKQEAgLTcwLDggKzcw
LDcgQEAgcHJvdGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgYm9vbCBjYW5H
ZXRJdGVtc0Zvck5hbWUoSlNDOjpFeGVjU3RhdGUqLCBUZXN0T3ZlcnJpZGVCdWlsdGlucyosIEpT
Qzo6UHJvcGVydHlOYW1lKTsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBuYW1lR2V0
dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUs
IEpTQzo6UHJvcGVydHlOYW1lKTsKKyAgICBib29sIG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUq
LCBKU0M6OlByb3BlcnR5TmFtZSwgSlNDOjpKU1ZhbHVlJik7CiB9OwogCiBjbGFzcyBKU1Rlc3RP
dmVycmlkZUJ1aWx0aW5zT3duZXIgOiBwdWJsaWMgSlNDOjpXZWFrSGFuZGxlT3duZXIgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCmluZGV4IDVlZDhj
ZDU3NzUyNjFiYTgzNWI0ZGQ2ZjAxM2YyYTc2YzU2ODY1NjguLmRkZDMyZTYzZTdiOWIyNWJlZGQx
OGNjZGM5NTZmMDYwZDIxMGFhZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01O
YW1lZEZsb3dDb2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRG
bG93Q29sbGVjdGlvbi5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgUGFzc1JlZlB0cjxXZWJLaXROYW1l
ZEZsb3c+IERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Oml0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkg
Y28KICAgICByZXR1cm4gKml0OwogfQogCi1QYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4gRE9N
TmFtZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3QKK1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Om5h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAgRE9NTmFtZWRG
bG93U2V0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbmFtZWRGbG93cy5maW5kPFN0cmluZywgRE9N
TmFtZWRGbG93SGFzaFRyYW5zbGF0b3I+KG5hbWUpOwogICAgIGlmIChpdCAhPSBtX25hbWVkRmxv
d3MuZW5kKCkpCkBAIC02MSwxMSArNjEsNiBAQCBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxvdz4g
RE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZwogICAg
IHJldHVybiBudWxscHRyOwogfQogCi1ib29sIERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Omhhc05h
bWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5h
bWVkSXRlbShuYW1lKTsKLX0KLQogLy8gVGhlIEhhc2hGdW5jdGlvbnMgb2JqZWN0IHVzZWQgYnkg
dGhlIEhhc2hTZXQgdG8gY29tcGFyZSBiZXR3ZWVuIFJlZlB0cjxOYW1lZEZsb3dzPi4KIC8vIEl0
IGlzIHNhZmUgdG8gc2V0IHNhZmVUb0NvbXBhcmVUb0VtcHR5T3JEZWxldGVkIGJlY2F1c2UgdGhl
IEhhc2hTZXQgd2lsbCBuZXZlciBjb250YWluIG51bGwgcG9pbnRlcnMgb3IgZGVsZXRlZCB2YWx1
ZXMuCiBzdHJ1Y3QgRE9NTmFtZWRGbG93Q29sbGVjdGlvbjo6RE9NTmFtZWRGbG93SGFzaEZ1bmN0
aW9ucyB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVj
dGlvbi5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAppbmRl
eCBkOWE3OThiM2IxMTMxNDcyMjI0YTNmOGFlZjBmN2U1NzgwN2YwMzExLi4wOWY5N2QwMDllN2E5
MTAzNTQzNDAyNTg1ZWZlOTFjZWFiZDhkMGZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01O
YW1lZEZsb3dDb2xsZWN0aW9uLmgKQEAgLTQ5LDkgKzQ5LDcgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgbG9uZyBsZW5ndGgoKSBjb25zdDsKICAgICBQYXNzUmVmUHRyPFdlYktpdE5hbWVkRmxv
dz4gaXRlbSh1bnNpZ25lZCBsb25nIGluZGV4KSBjb25zdDsKLSAgICBQYXNzUmVmUHRyPFdlYktp
dE5hbWVkRmxvdz4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29uc3Q7Ci0K
LSAgICBib29sIGhhc05hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0Owor
ICAgIFJlZlB0cjxXZWJLaXROYW1lZEZsb3c+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0cnVjdCBET01OYW1lZEZsb3dIYXNoRnVu
Y3Rpb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNwcAppbmRleCAxMTgyY2Zi
ZGZjMWZiYTM2ZGE2ZjUzYTEzY2M1OWMxZWE1ODhmNmE3Li5mYTJiY2NiNmY3NWVjMzBhMzZmOGNh
ZjU5NGVkNGE1Y2M1YjBmNWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxD
b2xsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmNw
cApAQCAtMTczLDEyICsxNzMsNiBAQCB2b2lkIEhUTUxDb2xsZWN0aW9uOjp1cGRhdGVOYW1lZEVs
ZW1lbnRDYWNoZSgpIGNvbnN0CiAgICAgc2V0TmFtZWRJdGVtQ2FjaGUoV1RGOjptb3ZlKGNhY2hl
KSk7CiB9CiAKLWJvb2wgSFRNTENvbGxlY3Rpb246Omhhc05hbWVkSXRlbShjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0Ci17Ci0gICAgLy8gRklYTUU6IFdlIGNhbiBkbyBiZXR0ZXIgd2hl
biB0aGVyZSBhcmUgbXVsdGlwbGUgZWxlbWVudHMgb2YgdGhlIHNhbWUgbmFtZS4KLSAgICByZXR1
cm4gbmFtZWRJdGVtKG5hbWUpOwotfQotCiBWZWN0b3I8UmVmPEVsZW1lbnQ+PiBIVE1MQ29sbGVj
dGlvbjo6bmFtZWRJdGVtcyhjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpIGNvbnN0CiB7CiAgICAg
Ly8gRklYTUU6IFRoaXMgbm9uLXZpcnR1YWwgZnVuY3Rpb24gY2FuJ3QgcG9zc2libHkgYmUgZG9p
bmcgdGhlIGNvcnJlY3QgdGhpbmcgZm9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxDb2xsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgK
aW5kZXggYjQyMDYxYTEyMWRmZjQwODY2MzQ0MmJjNWMxZWRkNjQ3M2Y1Yzg4Zi4uYzBkYTZiNjkx
ZTU3NzdlZGQ3OTc4OTg1OWQ2YzI1MTU3ZTI5MDYxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENv
bGxlY3Rpb24uaApAQCAtNjksNyArNjksNiBAQCBwdWJsaWM6CiAgICAgUGFzc1JlZlB0cjxOb2Rl
TGlzdD4gdGFncyhjb25zdCBTdHJpbmcmKTsKIAogICAgIC8vIE5vbi1ET00gQVBJCi0gICAgYm9v
bCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKICAgICBWZWN0
b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxGb3JtRWxlbWVudC5jcHAKaW5kZXggMDU0Mjc5ZmYxZWY1YThjM2IxODBhNGI4
MGQyMGZiYzllYmZhZTE4MS4uNmFhMGY1ZjJkMzY4MDI2NjFkZThmODM3ZGY3Y2YzZGEzNmZkMjEx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50LmNwcApAQCAtNzk0LDExICs3
OTQsNiBAQCBib29sIEhUTUxGb3JtRWxlbWVudDo6bWF0Y2hlc0ludmFsaWRQc2V1ZG9DbGFzcygp
IGNvbnN0CiAgICAgcmV0dXJuICFtX2ludmFsaWRBc3NvY2lhdGVkRm9ybUNvbnRyb2xzLmlzRW1w
dHkoKTsKIH0KIAotYm9vbCBIVE1MRm9ybUVsZW1lbnQ6Omhhc05hbWVkRWxlbWVudChjb25zdCBB
dG9taWNTdHJpbmcmIG5hbWUpCi17Ci0gICAgcmV0dXJuIGVsZW1lbnRzKCktPmhhc05hbWVkSXRl
bShuYW1lKSB8fCBlbGVtZW50RnJvbVBhc3ROYW1lc01hcChuYW1lKTsKLX0KLQogLy8gRklYTUU6
IFVzZSBSZWY8SFRNTEVsZW1lbnQ+IGZvciB0aGUgZnVuY3Rpb24gcmVzdWx0IHNpbmNlIHRoZXJl
IGFyZSBubyBub24tSFRNTCBlbGVtZW50cyByZXR1cm5lZCBoZXJlLgogVmVjdG9yPFJlZjxFbGVt
ZW50Pj4gSFRNTEZvcm1FbGVtZW50OjpuYW1lZEVsZW1lbnRzKGNvbnN0IEF0b21pY1N0cmluZyYg
bmFtZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1FbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCmluZGV4IDAwNTE1YTNi
NDA4OWE5YWQzN2RjNzI4YmI0NjBiNDQ5YmFlNzI5NGYuLmQwMTU4MWRlYmYwMWU4MjU2NjY1N2Vk
MmQzOThiZWUxN2FkZGQzODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuaApA
QCAtNTEsNyArNTEsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+SFRNTEZvcm1FbGVtZW50KCk7
CiAKICAgICBSZWY8SFRNTENvbGxlY3Rpb24+IGVsZW1lbnRzKCk7Ci0gICAgYm9vbCBoYXNOYW1l
ZEVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJik7CiAgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4g
bmFtZWRFbGVtZW50cyhjb25zdCBBdG9taWNTdHJpbmcmKTsKIAogICAgIHVuc2lnbmVkIGxlbmd0
aCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlw
ZUFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAK
aW5kZXggZGEyMDQ0OTQ3Njk3NzE4ODE2ZjBiMTk2ODFlYWIxY2Y3Y2YzMjg1Zi4uYzQzOGQ4YWU0
ZDBlZjRhMmRkZGUwMGJlZDlmMzM0ODA5MDQyZTZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCkBAIC03MCwyNyArNzAsMTEgQEAgUGFzc1JlZlB0cjxE
T01NaW1lVHlwZT4gRE9NTWltZVR5cGVBcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICBy
ZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBtX2ZyYW1lLCBpbmRleCk7CiB9CiAKLWJv
b2wgRE9NTWltZVR5cGVBcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJvcGVydHlOYW1lKQorUmVmUHRyPERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5Ojpu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7Ci0gICAgUGx1Z2lu
RGF0YSAqZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKLSAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJl
dHVybiAwOwotCi0gICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOwotICAgIFZlY3Rvcjxz
aXplX3Q+IG1pbWVQbHVnaW5JbmRpY2VzOwotICAgIGRhdGEtPmdldFdlYlZpc2libGVNaW1lc0Fu
ZFBsdWdpbkluZGljZXMobWltZXMsIG1pbWVQbHVnaW5JbmRpY2VzKTsKLSAgICBmb3IgKGF1dG8m
IG1pbWUgOiBtaW1lcykgewotICAgICAgICBpZiAobWltZS50eXBlID09IHByb3BlcnR5TmFtZSkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0K
LVBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Om5hbWVkSXRlbShjb25z
dCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKLXsKLSAgICBQbHVnaW5EYXRhICpkYXRhID0g
Z2V0UGx1Z2luRGF0YSgpOworICAgIFBsdWdpbkRhdGEqIGRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7
CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAKICAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZXM7CiAgICAgVmVjdG9yPHNpemVf
dD4gbWltZVBsdWdpbkluZGljZXM7CkBAIC05OSw3ICs4Myw3IEBAIFBhc3NSZWZQdHI8RE9NTWlt
ZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHBy
b3BlcnR5CiAgICAgICAgIGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAg
ICAgICAgIHJldHVybiBET01NaW1lVHlwZTo6Y3JlYXRlKGRhdGEsIG1fZnJhbWUsIGkpOwogICAg
IH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogUGx1Z2luRGF0YSog
RE9NTWltZVR5cGVBcnJheTo6Z2V0UGx1Z2luRGF0YSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCmluZGV4IDk2ZDViNTZjZWZlNThhZDQ5OTRmODcwNjVk
MGQwN2IwYWMyNjdmZmUuLmVjNDFjNzhjZDc2NjVmOGUzYzQ1MDFhYjg2OTY3NDQ1YjJiYTBkZTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5oCkBAIC0zOSw4ICsz
OSw3IEBAIHB1YmxpYzoKIAogICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwogICAgIFBhc3NS
ZWZQdHI8RE9NTWltZVR5cGU+IGl0ZW0odW5zaWduZWQgaW5kZXgpOwotICAgIGJvb2wgY2FuR2V0
SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKTsKLSAgICBQYXNz
UmVmUHRyPERPTU1pbWVUeXBlPiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0
eU5hbWUpOworICAgIFJlZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJvcGVydHlOYW1lKTsKIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBET01NaW1lVHlw
ZUFycmF5KEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBs
dWdpbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5jcHAKaW5kZXggYzAy
N2U5OWRmOGQ3NjcyMTQ1OWJkNDc0ZjA1ZmE1MjQwNmE0YmIzOS4uZmExMzI5MThlNDFjNWUyZGUz
MDdjMjYyNmYxMGE0MmY3YzZiNjFiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9ET01QbHVnaW4uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNw
cApAQCAtNzQsMTkgKzc0LDcgQEAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gRE9NUGx1Z2luOjpp
dGVtKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiAwOwogfQogCi1ib29sIERPTVBsdWdpbjo6
Y2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQotewot
ICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1lczsKLSAgICBWZWN0b3I8c2l6ZV90PiBtaW1l
UGx1Z2luSW5kaWNlczsKLSAgICBtX3BsdWdpbkRhdGEtPmdldFdlYlZpc2libGVNaW1lc0FuZFBs
dWdpbkluZGljZXMobWltZXMsIG1pbWVQbHVnaW5JbmRpY2VzKTsKLSAgICBmb3IgKGF1dG8mIG1p
bWUgOiBtaW1lcykgewotICAgICAgICBpZiAobWltZS50eXBlID09IHByb3BlcnR5TmFtZSkKLSAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLVBh
c3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTVBsdWdpbjo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0
cmluZyYgcHJvcGVydHlOYW1lKQorUmVmUHRyPERPTU1pbWVUeXBlPiBET01QbHVnaW46Om5hbWVk
SXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKIHsKICAgICBWZWN0b3I8TWlt
ZUNsYXNzSW5mbz4gbWltZXM7CiAgICAgVmVjdG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7
CkBAIC05NCw3ICs4Miw3IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTVBsdWdpbjo6bmFt
ZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBtaW1lcy5zaXplKCk7ICsraSkKICAgICAgICAgaWYgKG1pbWVzW2ldLnR5
cGUgPT0gcHJvcGVydHlOYW1lKQogICAgICAgICAgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVh
dGUobV9wbHVnaW5EYXRhLmdldCgpLCBtX2ZyYW1lLCBpKTsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NUGx1Z2luLmgKaW5kZXggNjhlYTA1NzkyYTExMmE0NTRiMjFjNDNmODE5NGJlMWI2M2Zj
NDE2MC4uYWIxMWU1OWJlZDRmYTM2NWE1MGVkMTRjNTNiZTk1N2QyNGVlY2EyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0RPTVBsdWdpbi5oCkBAIC00Myw4ICs0Myw3IEBAIHB1YmxpYzoKICAgICB1bnNp
Z25lZCBsZW5ndGgoKSBjb25zdDsKIAogICAgIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IGl0ZW0o
dW5zaWduZWQgaW5kZXgpOwotICAgIGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJvcGVydHlOYW1lKTsKLSAgICBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBuYW1l
ZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxET01N
aW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKTsKIAog
cHJpdmF0ZToKICAgICBET01QbHVnaW4oUGx1Z2luRGF0YSosIEZyYW1lKiwgUGx1Z2luSW5mbyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCmluZGV4IDk0NzhiN2Q0
YmU1NGIzNjU3NTU0MjJmZWNjOGQ2NmM5Y2M0MDk0YjMuLjcyZWNhYzYyMmMzZDljODNhMGMwMzMx
NjFlOGU3YmQxODU2YWEyODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9N
UGx1Z2luQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJy
YXkuY3BwCkBAIC02NCwzMCArNjQsMTcgQEAgUGFzc1JlZlB0cjxET01QbHVnaW4+IERPTVBsdWdp
bkFycmF5OjppdGVtKHVuc2lnbmVkIGluZGV4KQogICAgIHJldHVybiBET01QbHVnaW46OmNyZWF0
ZShkYXRhLCBtX2ZyYW1lLCBwbHVnaW5zW2luZGV4XSk7CiB9CiAKLWJvb2wgRE9NUGx1Z2luQXJy
YXk6OmNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkK
K1JlZlB0cjxET01QbHVnaW4+IERPTVBsdWdpbkFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWlj
U3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRh
dGEoKTsKICAgICBpZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgZm9yIChhdXRv
JiBwbHVnaW4gOiBkYXRhLT53ZWJWaXNpYmxlUGx1Z2lucygpKSB7Ci0gICAgICAgIGlmIChwbHVn
aW4ubmFtZSA9PSBwcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9
Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1QYXNzUmVmUHRyPERPTVBsdWdpbj4gRE9NUGx1Z2lu
QXJyYXk6Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKLXsKLSAg
ICBQbHVnaW5EYXRhKiBkYXRhID0gcGx1Z2luRGF0YSgpOwotICAgIGlmICghZGF0YSkKLSAgICAg
ICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgZm9yIChhdXRvJiBw
bHVnaW4gOiBkYXRhLT53ZWJWaXNpYmxlUGx1Z2lucygpKSB7CiAgICAgICAgIGlmIChwbHVnaW4u
bmFtZSA9PSBwcm9wZXJ0eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gRE9NUGx1Z2luOjpjcmVh
dGUoZGF0YSwgbV9mcmFtZSwgcGx1Z2luKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0
dXJuIG51bGxwdHI7CiB9CiAKIHZvaWQgRE9NUGx1Z2luQXJyYXk6OnJlZnJlc2goYm9vbCByZWxv
YWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmgKaW5kZXggNjdkZTY4Yjc2
NmVjZjYxYTY0M2ZiMTRhZTY5ZmVkMjQxNGI4YzcxNi4uN2UwYzc2ZDc5OTI3NTA5NjAyN2ZhOGU4
Y2I4OTllMDRkNTAyNjhmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01Q
bHVnaW5BcnJheS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXku
aApAQCAtMzksOCArMzksNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBjb25z
dDsKICAgICBQYXNzUmVmUHRyPERPTVBsdWdpbj4gaXRlbSh1bnNpZ25lZCBpbmRleCk7Ci0gICAg
Ym9vbCBjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUp
OwotICAgIFBhc3NSZWZQdHI8RE9NUGx1Z2luPiBuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpOworICAgIFJlZlB0cjxET01QbHVnaW4+IG5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAKICAgICB2b2lkIHJlZnJlc2goYm9vbCByZWxv
YWQpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>259415</attachid>
            <date>2015-08-19 15:30:17 -0700</date>
            <delta_ts>2015-08-19 17:06:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-148193-20150819153014.patch</filename>
            <type>text/plain</type>
            <size>61184</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4NjM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTU3MDFkYWRmMWI1MWMw
MmY2ZGE4MWM1ZmY2YTI1MDUwODkwZDZhYy4uZDRkNzQwOThhODBkZDQ5Y2ZjZDBkMjBjODY3ZDk3
OTg3ZmQ1YWQ5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE1LTA4LTE5ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQXZvaWQgZG91YmxlIGhhc2gg
bG9va3VwIGluIG91ciBKUyBiaW5kaW5ncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgY29kZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ4MTkzCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQXZvaWQgZG91Ymxl
IGhhc2ggbG9va3VwIGluIG91ciBKUyBiaW5kaW5ncyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIgY29k
ZQorICAgICAgICBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4KKworICAgICAgICAqIENNYWtlTGlz
dHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAg
ICAgICAgQWRkIG5ldyBmaWxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01OYW1lZEZs
b3dDb2xsZWN0aW9uQ3VzdG9tLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpKU0RPTU5h
bWVkRmxvd0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIpOgorICAgICAgICBNb3ZlZCBjdXN0b20gbmFt
ZWQgZ2V0dGVyIGNvZGUgZm9yIERPTU5hbWVkRmxvd0NvbGxlY3Rpb24gZnJvbSB0aGUKKyAgICAg
ICAgYmluZGluZ3MgZ2VuZXJhdG9yIHRvIGFuIGFjdHVhbCBjdXN0b20gYmluZGluZ3MgZmlsZS4K
KworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmg6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVz
dEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0RXZlbnRUYXJnZXQuaDoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNU
ZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHA6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaDoKKyAgICAgICAgUmViYXNlbGluZSBiaW5kaW5n
cyB0ZXN0cy4KKwogMjAxNS0wOC0xOCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBw
bGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gUHVuY3R1YXRpb24gbmVhciBIaW5kaSB0ZXh0IGlz
IGdhcmJsZWQgd2hlbiBzdHlsZWQgd2l0aCB0aGUgc3lzdGVtIGZvbnQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50
eHQKaW5kZXggODQ2OGI2ZGQzYjc1YjMxODcxOTAxMDM0ZTc2Y2E1MjE2MGEwYmIyZS4uNTIyZWZk
MTVmNGQxNTYxNjg1MzY5YmQxNzkzNmQ0YmQ3MjE1ZjMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQK
QEAgLTExMDgsNiArMTEwOCw3IEBAIHNldChXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy9q
cy9KU0RPTUdsb2JhbE9iamVjdC5jcHAKICAgICBiaW5kaW5ncy9qcy9KU0RPTUdsb2JhbE9iamVj
dFRhc2suY3BwCiAgICAgYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcAor
ICAgIGJpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAKICAgICBi
aW5kaW5ncy9qcy9KU0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pT
RE9NUGx1Z2luQ3VzdG9tLmNwcAogICAgIGJpbmRpbmdzL2pzL0pTRE9NUHJvbWlzZS5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNw
b25zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVz
cG9uc2UuY3BwCmluZGV4IGJiM2VlMzI3M2RmNGQwNWFmNjEzZjc5ZjNkYjQwMjg5ZDU1MmE3Y2Eu
LmMzODViZWYyNTc2NmNmM2E5MDcxZWIxYzY0ZWNiODg3NTQ2NmY5ZjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vUlRDU3RhdHNSZXNwb25zZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmNw
cApAQCAtMzksMTggKzM5LDEzIEBAIFJUQ1N0YXRzUmVzcG9uc2U6OlJUQ1N0YXRzUmVzcG9uc2Uo
KQogewogfQogCi1QYXNzUmVmUHRyPFJUQ1N0YXRzUmVwb3J0PiBSVENTdGF0c1Jlc3BvbnNlOjpu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQorUmVmUHRyPFJUQ1N0YXRzUmVwb3J0
PiBSVENTdGF0c1Jlc3BvbnNlOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQog
ewogICAgIGlmIChtX2lkbWFwLmZpbmQobmFtZSkgIT0gbV9pZG1hcC5lbmQoKSkKICAgICAgICAg
cmV0dXJuIG1fcmVzdWx0W21faWRtYXAuZ2V0KG5hbWUpXTsKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotYm9vbCBSVENTdGF0c1Jlc3BvbnNlOjpjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRv
bWljU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBtX2lkbWFwLmNvbnRhaW5zKG5hbWUpOwot
fQotCiBzaXplX3QgUlRDU3RhdHNSZXNwb25zZTo6YWRkUmVwb3J0KFN0cmluZyBpZCwgU3RyaW5n
IHR5cGUsIGRvdWJsZSB0aW1lc3RhbXApCiB7CiAgICAgbV9yZXN1bHQuYXBwZW5kKFJUQ1N0YXRz
UmVwb3J0OjpjcmVhdGUoaWQsIHR5cGUsIHRpbWVzdGFtcCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENTdGF0c1Jlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAppbmRleCBkNDFi
OWI4ZDU5M2JmMWFkOTM2ZmQ2NDRjOWQ2NDY0Y2FiODkwODAzLi5kNzA0YWMyY2UyZjJlMDA0MzZk
ZjYxMjlkODBlNTVjZmYyMTIwNTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL1JUQ1N0YXRzUmVzcG9uc2UuaApAQCAtNDUsOCArNDUsNyBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPFJUQ1N0YXRzUmVwb3J0Pj4mIHJlc3VsdCgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0OyB9OwogCi0gICAgUGFzc1JlZlB0cjxSVENTdGF0c1Jl
cG9ydD4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwotICAgIGJvb2wgY2FuR2V0SXRl
bXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmluZyYpOworICAgIFJlZlB0cjxSVENTdGF0c1JlcG9y
dD4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYpOwogCiAgICAgdmlydHVhbCBzaXplX3Qg
YWRkUmVwb3J0KFN0cmluZyBpZCwgU3RyaW5nIHR5cGUsIGRvdWJsZSB0aW1lc3RhbXApIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBhZGRTdGF0aXN0aWMoc2l6ZV90IHJlcG9ydCwgU3RyaW5n
IG5hbWUsIFN0cmluZyB2YWx1ZSkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagppbmRleCBkYTEyMDczN2E3YmQzZDRjNDZjZWVkZTlh
OTc5MTQ2ZDkyMGQ2NDQ3Li5iYzU1NmQzZjY2MDgyYjE1MmUwMmExY2EwYmJkMDBiZjQ1ZjNkYzg1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
QEAgLTE3NzkyLDYgKzE3NzkyLDIwIEBACiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNw
cCI+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9u
KXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z19XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nRGVidWdfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgor
ICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQ
bGF0Zm9ybSknPT0nRGVidWdTdWZmaXh8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBs
YXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZV9XaW5DYWlyb3xXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAg
ICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0
Zm9ybSknPT0nUmVsZWFzZV9XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4K
KyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQo
UGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Cisg
ICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xK
U0RPTVBsdWdpbkFycmF5Q3VzdG9tLmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29u
ZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3xXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nRGVidWd8eDY0JyI+dHJ1ZTwvRXhj
bHVkZWRGcm9tQnVpbGQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggZTFhZTg4ZTliZDYwYzA0MjQwZTc3OWM3
ODkxYTI4NjFhNGQ5NDhkYy4uZmU0YTc4ZDliMjJlYjg4MzdmMzQyZGM4Yjk0YjBiNmQzZWNlZWJh
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4
cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3Jl
LnZjeHByb2ouZmlsdGVycwpAQCAtNDMwOCw2ICs0MzA4LDkgQEAKICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGJpbmRpbmdzXGpzXEpTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAiPgogICAg
ICAgPEZpbHRlcj5iaW5kaW5nc1xqczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5cYmluZGluZ3NcanNcSlNET01OYW1lZEZsb3dDb2xsZWN0aW9u
Q3VzdG9tLmNwcCI+CisgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+CisgICAgPC9D
bENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxiaW5kaW5nc1xqc1xKU0RPTVBs
dWdpbkFycmF5Q3VzdG9tLmNwcCI+CiAgICAgICA8RmlsdGVyPmJpbmRpbmdzXGpzPC9GaWx0ZXI+
CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xNTQ4Myw0ICsxNTQ4Niw0IEBACiAgICAgICA8RmlsdGVy
PnBsYXRmb3JtXHdpbjwvRmlsdGVyPgogICAgIDwvTUFTTT4KICAgPC9JdGVtR3JvdXA+Ci08L1By
b2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDJiZTYx
M2U2NjIyMTk3ZmZhOWJiYjM2ZGE4ZmExZTJkZGY0ZDEwYzkuLjA2YTIwZGVjMzAxNzJjYTBkNTMx
M2QxOTMyZmJiNzI4OGJhMzRmNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE2ODMsNiArMTY4Myw3IEBACiAJCTQ1RkVBNUQw
MTU2RERFOEMwMDY1NDEwMSAvKiBEZWNpbWFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA0NUZFQTVDRTE1NkRERThDMDA2NTQxMDEgLyogRGVjaW1hbC5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ2MzQ1
OTJDMUFDMjI3MTAwMEVDQjcxQyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ2MzQ1OTJCMUFDMjI3MTAwMEVDQjcx
QyAvKiBQb3dlck9ic2VydmVyTWFjLmNwcCAqLzsgfTsKIAkJNDYzNDU5MkUxQUMyMjczQzAwRUNC
NzFDIC8qIFNoYXJlZFRpbWVyQ0YuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDYzNDU5MkQxQUMyMjczQzAwRUNCNzFDIC8qIFNoYXJlZFRpbWVyQ0Yu
Y3BwICovOyB9OworCQk0NjY5QjI4NzFCODUyQTBCMDAwRjkwNUYgLyogSlNET01OYW1lZEZsb3dD
b2xsZWN0aW9uQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDQ2RjI3NjhFMUI4NTI5N0YwMDVDMjU1NiAvKiBKU0RPTU5hbWVkRmxvd0NvbGxl
Y3Rpb25DdXN0b20uY3BwICovOyB9OwogCQk0Njg5RjFBRjEyNjdCQUUxMDBFOEQzODAgLyogRmls
ZU1ldGFkYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0Njg5RjFBRTEyNjdCQUUxMDBFOEQzODAgLyogRmlsZU1ldGFkYXRhLmggKi87IH07CiAJCTQ2
QzgzRUZEMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NkM4M0VGQjFBOUJCRTI5MDBBNzlBNDEg
LyogR2VvTm90aWZpZXIuY3BwICovOyB9OwogCQk0NkM4M0VGRTFBOUJCRTI5MDBBNzlBNDEgLyog
R2VvTm90aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ2QzgzRUZDMUE5QkJFMjkwMEE3OUE0MSAvKiBHZW9Ob3RpZmllci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC04OTM1LDYgKzg5MzYsNyBA
QAogCQk0NkRCN0Q1OTFCMjBGRTU4MDA1NjUxQjIgLyogVk5vZGVUcmFja2VyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZOb2RlVHJhY2tlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk0NkRCQjY0RTFBQjhDOTZGMDBEOUE4MTMgLyogUG93ZXJPYnNlcnZlck1h
Yy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQb3dlck9ic2VydmVyTWFjLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQ2RUJFQTAxMUI3RDRENUQwMEJFNDk0MSAv
KiBDb2xsZWN0aW9uVHJhdmVyc2FsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IENvbGxlY3Rpb25UcmF2ZXJzYWwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDZG
Mjc2OEUxQjg1Mjk3RjAwNUMyNTU2IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0RPTU5hbWVkRmxvd0Nv
bGxlY3Rpb25DdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0OTA3MDdF
NDEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJLaXRCcmlkZ2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQU5HTEVXZWJLaXRCcmlkZ2UuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk0OTA3MDdFNTEyMTlDMDQzMDBEOTBFNTEgLyogQU5HTEVXZWJL
aXRCcmlkZ2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQU5HTEVXZWJLaXRC
cmlkZ2UuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDkyOTFFNEExMzQxNzJDODAw
RTc1M0RFIC8qIEltYWdlUmVuZGVyaW5nTW9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbWFnZVJlbmRlcmluZ01vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
QEAgLTIxMzYzLDYgKzIxMzY1LDcgQEAKIAkJCQlFMUMzNkMwMjBFQjA3NkQ2MDA3NDEwQkMgLyog
SlNET01HbG9iYWxPYmplY3QuaCAqLywKIAkJCQk3QzJCREQzQjE3QzdGOThCMDAzOEZGMTUgLyog
SlNET01HbG9iYWxPYmplY3RUYXNrLmNwcCAqLywKIAkJCQk3QzJCREQzQzE3QzdGOThCMDAzOEZG
MTUgLyogSlNET01HbG9iYWxPYmplY3RUYXNrLmggKi8sCisJCQkJNDZGMjc2OEUxQjg1Mjk3RjAw
NUMyNTU2IC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgKi8sCiAJCQkJRTE3
MkFGOEQxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5jcHAgKi8sCiAJCQkJRTE3MkFG
OEUxODExQkMzNzAwRkJBREI5IC8qIEpTRE9NUHJvbWlzZS5oICovLAogCQkJCUJDNjkzMjcxMEQ3
RTI5MzkwMEFFNDREMSAvKiBKU0RPTVdpbmRvd0Jhc2UuY3BwICovLApAQCAtMzAwMTEsNiArMzAw
MTQsNyBAQAogCQkJCUE4REY0QUVDMDk4MEM0MkMwMDUyOTgxQiAvKiBSZW5kZXJUYWJsZS5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQk2RUQ4NzhDNDE0NzQ5M0Y0MDA0QzM1OTcgLyogUmVuZGVyVGFi
bGVDYXB0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4REY0QUVBMDk4MEM0MkMwMDUyOTgx
QiAvKiBSZW5kZXJUYWJsZUNlbGwuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDY2OUIyODcxQjg1
MkEwQjAwMEY5MDVGIC8qIEpTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlBOERGNEFFODA5ODBDNDJDMDA1Mjk4MUIgLyogUmVuZGVyVGFibGVDb2wu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQThERjRBRjAwOTgwQzQyQzAwNTI5ODFCIC8qIFJlbmRl
clRhYmxlUm93LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE4REY0QUVEMDk4MEM0MkMwMDUyOTgx
QiAvKiBSZW5kZXJUYWJsZVNlY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01NaW1lVHlwZUFycmF5Q3VzdG9tLmNwcApp
bmRleCA3MDMxYmExY2QxNjFjNjliMjlhZGVkOThlNDdjMGVmZGUyODg4YzhlLi40MzEyYWUyNzY5
NWUyODZmNzc5MmI0MGUzZGQ1Yzc4NmU4MzY5YzAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTU1pbWVUeXBlQXJyYXlDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTWltZVR5cGVBcnJheUN1c3RvbS5jcHAKQEAgLTI5LDE3
ICsyOSwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
LWJvb2wgSlNET01NaW1lVHlwZUFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwg
RE9NTWltZVR5cGVBcnJheSogbWltZVR5cGVBcnJheSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFt
ZSkKK2Jvb2wgSlNET01NaW1lVHlwZUFycmF5OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywg
UHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgcmV0dXJu
IG1pbWVUeXBlQXJyYXktPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0
cmluZyhwcm9wZXJ0eU5hbWUpKTsKLX0KKyAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGlmICghaXRl
bSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0RPTU1pbWVUeXBl
QXJyYXk6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIEpTRE9NTWlt
ZVR5cGVBcnJheSogdGhpc09iaiA9IGpzRHluYW1pY0Nhc3Q8SlNET01NaW1lVHlwZUFycmF5Kj4o
c2xvdEJhc2UpOwotICAgIGlmICghdGhpc09iaikKLSAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYyk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFt
ZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSk7CisgICAgdmFsdWUgPSB0b0pTKGV4ZWMs
IGdsb2JhbE9iamVjdCgpLCBpdGVtKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01OYW1lZEZsb3dDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjcyYmFk
MzVjMTQwYzNlZGMzM2EzOWRjYmVkOTRkZDYyMDIzODEyZAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NTmFtZWRGbG93Q29sbGVjdGlvbkN1c3RvbS5j
cHAKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJKU0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaCIKKworI2luY2x1ZGUgIkRPTU5hbWVk
Rmxvd0NvbGxlY3Rpb24uaCIKKyNpbmNsdWRlICJKU0RPTUJpbmRpbmcuaCIKKyNpbmNsdWRlICJK
U1dlYktpdE5hbWVkRmxvdy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3VzaW5nIG5hbWVz
cGFjZSBKU0M7CisKK2Jvb2wgSlNET01OYW1lZEZsb3dDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUp
Cit7CisgICAgYXV0byBpdGVtID0gaW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21p
Y1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBpZiAoIWl0ZW0pCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgaXRlbSk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NUGx1Z2luQXJyYXlDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAKaW5k
ZXggMTY4Mjg3YWNkNjBiYmJiMjc5Yzg5YTYyMzIyOGExZDVhYjI3YmFiNi4uMjY2OWQ4MzdkZjI5
MzQ2NTIzNWE4OTQyNTE0MmVmNmMxNzQ5ODMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01QbHVnaW5BcnJheUN1c3RvbS5jcHAKQEAgLTI5LDE1ICsyOSwx
NCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKLWJvb2wg
SlNET01QbHVnaW5BcnJheTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIERPTVBsdWdp
bkFycmF5KiBwbHVnaW5BcnJheSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNE
T01QbHVnaW5BcnJheTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBwbHVnaW5BcnJheS0+
Y2FuR2V0SXRlbXNGb3JOYW1lKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOwotfQorICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLUVuY29kZWRKU1ZhbHVlIEpTRE9NUGx1Z2luQXJyYXk6Om5hbWVHZXR0ZXIo
RXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIEpTRE9NUGx1Z2luQXJyYXkqIHRoaXNPYmog
PSBqc0Nhc3Q8SlNET01QbHVnaW5BcnJheSo+KHNsb3RCYXNlKTsKLSAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0KCksIHRoaXNPYmotPmlt
cGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSkp
KTsKKyAgICB2YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pOworICAgIHJl
dHVybiB0cnVlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0RPTVBsdWdpbkN1c3RvbS5jcHAKaW5kZXggZmI3ZGEwNjgxYzRl
ZjA3OTc3ZmZiNzUxN2JkNDExYmRhZGU5NmNlNC4uMWE3NTg2ZGJmZmMwMzIzYjgxMWI1NTdlMzlm
NTU4YjcwYmNmMDNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01QbHVnaW5DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
UGx1Z2luQ3VzdG9tLmNwcApAQCAtMjcsMTUgKzI3LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotYm9vbCBKU0RPTVBsdWdpbjo6Y2FuR2V0SXRlbXNG
b3JOYW1lKEV4ZWNTdGF0ZSosIERPTVBsdWdpbiogcGx1Z2luLCBQcm9wZXJ0eU5hbWUgcHJvcGVy
dHlOYW1lKQorYm9vbCBKU0RPTVBsdWdpbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBw
bHVnaW4tPmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKLX0KKyAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5
TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGlmICghaXRlbSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0RPTVBsdWdpbjo6bmFtZUdldHRl
cihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFBy
b3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgSlNET01QbHVnaW4qIHRoaXNPYmogPSBq
c0Nhc3Q8SlNET01QbHVnaW4qPihzbG90QmFzZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2JqLT5pbXBsKCkubmFt
ZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpKSk7CisgICAg
dmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpdGVtKTsKKyAgICByZXR1cm4gdHJ1
ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAyZDU2
MzBlYTcwMTlkMzY4N2FmYWUzOTdkN2M4ZWVlYjhjNjI3NzhjLi43NWNmZTVmNjZjYmQwYjMxNDE1
ODYzMzM0MTIyNDU3MDI2MmJkMzczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0hUTUxBbGxDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtODgsMTUgKzg4LDE0
IEBAIENhbGxUeXBlIEpTSFRNTEFsbENvbGxlY3Rpb246OmdldENhbGxEYXRhKEpTQ2VsbCosIENh
bGxEYXRhJiBjYWxsRGF0YSkKICAgICByZXR1cm4gQ2FsbFR5cGVIb3N0OwogfQogCi1ib29sIEpT
SFRNTEFsbENvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQWxs
Q29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wg
SlNIVE1MQWxsQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5
TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBjb2xsZWN0
aW9uLT5oYXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1l
KSk7Ci19CisgICAgSlNWYWx1ZSBpdGVtcyA9IG5hbWVkSXRlbXMoZXhlYywgdGhpcywgcHJvcGVy
dHlOYW1lKTsKKyAgICBpZiAoaXRlbXMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0hUTUxBbGxDb2xsZWN0aW9uOjpuYW1lR2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU0hUTUxBbGxDb2xsZWN0aW9uKiB0aGlzT2Jq
ID0ganNDYXN0PEpTSFRNTEFsbENvbGxlY3Rpb24qPihzbG90QmFzZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShuYW1lZEl0ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSkpOwor
ICAgIHZhbHVlID0gaXRlbXM7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIEpTVmFsdWUgSlNIVE1M
QWxsQ29sbGVjdGlvbjo6aXRlbShFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDM2NDAy
NGYyZDcyNWZhMjQ5MWZjOTFiZDJmYjdkMTdlZjQzMmQzYmQuLjcyNzlhOTQ1MGExNzEzNDA1M2Y2
ODMwMjVjM2MxMDg3ZGE1MDc5MGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTENvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC00MCwxOCArNDAsMTcgQEAgdXNp
bmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTSFRNTENv
bGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MQ29sbGVjdGlvbiog
Y29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNIVE1MQ29sbGVj
dGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0
ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci19CisgICAgQVNT
RVJUX1dJVEhfTUVTU0FHRShpbXBsKCkudHlwZSgpICE9IEZvcm1Db250cm9scywgIlNob3VsZCBj
YWxsIHRoZSBzdWJjbGFzcycgbmFtZUdldHRlciIpOworICAgIEFTU0VSVF9XSVRIX01FU1NBR0Uo
aW1wbCgpLnR5cGUoKSAhPSBTZWxlY3RPcHRpb25zLCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNsYXNz
JyBuYW1lR2V0dGVyIik7CiAKLUVuY29kZWRKU1ZhbHVlIEpTSFRNTENvbGxlY3Rpb246Om5hbWVH
ZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVl
LCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIEpTSFRNTENvbGxlY3Rpb24qIGNv
bGxlY3Rpb24gPSBqc0Nhc3Q8SlNIVE1MQ29sbGVjdGlvbio+KHNsb3RCYXNlKTsKLSAgICBBU1NF
UlRfV0lUSF9NRVNTQUdFKGNvbGxlY3Rpb24tPmltcGwoKS50eXBlKCkgIT0gRm9ybUNvbnRyb2xz
LCAiU2hvdWxkIGNhbGwgdGhlIHN1YmNsYXNzJyBuYW1lR2V0dGVyIik7Ci0gICAgQVNTRVJUX1dJ
VEhfTUVTU0FHRShjb2xsZWN0aW9uLT5pbXBsKCkudHlwZSgpICE9IFNlbGVjdE9wdGlvbnMsICJT
aG91bGQgY2FsbCB0aGUgc3ViY2xhc3MnIG5hbWVHZXR0ZXIiKTsKLSAgICBjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOwot
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBjb2xsZWN0aW9uLT5nbG9iYWxP
YmplY3QoKSwgY29sbGVjdGlvbi0+aW1wbCgpLm5hbWVkSXRlbShuYW1lKSkpOworICAgIGF1dG8g
aXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2
YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pOworICAgIHJldHVybiB0cnVl
OwogfQogCiBKU1ZhbHVlIHRvSlMoRXhlY1N0YXRlKiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSFRNTENvbGxlY3Rpb24qIGNvbGxlY3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKaW5kZXggNmQzOWM0NTlk
N2QyNTU1NGE5N2RlNGRiNzI0ZDMxNjVjMjkzM2RiMi4uMDUyYTU0NjU3ZTBkNjdhNTg0YjU3Njhk
N2E5YjYzOWIxOTlhYTk5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcApAQCAtNTIsMTIgKzUyLDYgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCi1ib29sIEpTSFRNTERvY3Vt
ZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTERvY3VtZW50KiBkb2N1bWVu
dCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBBdG9taWNTdHJpbmdJbXBsKiBh
dG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUucHVibGljTmFtZSgpOwotICAgIHJldHVy
biBhdG9taWNQcm9wZXJ0eU5hbWUgJiYgZG9jdW1lbnQtPmhhc0RvY3VtZW50TmFtZWRJdGVtKCph
dG9taWNQcm9wZXJ0eU5hbWUpOwotfQotCiBib29sIEpTSFRNTERvY3VtZW50OjpnZXRPd25Qcm9w
ZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBQcm9wZXJ0eVNsb3QmIHNsb3QpCiB7CiAgICAgSlNIVE1MRG9jdW1lbnQq
IHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNIVE1MRG9jdW1lbnQqPihvYmplY3QpOwpAQCAtNzEsOCAr
NjUsOSBAQCBib29sIEpTSFRNTERvY3VtZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3Qq
IG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICB9CiAKLSAgICBpZiAoY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsICZ0aGlzT2JqZWN0LT5pbXBs
KCksIHByb3BlcnR5TmFtZSkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIp
OworICAgIEpTVmFsdWUgdmFsdWU7CisgICAgaWYgKHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIoZXhl
YywgcHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2Jq
ZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdmFsdWUpOwogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTg0LDI4ICs3OSwzMSBAQCBib29sIEpTSFRNTERvY3Vt
ZW50OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVj
LCBQcm9wZQogICAgIHJldHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3QodGhpc09iamVjdCwg
ZXhlYywgcHJvcGVydHlOYW1lLCBzbG90KTsKIH0KIAotRW5jb2RlZEpTVmFsdWUgSlNIVE1MRG9j
dW1lbnQ6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVu
Y29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxEb2N1
bWVudDo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5h
bWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIEpTSFRNTERvY3VtZW50KiB0aGlzT2JqID0ganND
YXN0PEpTSFRNTERvY3VtZW50Kj4oc2xvdEJhc2UpOwotICAgIEhUTUxEb2N1bWVudCYgZG9jdW1l
bnQgPSB0aGlzT2JqLT5pbXBsKCk7CisgICAgYXV0byYgZG9jdW1lbnQgPSBpbXBsKCk7CiAKICAg
ICBBdG9taWNTdHJpbmdJbXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBwcm9wZXJ0eU5hbWUucHVi
bGljTmFtZSgpOwogICAgIGlmICghYXRvbWljUHJvcGVydHlOYW1lIHx8ICFkb2N1bWVudC5oYXNE
b2N1bWVudE5hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgaWYgKFVOTElLRUxZKGRvY3VtZW50LmRvY3VtZW50TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBs
ZUVsZW1lbnRzKCphdG9taWNQcm9wZXJ0eU5hbWUpKSkgewogICAgICAgICBSZWY8SFRNTENvbGxl
Y3Rpb24+IGNvbGxlY3Rpb24gPSBkb2N1bWVudC5kb2N1bWVudE5hbWVkSXRlbXMoYXRvbWljUHJv
cGVydHlOYW1lKTsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgpID4gMSk7Ci0g
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSwgV1RGOjpnZXRQdHIoY29sbGVjdGlvbikpKTsKKyAgICAgICAgdmFsdWUgPSB0b0pT
KGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBXVEY6OmdldFB0cihjb2xsZWN0aW9uKSk7CisgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBkb2N1bWVudC5k
b2N1bWVudE5hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKTsKICAgICBpZiAoVU5MSUtFTFko
aXM8SFRNTElGcmFtZUVsZW1lbnQ+KCplbGVtZW50KSkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBm
cmFtZSA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50PigqZWxlbWVudCkuY29udGVudEZyYW1l
KCkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgZnJhbWUp
KTsKKyAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvd25jYXN0PEhUTUxJRnJhbWVFbGVtZW50
PigqZWxlbWVudCkuY29udGVudEZyYW1lKCkpIHsKKyAgICAgICAgICAgIHZhbHVlID0gdG9KUyhl
eGVjLCBmcmFtZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0K
IAotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCB0aGlzT2JqLT5nbG9iYWxP
YmplY3QoKSwgZWxlbWVudCkpOworICAgIHZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3Qo
KSwgZWxlbWVudCk7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIC8vIEN1c3RvbSBhdHRyaWJ1dGVz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGb3JtQ29udHJv
bHNDb2xsZWN0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCmluZGV4IDI4NDg5NzEyYTdmNmNjYzQ5
OTA3YTZhZmIzMTVkYzVmZDdjOGNkY2IuLmVjN2Y3ZGJiNmI4NDFlMWMyZTQwZTBmOTI0MTYyN2Rj
OTAzZWFkZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZv
cm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb25DdXN0b20uY3BwCkBAIC00NCwxNSAr
NDQsMTQgQEAgc3RhdGljIEpTVmFsdWUgbmFtZWRJdGVtcyhFeGVjU3RhdGUqIGV4ZWMsIEpTSFRN
TEZvcm1Db250cm9sc0NvbGxlY3Rpb24qIGNvbGxlY3QKICAgICByZXR1cm4gdG9KUyhleGVjLCBj
b2xsZWN0aW9uLT5nbG9iYWxPYmplY3QoKSwgY29sbGVjdGlvbi0+aW1wbCgpLm93bmVyTm9kZSgp
LnJhZGlvTm9kZUxpc3QobmFtZSkuZ2V0KCkpOwogfQogCi1ib29sIEpTSFRNTEZvcm1Db250cm9s
c0NvbGxlY3Rpb246OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBIVE1MRm9ybUNvbnRy
b2xzQ29sbGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbjo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUmIHZhbHVlKQogewotICAgIHJl
dHVybiBjb2xsZWN0aW9uLT5oYXNOYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSk7Ci19CisgICAgYXV0byBpdGVtcyA9IG5hbWVkSXRlbXMoZXhlYywgdGhp
cywgcHJvcGVydHlOYW1lKTsKKyAgICBpZiAoaXRlbXMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi1FbmNvZGVkSlNWYWx1ZSBKU0hUTUxGb3JtQ29udHJvbHNDb2xsZWN0
aW9uOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNv
ZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU0hUTUxGb3Jt
Q29udHJvbHNDb2xsZWN0aW9uKiB0aGlzT2JqID0ganNDYXN0PEpTSFRNTEZvcm1Db250cm9sc0Nv
bGxlY3Rpb24qPihzbG90QmFzZSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShuYW1lZEl0
ZW1zKGV4ZWMsIHRoaXNPYmosIHByb3BlcnR5TmFtZSkpOworICAgIHZhbHVlID0gaXRlbXM7Cisg
ICAgcmV0dXJuIHRydWU7CiB9CiAKIEpTVmFsdWUgSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlv
bjo6bmFtZWRJdGVtKEV4ZWNTdGF0ZSogZXhlYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTSFRNTEZvcm1FbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzZDM5YmQxNTNh
ZThiMzNlMDE5NjllYjg5MGFjZWFiZDRhMDRmM2EyLi5lMzRjMDM1NDZkZGVhNmNhZGVkMWEzY2Fj
OWY3YmY3ZjMzODhiYmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0hUTUxGb3JtRWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNIVE1MRm9ybUVsZW1lbnRDdXN0b20uY3BwCkBAIC0zNywyNSArMzcsMjAgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTSFRNTEZvcm1F
bGVtZW50OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgSFRNTEZvcm1FbGVtZW50KiBm
b3JtLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU0hUTUxGb3JtRWxlbWVudDo6
bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpT
VmFsdWUmIHZhbHVlKQogewotICAgIHJldHVybiBmb3JtLT5oYXNOYW1lZEVsZW1lbnQocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci19Ci0KLUVuY29kZWRKU1ZhbHVl
IEpTSFRNTEZvcm1FbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsK
LSAgICBKU0hUTUxGb3JtRWxlbWVudCoganNGb3JtID0ganNDYXN0PEpTSFRNTEZvcm1FbGVtZW50
Kj4oc2xvdEJhc2UpOwotICAgIEhUTUxGb3JtRWxlbWVudCYgZm9ybSA9IGpzRm9ybS0+aW1wbCgp
OwotCi0gICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyA9IGZvcm0ubmFtZWRFbGVt
ZW50cyhwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKKyAgICBWZWN0
b3I8UmVmPEVsZW1lbnQ+PiBuYW1lZEl0ZW1zID0gaW1wbCgpLm5hbWVkRWxlbWVudHMocHJvcGVy
dHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CiAgICAgCiAgICAgaWYgKG5hbWVk
SXRlbXMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIGlmIChuYW1lZEl0ZW1zLnNpemUoKSA9PSAxKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywganNGb3JtLT5nbG9iYWxPYmplY3QoKSwgJm5hbWVk
SXRlbXNbMF0uZ2V0KCkpKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmIChuYW1lZEl0
ZW1zLnNpemUoKSA9PSAxKSB7CisgICAgICAgIHZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmpl
Y3QoKSwgbmFtZWRJdGVtc1swXS5wdHIoKSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
IAogICAgIC8vIEZJWE1FOiBIVE1MNSBzcGVjaWZpZXMgdGhhdCB0aGlzIHNob3VsZCBiZSBhIFJh
ZGlvTm9kZUxpc3QuCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzRm9y
bS0+Z2xvYmFsT2JqZWN0KCksIFN0YXRpY0VsZW1lbnRMaXN0OjphZG9wdChuYW1lZEl0ZW1zKS5n
ZXQoKSkpOworICAgIHZhbHVlID0gdG9KUyhleGVjLCBnbG9iYWxPYmplY3QoKSwgU3RhdGljRWxl
bWVudExpc3Q6OmFkb3B0KG5hbWVkSXRlbXMpLmdldCgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVT
ZXRFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEZy
YW1lU2V0RWxlbWVudEN1c3RvbS5jcHAKaW5kZXggNzdlYWZmNTgwMTdmZjFmMmI1NmVkZjE4Nzcw
OGY2ZjI0MjQwMWVmYy4uNzA4NTZlNTUzYzRmZDZjN2QwMjBmYjk3MzU4OTg2YTI2NTI1MzU2YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRnJhbWVTZXRFbGVt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxGcmFt
ZVNldEVsZW1lbnRDdXN0b20uY3BwCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSFRNTENv
bGxlY3Rpb24uaCIKICNpbmNsdWRlICJIVE1MRnJhbWVFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRN
TEZyYW1lU2V0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkpT
RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3dTaGVsbC5oIgogI2luY2x1ZGUgIkpT
RE9NQmluZGluZy5oIgpAQCAtMzksMjMgKzM4LDE5IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKLQotYm9v
bCBKU0hUTUxGcmFtZVNldEVsZW1lbnQ6OmNhbkdldEl0ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBI
VE1MRnJhbWVTZXRFbGVtZW50KiBmcmFtZVNldCwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkK
LXsKLSAgICBOb2RlKiBmcmFtZSA9IGZyYW1lU2V0LT5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJv
cGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7Ci0gICAgcmV0dXJuIGZyYW1l
ICYmIGZyYW1lLT5oYXNUYWdOYW1lKGZyYW1lVGFnKTsKLX0KLQotRW5jb2RlZEpTVmFsdWUgSlNI
VE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
IHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jv
b2wgSlNIVE1MRnJhbWVTZXRFbGVtZW50OjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAgSFRNTEVsZW1l
bnQmIGVsZW1lbnQgPSBqc0Nhc3Q8SlNIVE1MRWxlbWVudCo+KHNsb3RCYXNlKS0+aW1wbCgpOwot
ICAgIE5vZGUqIGZyYW1lRWxlbWVudCA9IGVsZW1lbnQuY2hpbGRyZW4oKS0+bmFtZWRJdGVtKHBy
b3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotICAgIGlmIChEb2N1bWVu
dCogZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50PihmcmFtZUVsZW1lbnQpLT5j
b250ZW50RG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoSlNET01XaW5kb3dTaGVsbCogd2luZG93
ID0gdG9KU0RPTVdpbmRvd1NoZWxsKGRvY3VtZW50LT5mcmFtZSgpLCBjdXJyZW50V29ybGQoZXhl
YykpKQotICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh3aW5kb3cpOworICAgIGF1
dG8qIGZyYW1lRWxlbWVudCA9IGltcGwoKS5jaGlsZHJlbigpLT5uYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9BdG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgaWYgKCFpczxIVE1MRnJhbWVF
bGVtZW50PihmcmFtZUVsZW1lbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
YXV0byogZG9jdW1lbnQgPSBkb3duY2FzdDxIVE1MRnJhbWVFbGVtZW50PigqZnJhbWVFbGVtZW50
KS5jb250ZW50RG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoSlNET01XaW5kb3dTaGVsbCogd2lu
ZG93ID0gdG9KU0RPTVdpbmRvd1NoZWxsKGRvY3VtZW50LT5mcmFtZSgpLCBjdXJyZW50V29ybGQo
ZXhlYykpKSB7CisgICAgICAgICAgICB2YWx1ZSA9IHdpbmRvdzsKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CisgICAgcmV0dXJuIGZhbHNlOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxPcHRpb25z
Q29sbGVjdGlvbkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxP
cHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKaW5kZXggN2MwZDY5MDYxMzY3YTQ5YmNhNjdlMTVi
OGNkMDMzNmY1ZTZjNTRkOC4uZmIzNzVlZjk5N2Q4MjQ4MWMwZTBhM2JjYjFmYzFhNWU2YzZmNWNj
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MT3B0aW9uc0Nv
bGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRN
TE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcApAQCAtMzcsMTYgKzM3LDE0IEBAIHVzaW5nIG5h
bWVzcGFjZSBKU0M7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU0hUTUxPcHRpb25z
Q29sbGVjdGlvbjo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIEhUTUxPcHRpb25zQ29s
bGVjdGlvbiogY29sbGVjdGlvbiwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKK2Jvb2wgSlNI
VE1MT3B0aW9uc0NvbGxlY3Rpb246Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0
eU5hbWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gY29sbGVj
dGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFt
ZSkpOwotfQorICAgIGF1dG8gaXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9B
dG9taWNTdHJpbmcocHJvcGVydHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLUVuY29kZWRKU1ZhbHVlIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpuYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKLXsKLSAgICBKU0hUTUxDb2xsZWN0aW9uKiBj
b2xsZWN0aW9uID0ganNDYXN0PEpTSFRNTENvbGxlY3Rpb24qPihzbG90QmFzZSk7Ci0gICAgY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lID0gcHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKTsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgY29sbGVjdGlv
bi0+Z2xvYmFsT2JqZWN0KCksIGNvbGxlY3Rpb24tPmltcGwoKS5uYW1lZEl0ZW0obmFtZSkpKTsK
KyAgICB2YWx1ZSA9IHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0pOworICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIEpTSFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpzZXRMZW5ndGgoRXhl
Y1N0YXRlKiBleGVjLCBKU1ZhbHVlIHZhbHVlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwCmluZGV4IGUxMDEyMmMwMzAxNjc2ZWIx
OGYyODJkZTY1NTk2MTA0MDYyMmIxMzkuLjg0NmNmOGZhYThjNTExZWY4MjE1MTcwMWI0YTAwOGJh
ZmExYmZjZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTmFtZWRO
b2RlTWFwQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05hbWVk
Tm9kZU1hcEN1c3RvbS5jcHAKQEAgLTM1LDE1ICszNSwxNCBAQCB1c2luZyBuYW1lc3BhY2UgSlND
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWJvb2wgSlNOYW1lZE5vZGVNYXA6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOYW1lZE5vZGVNYXAqIGltcGwsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCitib29sIEpTTmFtZWROb2RlTWFwOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSog
ZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7Ci0gICAg
cmV0dXJuIGltcGwtPmdldE5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKTsKLX0KKyAgICBhdXRvIGl0ZW0gPSBpbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3Bl
cnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGlmICghaXRlbSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi1FbmNvZGVkSlNWYWx1ZSBKU05hbWVkTm9kZU1hcDo6bmFt
ZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFzZSwgRW5jb2RlZEpTVmFs
dWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgSlNOYW1lZE5vZGVNYXAqIHRo
aXNPYmogPSBqc0Nhc3Q8SlNOYW1lZE5vZGVNYXAqPihzbG90QmFzZSk7Ci0gICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlzT2Jq
LT5pbXBsKCkuZ2V0TmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKSk7CisgICAgdmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpdGVtKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU05vZGVMaXN0Q3VzdG9tLmNwcAppbmRleCA2OWQzYmU3
ZGFlMjFhNTc1OGI0YTQxMzc1YjBhMjYxNTcwNzI2Yjg5Li4yZmQ5ZjMzZjEzYjA5ZjhhZjlkMjEx
MjhmODJjZmEyZjZmMWE0NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU05vZGVMaXN0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U05vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNTEsMjAgKzUxLDE2IEBAIGJvb2wgSlNOb2RlTGlzdE93
bmVyOjppc1JlYWNoYWJsZUZyb21PcGFxdWVSb290cyhKU0M6OkhhbmRsZTxKU0M6OlVua25vd24+
IGhhbmRsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEpTTm9kZUxpc3Q6OmNhbkdldEl0
ZW1zRm9yTmFtZShFeGVjU3RhdGUqLCBOb2RlTGlzdCogbm9kZUxpc3QsIFByb3BlcnR5TmFtZSBw
cm9wZXJ0eU5hbWUpCisvLyBGSVhNRTogTm9kZUxpc3Qgc2hvdWxkIG5vdCBoYXZlIGEgbmFtZWQg
Z2V0dGVyLiBJdCBjdXJyZW50bHkgaGFzIG9uZSBiZWNhdXNlIGdldEVsZW1lbnRCeVRhZ05hbWUo
KQorLy8gcmV0dXJucyBhIE5vZGVMaXN0IGluc3RlYWQgb2YgYW4gSFRNTENvbGxlY3Rpb24uCiti
b29sIEpTTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5hbWUg
cHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICAvLyBGSVhNRTogTm9kZUxpc3Qg
c2hvdWxkIG5vdCBoYXZlIGEgbmFtZWQgZ2V0dGVyLiBJdCBjdXJyZW50bHkgaGFzIG9uZSBiZWNh
dXNlIGdldEVsZW1lbnRCeVRhZ05hbWUoKQotICAgIC8vIHJldHVybnMgYSBOb2RlTGlzdCBpbnN0
ZWFkIG9mIGFuIEhUTUxDb2xsZWN0aW9uLgotICAgIHJldHVybiBub2RlTGlzdC0+bmFtZWRJdGVt
KHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOwotfQorICAgIGF1dG8g
aXRlbSA9IGltcGwoKS5uYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmcocHJvcGVy
dHlOYW1lKSk7CisgICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLUVuY29k
ZWRKU1ZhbHVlIEpTTm9kZUxpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQot
ewotICAgIC8vIEZJWE1FOiBOb2RlTGlzdCBzaG91bGQgbm90IGhhdmUgYSBuYW1lZCBnZXR0ZXIu
IEl0IGN1cnJlbnRseSBoYXMgb25lIGJlY2F1c2UgZ2V0RWxlbWVudEJ5VGFnTmFtZSgpCi0gICAg
Ly8gcmV0dXJucyBhIE5vZGVMaXN0IGluc3RlYWQgb2YgYW4gSFRNTENvbGxlY3Rpb24uCi0gICAg
SlNOb2RlTGlzdCogbm9kZUxpc3QgPSBqc0Nhc3Q8SlNOb2RlTGlzdCo+KHNsb3RCYXNlKTsKLSAg
ICBjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUgPSBwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpOwotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCBub2Rl
TGlzdC0+Z2xvYmFsT2JqZWN0KCksIG5vZGVMaXN0LT5pbXBsKCkubmFtZWRJdGVtKG5hbWUpKSk7
CisgICAgdmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpdGVtKTsKKyAgICByZXR1
cm4gdHJ1ZTsKIH0KIAogSlNDOjpKU1ZhbHVlIGNyZWF0ZVdyYXBwZXIoSlNET01HbG9iYWxPYmpl
Y3QmIGdsb2JhbE9iamVjdCwgTm9kZUxpc3QmIG5vZGVMaXN0KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUlRDU3RhdHNSZXNwb25zZUN1c3RvbS5jcHAKaW5kZXgg
M2Y3MTI4OWE5OGYzZmZmNzFmZjU3NzUwNjM4YzEwMGIzYWQ5YmJjNC4uOWVmNWU5M2VkMWNlNWFm
YWJiZDlhZGNiMGRjYjZhMzhiNGY0YWQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNSVENTdGF0c1Jlc3BvbnNlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1JUQ1N0YXRzUmVzcG9uc2VDdXN0b20uY3BwCkBAIC0zNiwxNSArMzYs
MTQgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29s
IEpTUlRDU3RhdHNSZXNwb25zZTo6Y2FuR2V0SXRlbXNGb3JOYW1lKEV4ZWNTdGF0ZSosIFJUQ1N0
YXRzUmVzcG9uc2UqIHJlc3BvbnNlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBK
U1JUQ1N0YXRzUmVzcG9uc2U6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lLCBKU1ZhbHVlJiB2YWx1ZSkKIHsKLSAgICByZXR1cm4gcmVzcG9uc2Ut
PmNhbkdldEl0ZW1zRm9yTmFtZShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9wZXJ0eU5h
bWUpKTsKLX0KKyAgICBhdXRvIGl0ZW0gPSBpbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRv
QXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSkpOworICAgIGlmICghaXRlbSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi1FbmNvZGVkSlNWYWx1ZSBKU1JUQ1N0YXRzUmVzcG9uc2U6Om5hbWVHZXR0
ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2UsIEVuY29kZWRKU1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIEpTUlRDU3RhdHNSZXNwb25zZSogdGhp
c09iaiA9IGpzQ2FzdDxKU1JUQ1N0YXRzUmVzcG9uc2UqPihzbG90QmFzZSk7Ci0gICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNPYmotPmdsb2JhbE9iamVjdCgpLCB0aGlz
T2JqLT5pbXBsKCkubmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3BlcnR5
TmFtZSkpKSk7CisgICAgdmFsdWUgPSB0b0pTKGV4ZWMsIGdsb2JhbE9iamVjdCgpLCBpdGVtKTsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdG9yYWdlQ3VzdG9tLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3RvcmFnZUN1c3RvbS5jcHAKaW5kZXggZTY1MTM0MGFl
NzNjMzFkMmQ2MTc1NzlmZWU4NWVkY2I1M2ZjZWZiZi4uOWNjNTg1YmQ3ZWIxYWE2ZDljMDRiZDYy
NGRiNjU1YTA1ZDUxMzMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTdG9yYWdlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0
b3JhZ2VDdXN0b20uY3BwCkBAIC0zNSwzMiArMzUsMjAgQEAgdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1ib29sIEpTU3RvcmFnZTo6Y2FuR2V0SXRlbXNGb3JO
YW1lKEV4ZWNTdGF0ZSogZXhlYywgU3RvcmFnZSogaW1wbCwgUHJvcGVydHlOYW1lIHByb3BlcnR5
TmFtZSkKK2Jvb2wgSlNTdG9yYWdlOjpuYW1lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFsdWUpCiB7CiAgICAgaWYgKHByb3BlcnR5
TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKLSAgICBib29sIHJlc3VsdCA9IGltcGwtPmNvbnRhaW5zKHByb3BlcnR5TmFt
ZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKKyAgICBTdHJpbmcgaXRlbSA9IGltcGwoKS5n
ZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHByb3BlcnR5TmFtZSksIGVjKTsKICAgICBzZXRE
T01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLUVuY29kZWRK
U1ZhbHVlIEpTU3RvcmFnZTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBz
bG90QmFzZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCi17Ci0g
ICAgSlNTdG9yYWdlKiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTU3RvcmFnZSo+KHNsb3RCYXNlKTsK
LSAgICBKU1ZhbHVlIHByb3RvdHlwZSA9IHRoaXNPYmplY3QtPnByb3RvdHlwZSgpOwotICAgIFBy
b3BlcnR5U2xvdCBzbG90KHRoaXNPYmplY3QpOwotICAgIGlmIChwcm90b3R5cGUuaXNPYmplY3Qo
KSAmJiBhc09iamVjdChwcm90b3R5cGUpLT5nZXRQcm9wZXJ0eVNsb3QoZXhlYywgcHJvcGVydHlO
YW1lLCBzbG90KSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzbG90LmdldFZhbHVl
KGV4ZWMsIHByb3BlcnR5TmFtZSkpOwogCi0gICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgp
KQorICAgIGlmIChpdGVtLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGpzU3RyaW5nT3JOdWxs
KGV4ZWMsIHRoaXNPYmplY3QtPmltcGwoKS5nZXRJdGVtKHByb3BlcnR5TmFtZVRvU3RyaW5nKHBy
b3BlcnR5TmFtZSksIGVjKSk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CisgICAgdmFsdWUgPSBqc1N0cmluZ1dpdGhD
YWNoZShleGVjLCBpdGVtKTsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBKU1N0b3JhZ2U6
OmRlbGV0ZVByb3BlcnR5KEpTQ2VsbCogY2VsbCwgRXhlY1N0YXRlKiBleGVjLCBQcm9wZXJ0eU5h
bWUgcHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNTdHlsZVNoZWV0TGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcAppbmRleCA4ZDliOTRhYTUxNGIzOTcwMTcyNDQwMTQ2
YzMzMmQ4M2Y3N2E1ZjEwLi5kMWM2MDY1YTk3NTgwZjI5N2U2ZWMyNDdiZmZmODE3NGI4OTk1NmMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRMaXN0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N0eWxlU2hlZXRM
aXN0Q3VzdG9tLmNwcApAQCAtMzUsMTkgKzM1LDE3IEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpjYW5HZXRJdGVt
c0Zvck5hbWUoRXhlY1N0YXRlKiwgU3R5bGVTaGVldExpc3QqIHN0eWxlU2hlZXRMaXN0LCBQcm9w
ZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQorYm9vbCBKU1N0eWxlU2hlZXRMaXN0OjpuYW1lR2V0dGVy
KEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSwgSlNWYWx1ZSYgdmFs
dWUpCiB7CiAgICAgaWYgKHByb3BlcnR5TmFtZS5pc1N5bWJvbCgpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHN0eWxlU2hlZXRMaXN0LT5nZXROYW1lZEl0ZW0ocHJvcGVydHlO
YW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7Ci19CiAKLUVuY29kZWRKU1ZhbHVlIEpTU3R5bGVT
aGVldExpc3Q6Om5hbWVHZXR0ZXIoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogc2xvdEJhc2Us
IEVuY29kZWRKU1ZhbHVlLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQotewotICAgIEpTU3R5
bGVTaGVldExpc3QqIHRoaXNPYmogPSBqc0Nhc3Q8SlNTdHlsZVNoZWV0TGlzdCo+KHNsb3RCYXNl
KTsKLSAgICBIVE1MU3R5bGVFbGVtZW50KiBlbGVtZW50ID0gdGhpc09iai0+aW1wbCgpLmdldE5h
bWVkSXRlbShwcm9wZXJ0eU5hbWVUb1N0cmluZyhwcm9wZXJ0eU5hbWUpKTsKLSAgICBBU1NFUlQo
ZWxlbWVudCk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNPYmot
Pmdsb2JhbE9iamVjdCgpLCBlbGVtZW50LT5zaGVldCgpKSk7CisgICAgYXV0byogaXRlbSA9IGlt
cGwoKS5nZXROYW1lZEl0ZW0ocHJvcGVydHlOYW1lVG9TdHJpbmcocHJvcGVydHlOYW1lKSk7Cisg
ICAgaWYgKCFpdGVtKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICB2YWx1ZSA9IHRvSlMo
ZXhlYywgZ2xvYmFsT2JqZWN0KCksIGl0ZW0tPnNoZWV0KCkpOworICAgIHJldHVybiB0cnVlOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGU1ZjNjZjQ2NjE3MGMxNzNiNGQ1
ZTg4NGNmYjYxNTU2NmUxNzE1YjguLjRlM2ZhZTk3MzhlODQ1NWM1NWE2NmE2Zjk1YzNkMGQzZDgx
MmMzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdl
bmVyYXRvckpTLnBtCkBAIC00MzIsMTAgKzQzMiwxMyBAQCBzdWIgR2VuZXJhdGVHZXRPd25Qcm9w
ZXJ0eVNsb3RCb2R5CiAgICAgICAgICAgICAmJHByb3RvdHlwZUNoZWNrKCk7CiAgICAgICAgIH0K
IAotICAgICAgICAjIFRoZSBmaXJzdCBjb25kaXRpb24gaXMgdG8gbWFrZSBzdXJlIHdlIHVzZSB0
aGUgc3ViY2xhc3MnIG5hbWVkIGdldHRlciBpbnN0ZWFkIG9mIHRoZSBiYXNlIGNsYXNzIG9uZSB3
aGVuIHBvc3NpYmxlLgotICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAg
IGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkgJiYgY2FuR2V0SXRlbXNGb3JO
YW1lKGV4ZWMsICZ0aGlzT2JqZWN0LT5pbXBsKCksIHByb3BlcnR5TmFtZSkpIHtcbiIpOwotICAg
ICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICBzbG90LnNldEN1c3Rv
bSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdGhpc09iamVj
dC0+bmFtZUdldHRlcik7XG4iKTsKLSAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90SW1w
bCwgIiAgICAgICAgcmV0dXJuIHRydWU7XG4iKTsKKyAgICAgICAgIyBUaGlzIGNvbmRpdGlvbiBp
cyB0byBtYWtlIHN1cmUgd2UgdXNlIHRoZSBzdWJjbGFzcycgbmFtZWQgZ2V0dGVyIGluc3RlYWQg
b2YgdGhlIGJhc2UgY2xhc3Mgb25lIHdoZW4gcG9zc2libGUuCisgICAgICAgIHB1c2goQGdldE93
blByb3BlcnR5U2xvdEltcGwsICIgICAgaWYgKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09IGlu
Zm8oKSkge1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3BlcnR5U2xvdEltcGwsICIgICAg
ICAgIEpTVmFsdWUgdmFsdWU7XG4iKTsKKyAgICAgICAgcHVzaChAZ2V0T3duUHJvcGVydHlTbG90
SW1wbCwgIiAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIoZXhlYywgcHJvcGVydHlO
YW1lLCB2YWx1ZSkpIHtcbiIpOworICAgICAgICBwdXNoKEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBs
LCAiICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnRE
ZWxldGUgfCBEb250RW51bSwgdmFsdWUpO1xuIik7CisgICAgICAgIHB1c2goQGdldE93blByb3Bl
cnR5U2xvdEltcGwsICIgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiIpOworICAgICAgICBwdXNo
KEBnZXRPd25Qcm9wZXJ0eVNsb3RJbXBsLCAiICAgICAgICB9XG4iKTsKICAgICAgICAgcHVzaChA
Z2V0T3duUHJvcGVydHlTbG90SW1wbCwgIiAgICB9XG4iKTsKICAgICAgICAgaWYgKCRpbmxpbmVk
KSB7CiAgICAgICAgICAgICAkaGVhZGVySW5jbHVkZXN7Ind0Zi90ZXh0L0F0b21pY1N0cmluZy5o
In0gPSAxOwpAQCAtMTE2Miw4ICsxMTY1LDcgQEAgc3ViIEdlbmVyYXRlSGVhZGVyCiAgICAgIyBO
YW1lIGdldHRlcgogICAgIGlmICgkbmFtZWRHZXR0ZXJGdW5jdGlvbiB8fCAkaW50ZXJmYWNlLT5l
eHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ3VzdG9tTmFtZWRHZXR0ZXIifSkgewogICAgICAgICBwdXNo
KEBoZWFkZXJDb250ZW50LCAicHJpdmF0ZTpcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250
ZW50LCAiICAgIHN0YXRpYyBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShKU0M6OkV4ZWNTdGF0ZSos
ICRpbnRlcmZhY2VOYW1lKiwgSlNDOjpQcm9wZXJ0eU5hbWUpO1xuIik7Ci0gICAgICAgIHB1c2go
QGhlYWRlckNvbnRlbnQsICIgICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgbmFtZUdldHRl
cihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBK
U0M6OlByb3BlcnR5TmFtZSk7XG4iKTsKKyAgICAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgIiAg
ICBib29sIG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3BlcnR5TmFtZSwgSlND
OjpKU1ZhbHVlJik7XG4iKTsKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCAifTtc
blxuIik7CkBAIC0yMTg1LDEwICsyMTg3LDEzIEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9u
CiAgICAgICAgICAgICBpZiAoJG5hbWVkR2V0dGVyRnVuY3Rpb24gfHwgJGludGVyZmFjZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57IkN1c3RvbU5hbWVkR2V0dGVyIn0pIHsKICAgICAgICAgICAgICAg
ICAmJHByb3BlcnR5TmFtZUdlbmVyYXRpb24oKTsKIAotICAgICAgICAgICAgICAgICMgVGhlIGZp
cnN0IGNvbmRpdGlvbiBpcyB0byBtYWtlIHN1cmUgd2UgdXNlIHRoZSBzdWJjbGFzcycgbmFtZWQg
Z2V0dGVyIGluc3RlYWQgb2YgdGhlIGJhc2UgY2xhc3Mgb25lIHdoZW4gcG9zc2libGUuCi0gICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKHRoaXNPYmplY3QtPmNsYXNz
SW5mbygpID09IGluZm8oKSAmJiBjYW5HZXRJdGVtc0Zvck5hbWUoZXhlYywgJnRoaXNPYmplY3Qt
PmltcGwoKSwgcHJvcGVydHlOYW1lKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwg
RG9udERlbGV0ZSB8IERvbnRFbnVtLCB0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKTtcbiIpOwotICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm4gdHJ1ZTtcbiIp
OworICAgICAgICAgICAgICAgICMgVGhpcyBjb25kaXRpb24gaXMgdG8gbWFrZSBzdXJlIHdlIHVz
ZSB0aGUgc3ViY2xhc3MnIG5hbWVkIGdldHRlciBpbnN0ZWFkIG9mIHRoZSBiYXNlIGNsYXNzIG9u
ZSB3aGVuIHBvc3NpYmxlLgorICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAg
IGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpIHtcbiIpOworICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBKU1ZhbHVlIHZhbHVlO1xuIik7Cisg
ICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIGlmICh0aGlzT2JqZWN0
LT5uYW1lR2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7XG4iKTsKKyAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhp
c09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHZhbHVlKTtcbiIpOwor
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJuIHRy
dWU7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgfVxu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAg
ICAgICAgICAgICAgJGltcGxJbmNsdWRlc3sid3RmL3RleHQvQXRvbWljU3RyaW5nLmgifSA9IDE7
CiAgICAgICAgICAgICB9CkBAIC0yOTI2LDIwICsyOTMxLDYgQEAgc3ViIEdlbmVyYXRlSW1wbGVt
ZW50YXRpb24KICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgkaW50ZXJmYWNlTmFtZSBlcSAi
RE9NTmFtZWRGbG93Q29sbGVjdGlvbiIpIHsKLSAgICAgICAgaWYgKCRuYW1lZEdldHRlckZ1bmN0
aW9uKSB7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgImJvb2wgJHtjbGFzc05hbWV9
OjpjYW5HZXRJdGVtc0Zvck5hbWUoRXhlY1N0YXRlKiwgJGludGVyZmFjZU5hbWUqIGNvbGxlY3Rp
b24sIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKLSAgICAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBy
ZXR1cm4gY29sbGVjdGlvbi0+aGFzTmFtZWRJdGVtKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5n
KHByb3BlcnR5TmFtZSkpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1c
blxuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIkVuY29kZWRKU1ZhbHVlICR7
Y2xhc3NOYW1lfTo6bmFtZUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpXG4iKTsKLSAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAie1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PCRjbGFzc05hbWUqPihzbG90
QmFzZSk7XG4iKTsKLSAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCB0aGlzT2JqZWN0LT5nbG9iYWxPYmplY3QoKSwgdGhp
c09iamVjdC0+aW1wbCgpLm5hbWVkSXRlbShwcm9wZXJ0eU5hbWVUb0F0b21pY1N0cmluZyhwcm9w
ZXJ0eU5hbWUpKSkpO1xuIik7Ci0gICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxu
Iik7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBpZiAoKCEkaGFzUGFyZW50ICYmICFHZXRDdXN0
b21Jc1JlYWNoYWJsZSgkaW50ZXJmYWNlKSkgfHwgR2V0R2VuZXJhdGVJc1JlYWNoYWJsZSgkaW50
ZXJmYWNlKSB8fCAkY29kZUdlbmVyYXRvci0+SW5oZXJpdHNFeHRlbmRlZEF0dHJpYnV0ZSgkaW50
ZXJmYWNlLCAiQWN0aXZlRE9NT2JqZWN0IikpIHsKIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVu
dCwgImJvb2wgSlMke2ludGVyZmFjZU5hbWV9T3duZXI6OmlzUmVhY2hhYmxlRnJvbU9wYXF1ZVJv
b3RzKEpTQzo6SGFuZGxlPEpTQzo6VW5rbm93bj4gaGFuZGxlLCB2b2lkKiwgU2xvdFZpc2l0b3Im
IHZpc2l0b3IpXG4iKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4
IGI4YjVhNGNjZGE4ZjUxNTQ3N2QxNWE4NjBiMjEyYjE4ODExYTBmNTAuLmVkZTA0M2QxNjU0MjAw
ZTk1MDIyNjc3NmVjYWVmYWM0NTMzZWMxNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcApAQCAtMTcwLDkgKzE3MCwxMiBAQCBib29sIEpTVGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleAog
ICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIGpzQ2FzdDxKU09iamVjdCo+KHByb3RvKS0+aGFz
UHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09IGluZm8oKSAmJiBjYW5HZXRJdGVtc0Zv
ck5hbWUoZXhlYywgJnRoaXNPYmplY3QtPmltcGwoKSwgcHJvcGVydHlOYW1lKSkgewotICAgICAg
ICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250
RW51bSwgdGhpc09iamVjdC0+bmFtZUdldHRlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAg
IGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpIHsKKyAgICAgICAgSlNWYWx1
ZSB2YWx1ZTsKKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIoZXhlYywgcHJvcGVy
dHlOYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVjdCwg
UmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHZhbHVlKTsKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAgLTE4
Miw5ICsxODUsMTIgQEAgYm9vbCBKU1Rlc3RDdXN0b21OYW1lZEdldHRlcjo6Z2V0T3duUHJvcGVy
dHlTbG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3QKICAgICBhdXRvKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PEpTVGVzdEN1c3RvbU5hbWVkR2V0dGVyKj4ob2JqZWN0KTsKICAgICBBU1NF
UlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRoaXNPYmplY3QsIGluZm8oKSk7CiAgICAgSWRlbnRpZmll
ciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlmaWVyOjpmcm9tKGV4ZWMsIGluZGV4KTsKLSAgICBpZiAo
dGhpc09iamVjdC0+Y2xhc3NJbmZvKCkgPT0gaW5mbygpICYmIGNhbkdldEl0ZW1zRm9yTmFtZShl
eGVjLCAmdGhpc09iamVjdC0+aW1wbCgpLCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0
aGlzT2JqZWN0LT5uYW1lR2V0dGVyKTsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRo
aXNPYmplY3QtPmNsYXNzSW5mbygpID09IGluZm8oKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVl
OworICAgICAgICBpZiAodGhpc09iamVjdC0+bmFtZUdldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUs
IHZhbHVlKSkgeworICAgICAgICAgICAgc2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25s
eSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xv
dEJ5SW5kZXgodGhpc09iamVjdCwgZXhlYywgaW5kZXgsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuaAppbmRleCBlNjQxNTcyOWRlMWY0MWI2OWRiY2ZhZjdkZDA2MjVm
OWJjNGUyMDc2Li40Zjk5MjkxNWQxOGFkNmE2OTA0Y2NjOWU2MDQ5ZjE0NjI1NjEyZWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtNzAsOCArNzAsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgfQogCiBwcml2YXRlOgotICAgIHN0YXRpYyBib29sIGNhbkdldEl0ZW1zRm9yTmFt
ZShKU0M6OkV4ZWNTdGF0ZSosIFRlc3RDdXN0b21OYW1lZEdldHRlciosIEpTQzo6UHJvcGVydHlO
YW1lKTsKLSAgICBzdGF0aWMgSlNDOjpFbmNvZGVkSlNWYWx1ZSBuYW1lR2V0dGVyKEpTQzo6RXhl
Y1N0YXRlKiwgSlNDOjpKU09iamVjdCosIEpTQzo6RW5jb2RlZEpTVmFsdWUsIEpTQzo6UHJvcGVy
dHlOYW1lKTsKKyAgICBib29sIG5hbWVHZXR0ZXIoSlNDOjpFeGVjU3RhdGUqLCBKU0M6OlByb3Bl
cnR5TmFtZSwgSlNDOjpKU1ZhbHVlJik7CiB9OwogCiBjbGFzcyBKU1Rlc3RDdXN0b21OYW1lZEdl
dHRlck93bmVyIDogcHVibGljIEpTQzo6V2Vha0hhbmRsZU93bmVyIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0RXZlbnRU
YXJnZXQuY3BwCmluZGV4IDMzMzJhMDc2YWJhODg4MjMzYzZkNTU2ZmZiZDBhYTg5NGFmNWJiOTcu
LmE4MzRkNTMyMzI4OWFjNWU1YjFmOGI2NmZiMjVkMjE1N2MwY2RhZjQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2
ZW50VGFyZ2V0LmNwcApAQCAtMTg5LDkgKzE4OSwxMiBAQCBib29sIEpTVGVzdEV2ZW50VGFyZ2V0
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCBQ
cgogICAgIGlmIChwcm90by5pc09iamVjdCgpICYmIGpzQ2FzdDxKU09iamVjdCo+KHByb3RvKS0+
aGFzUHJvcGVydHkoZXhlYywgcHJvcGVydHlOYW1lKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgaWYgKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09IGluZm8oKSAmJiBjYW5HZXRJdGVt
c0Zvck5hbWUoZXhlYywgJnRoaXNPYmplY3QtPmltcGwoKSwgcHJvcGVydHlOYW1lKSkgewotICAg
ICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBE
b250RW51bSwgdGhpc09iamVjdC0+bmFtZUdldHRlcik7Ci0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgIGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZvKCkpIHsKKyAgICAgICAgSlNW
YWx1ZSB2YWx1ZTsKKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIoZXhlYywgcHJv
cGVydHlOYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgIHNsb3Quc2V0VmFsdWUodGhpc09iamVj
dCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHZhbHVlKTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KQEAg
LTIwNiw5ICsyMDksMTIgQEAgYm9vbCBKU1Rlc3RFdmVudFRhcmdldDo6Z2V0T3duUHJvcGVydHlT
bG90QnlJbmRleChKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGUKICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgfQogICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gSWRlbnRpZmllcjo6
ZnJvbShleGVjLCBpbmRleCk7Ci0gICAgaWYgKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09IGlu
Zm8oKSAmJiBjYW5HZXRJdGVtc0Zvck5hbWUoZXhlYywgJnRoaXNPYmplY3QtPmltcGwoKSwgcHJv
cGVydHlOYW1lKSkgewotICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25s
eSB8IERvbnREZWxldGUgfCBEb250RW51bSwgdGhpc09iamVjdC0+bmFtZUdldHRlcik7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgIGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBpbmZv
KCkpIHsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZTsKKyAgICAgICAgaWYgKHRoaXNPYmplY3QtPm5h
bWVHZXR0ZXIoZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSkpIHsKKyAgICAgICAgICAgIHNsb3Qu
c2V0VmFsdWUodGhpc09iamVjdCwgUmVhZE9ubHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHZh
bHVlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgfQogICAgIHJl
dHVybiBCYXNlOjpnZXRPd25Qcm9wZXJ0eVNsb3RCeUluZGV4KHRoaXNPYmplY3QsIGV4ZWMsIGlu
ZGV4LCBzbG90KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggNDkyYjc3ZDkzZTYwNWNi
NzI1ODliNmYxZDk2YTBiMmQ1OGYzNjNhZi4uODMxZGFmOWM1M2M4ZTY2MDkwODc0YjAyOTM3NDBi
NTFkYWY5YTAwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTc0LDggKzc0LDcgQEAgcHJv
dGVjdGVkOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBzdGF0aWMgYm9vbCBjYW5HZXRJdGVtc0Zv
ck5hbWUoSlNDOjpFeGVjU3RhdGUqLCBUZXN0RXZlbnRUYXJnZXQqLCBKU0M6OlByb3BlcnR5TmFt
ZSk7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2RlZEpTVmFsdWUgbmFtZUdldHRlcihKU0M6OkV4ZWNT
dGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5
TmFtZSk7CisgICAgYm9vbCBuYW1lR2V0dGVyKEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0
eU5hbWUsIEpTQzo6SlNWYWx1ZSYpOwogfTsKIAogY2xhc3MgSlNUZXN0RXZlbnRUYXJnZXRPd25l
ciA6IHB1YmxpYyBKU0M6OldlYWtIYW5kbGVPd25lciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlucy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVC
dWlsdGlucy5jcHAKaW5kZXggMzA2ZGIyODViOGE2ZGJlNDQ0YWZjZmJjMjM3NWVhNjJkNjA0ZTQ1
NC4uYjE4NTY3NDEzYTcwMWNjNmJiNTVkM2JlMzdhM2E3ZTNjY2I2ODE1MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVp
bHRpbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmNwcApAQCAtMTY2LDkgKzE2NiwxMiBAQCBib29sIEpTVGVz
dE92ZXJyaWRlQnVpbHRpbnM6OmdldE93blByb3BlcnR5U2xvdChKU09iamVjdCogb2JqZWN0LCBF
eGVjU3RhdGUqIGV4ZQogewogICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNUZXN0T3Zl
cnJpZGVCdWlsdGlucyo+KG9iamVjdCk7CiAgICAgQVNTRVJUX0dDX09CSkVDVF9JTkhFUklUUyh0
aGlzT2JqZWN0LCBpbmZvKCkpOwotICAgIGlmICh0aGlzT2JqZWN0LT5jbGFzc0luZm8oKSA9PSBp
bmZvKCkgJiYgY2FuR2V0SXRlbXNGb3JOYW1lKGV4ZWMsICZ0aGlzT2JqZWN0LT5pbXBsKCksIHBy
b3BlcnR5TmFtZSkpIHsKLSAgICAgICAgc2xvdC5zZXRDdXN0b20odGhpc09iamVjdCwgUmVhZE9u
bHkgfCBEb250RGVsZXRlIHwgRG9udEVudW0sIHRoaXNPYmplY3QtPm5hbWVHZXR0ZXIpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBpZiAodGhpc09iamVjdC0+Y2xhc3NJbmZvKCkgPT0gaW5m
bygpKSB7CisgICAgICAgIEpTVmFsdWUgdmFsdWU7CisgICAgICAgIGlmICh0aGlzT2JqZWN0LT5u
YW1lR2V0dGVyKGV4ZWMsIHByb3BlcnR5TmFtZSwgdmFsdWUpKSB7CisgICAgICAgICAgICBzbG90
LnNldFZhbHVlKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB2
YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KICAgICBp
ZiAoZ2V0U3RhdGljVmFsdWVTbG90PEpTVGVzdE92ZXJyaWRlQnVpbHRpbnMsIEJhc2U+KGV4ZWMs
IEpTVGVzdE92ZXJyaWRlQnVpbHRpbnNUYWJsZSwgdGhpc09iamVjdCwgcHJvcGVydHlOYW1lLCBz
bG90KSkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC0xODAsOSArMTgzLDEyIEBAIGJvb2wgSlNU
ZXN0T3ZlcnJpZGVCdWlsdGluczo6Z2V0T3duUHJvcGVydHlTbG90QnlJbmRleChKU09iamVjdCog
b2JqZWN0LCBFeGVjU3RhCiAgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxKU1Rlc3RPdmVy
cmlkZUJ1aWx0aW5zKj4ob2JqZWN0KTsKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRTKHRo
aXNPYmplY3QsIGluZm8oKSk7CiAgICAgSWRlbnRpZmllciBwcm9wZXJ0eU5hbWUgPSBJZGVudGlm
aWVyOjpmcm9tKGV4ZWMsIGluZGV4KTsKLSAgICBpZiAodGhpc09iamVjdC0+Y2xhc3NJbmZvKCkg
PT0gaW5mbygpICYmIGNhbkdldEl0ZW1zRm9yTmFtZShleGVjLCAmdGhpc09iamVjdC0+aW1wbCgp
LCBwcm9wZXJ0eU5hbWUpKSB7Ci0gICAgICAgIHNsb3Quc2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJl
YWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCB0aGlzT2JqZWN0LT5uYW1lR2V0dGVyKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgaWYgKHRoaXNPYmplY3QtPmNsYXNzSW5mbygpID09
IGluZm8oKSkgeworICAgICAgICBKU1ZhbHVlIHZhbHVlOworICAgICAgICBpZiAodGhpc09iamVj
dC0+bmFtZUdldHRlcihleGVjLCBwcm9wZXJ0eU5hbWUsIHZhbHVlKSkgeworICAgICAgICAgICAg
c2xvdC5zZXRWYWx1ZSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUgfCBEb250RW51
bSwgdmFsdWUpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KICAgICB9CiAg
ICAgcmV0dXJuIEJhc2U6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgodGhpc09iamVjdCwgZXhl
YywgaW5kZXgsIHNsb3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPdmVycmlkZUJ1aWx0aW5zLmgKaW5kZXgg
N2NjOGYwYjcwZThmZjMxOTNlMjBjMjIxYTYyYzExNGQyOWI0YmU5NC4uZjVhZDU1NWNjM2E1YmM2
ZTNhOTJkZjcwODBmZWU5MTI3ZTFmOGI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE92ZXJyaWRlQnVpbHRpbnMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T3ZlcnJpZGVCdWlsdGlu
cy5oCkBAIC03MCw4ICs3MCw3IEBAIHByb3RlY3RlZDoKICAgICB9CiAKIHByaXZhdGU6Ci0gICAg
c3RhdGljIGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKEpTQzo6RXhlY1N0YXRlKiwgVGVzdE92ZXJy
aWRlQnVpbHRpbnMqLCBKU0M6OlByb3BlcnR5TmFtZSk7Ci0gICAgc3RhdGljIEpTQzo6RW5jb2Rl
ZEpTVmFsdWUgbmFtZUdldHRlcihKU0M6OkV4ZWNTdGF0ZSosIEpTQzo6SlNPYmplY3QqLCBKU0M6
OkVuY29kZWRKU1ZhbHVlLCBKU0M6OlByb3BlcnR5TmFtZSk7CisgICAgYm9vbCBuYW1lR2V0dGVy
KEpTQzo6RXhlY1N0YXRlKiwgSlNDOjpQcm9wZXJ0eU5hbWUsIEpTQzo6SlNWYWx1ZSYpOwogfTsK
IAogY2xhc3MgSlNUZXN0T3ZlcnJpZGVCdWlsdGluc093bmVyIDogcHVibGljIEpTQzo6V2Vha0hh
bmRsZU93bmVyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dD
b2xsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dDb2xsZWN0aW9u
LmNwcAppbmRleCA1ZWQ4Y2Q1Nzc1MjYxYmE4MzViNGRkNmYwMTNmMmE3NmM1Njg2NTY4Li5kZGQz
MmU2M2U3YjliMjViZWRkMThjY2RjOTU2ZjA2MGQyMTBhYWRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uY3BwCkBAIC01Myw3ICs1Myw3IEBAIFBhc3NS
ZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBET01OYW1lZEZsb3dDb2xsZWN0aW9uOjppdGVtKHVuc2ln
bmVkIGxvbmcgaW5kZXgpIGNvCiAgICAgcmV0dXJuICppdDsKIH0KIAotUGFzc1JlZlB0cjxXZWJL
aXROYW1lZEZsb3c+IERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBBdG9t
aWNTdHJpbmcmIG5hbWUpIGNvbnN0CitSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBET01OYW1lZEZs
b3dDb2xsZWN0aW9uOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAog
ewogICAgIERPTU5hbWVkRmxvd1NldDo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX25hbWVkRmxvd3Mu
ZmluZDxTdHJpbmcsIERPTU5hbWVkRmxvd0hhc2hUcmFuc2xhdG9yPihuYW1lKTsKICAgICBpZiAo
aXQgIT0gbV9uYW1lZEZsb3dzLmVuZCgpKQpAQCAtNjEsMTEgKzYxLDYgQEAgUGFzc1JlZlB0cjxX
ZWJLaXROYW1lZEZsb3c+IERPTU5hbWVkRmxvd0NvbGxlY3Rpb246Om5hbWVkSXRlbShjb25zdCBB
dG9taWNTdHJpbmcKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBET01OYW1lZEZsb3dD
b2xsZWN0aW9uOjpoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAot
ewotICAgIHJldHVybiBuYW1lZEl0ZW0obmFtZSk7Ci19Ci0KIC8vIFRoZSBIYXNoRnVuY3Rpb25z
IG9iamVjdCB1c2VkIGJ5IHRoZSBIYXNoU2V0IHRvIGNvbXBhcmUgYmV0d2VlbiBSZWZQdHI8TmFt
ZWRGbG93cz4uCiAvLyBJdCBpcyBzYWZlIHRvIHNldCBzYWZlVG9Db21wYXJlVG9FbXB0eU9yRGVs
ZXRlZCBiZWNhdXNlIHRoZSBIYXNoU2V0IHdpbGwgbmV2ZXIgY29udGFpbiBudWxsIHBvaW50ZXJz
IG9yIGRlbGV0ZWQgdmFsdWVzLgogc3RydWN0IERPTU5hbWVkRmxvd0NvbGxlY3Rpb246OkRPTU5h
bWVkRmxvd0hhc2hGdW5jdGlvbnMgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RP
TU5hbWVkRmxvd0NvbGxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9ET01OYW1lZEZsb3dD
b2xsZWN0aW9uLmgKaW5kZXggZDlhNzk4YjNiMTEzMTQ3MjIyNGEzZjhhZWYwZjdlNTc4MDdmMDMx
MS4uMDlmOTdkMDA5ZTdhOTEwMzU0MzQwMjU4NWVmZTkxY2VhYmQ4ZDBmZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RPTU5hbWVkRmxvd0NvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRE9NTmFtZWRGbG93Q29sbGVjdGlvbi5oCkBAIC00OSw5ICs0OSw3IEBAIHB1
YmxpYzoKIAogICAgIHVuc2lnbmVkIGxvbmcgbGVuZ3RoKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0
cjxXZWJLaXROYW1lZEZsb3c+IGl0ZW0odW5zaWduZWQgbG9uZyBpbmRleCkgY29uc3Q7Ci0gICAg
UGFzc1JlZlB0cjxXZWJLaXROYW1lZEZsb3c+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcm
IG5hbWUpIGNvbnN0OwotCi0gICAgYm9vbCBoYXNOYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5n
JiBuYW1lKSBjb25zdDsKKyAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBuYW1lZEl0ZW0oY29u
c3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBzdHJ1Y3QgRE9N
TmFtZWRGbG93SGFzaEZ1bmN0aW9uczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5j
cHAKaW5kZXggMTE4MmNmYmRmYzFmYmEzNmRhNmY1M2ExM2NjNTljMWVhNTg4ZjZhNy4uZmEyYmNj
YjZmNzVlYzMwYTM2ZjhjYWY1OTRlZDRhNWNjNWIwZjVlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5jcHAKQEAgLTE3MywxMiArMTczLDYgQEAgdm9pZCBIVE1MQ29sbGVjdGlv
bjo6dXBkYXRlTmFtZWRFbGVtZW50Q2FjaGUoKSBjb25zdAogICAgIHNldE5hbWVkSXRlbUNhY2hl
KFdURjo6bW92ZShjYWNoZSkpOwogfQogCi1ib29sIEhUTUxDb2xsZWN0aW9uOjpoYXNOYW1lZEl0
ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKSBjb25zdAotewotICAgIC8vIEZJWE1FOiBXZSBj
YW4gZG8gYmV0dGVyIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIG9mIHRoZSBzYW1l
IG5hbWUuCi0gICAgcmV0dXJuIG5hbWVkSXRlbShuYW1lKTsKLX0KLQogVmVjdG9yPFJlZjxFbGVt
ZW50Pj4gSFRNTENvbGxlY3Rpb246Om5hbWVkSXRlbXMoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1l
KSBjb25zdAogewogICAgIC8vIEZJWE1FOiBUaGlzIG5vbi12aXJ0dWFsIGZ1bmN0aW9uIGNhbid0
IHBvc3NpYmx5IGJlIGRvaW5nIHRoZSBjb3JyZWN0IHRoaW5nIGZvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ29sbGVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MQ29sbGVjdGlvbi5oCmluZGV4IGI0MjA2MWExMjFkZmY0MDg2NjM0NDJiYzVjMWVkZDY0NzNm
NWM4OGYuLmMwZGE2YjY5MWU1Nzc3ZWRkNzk3ODk4NTlkNmMyNTE1N2UyOTA2MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENvbGxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxDb2xsZWN0aW9uLmgKQEAgLTY5LDcgKzY5LDYgQEAgcHVibGljOgogICAg
IFBhc3NSZWZQdHI8Tm9kZUxpc3Q+IHRhZ3MoY29uc3QgU3RyaW5nJik7CiAKICAgICAvLyBOb24t
RE9NIEFQSQotICAgIGJvb2wgaGFzTmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkg
Y29uc3Q7CiAgICAgVmVjdG9yPFJlZjxFbGVtZW50Pj4gbmFtZWRJdGVtcyhjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0OwogICAgIHZpcnR1YWwgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQuY3BwCmluZGV4IDA1NDI3OWZm
MWVmNWE4YzNiMTgwYTRiODBkMjBmYmM5ZWJmYWUxODEuLjZhYTBmNWYyZDM2ODAyNjYxZGU4Zjgz
N2RmN2NmM2RhMzZmZDIxMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZv
cm1FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5j
cHAKQEAgLTc5NCwxMSArNzk0LDYgQEAgYm9vbCBIVE1MRm9ybUVsZW1lbnQ6Om1hdGNoZXNJbnZh
bGlkUHNldWRvQ2xhc3MoKSBjb25zdAogICAgIHJldHVybiAhbV9pbnZhbGlkQXNzb2NpYXRlZEZv
cm1Db250cm9scy5pc0VtcHR5KCk7CiB9CiAKLWJvb2wgSFRNTEZvcm1FbGVtZW50OjpoYXNOYW1l
ZEVsZW1lbnQoY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lKQotewotICAgIHJldHVybiBlbGVtZW50
cygpLT5oYXNOYW1lZEl0ZW0obmFtZSkgfHwgZWxlbWVudEZyb21QYXN0TmFtZXNNYXAobmFtZSk7
Ci19Ci0KIC8vIEZJWE1FOiBVc2UgUmVmPEhUTUxFbGVtZW50PiBmb3IgdGhlIGZ1bmN0aW9uIHJl
c3VsdCBzaW5jZSB0aGVyZSBhcmUgbm8gbm9uLUhUTUwgZWxlbWVudHMgcmV0dXJuZWQgaGVyZS4K
IFZlY3RvcjxSZWY8RWxlbWVudD4+IEhUTUxGb3JtRWxlbWVudDo6bmFtZWRFbGVtZW50cyhjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxGb3JtRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9ybUVsZW1lbnQu
aAppbmRleCAwMDUxNWEzYjQwODlhOWFkMzdkYzcyOGJiNDYwYjQ0OWJhZTcyOTRmLi5kMDE1ODFk
ZWJmMDFlODI1NjY2NTdlZDJkMzk4YmVlMTdhZGRkMzg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxGb3JtRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1FbGVtZW50LmgKQEAgLTUxLDcgKzUxLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgfkhU
TUxGb3JtRWxlbWVudCgpOwogCiAgICAgUmVmPEhUTUxDb2xsZWN0aW9uPiBlbGVtZW50cygpOwot
ICAgIGJvb2wgaGFzTmFtZWRFbGVtZW50KGNvbnN0IEF0b21pY1N0cmluZyYpOwogICAgIFZlY3Rv
cjxSZWY8RWxlbWVudD4+IG5hbWVkRWxlbWVudHMoY29uc3QgQXRvbWljU3RyaW5nJik7CiAKICAg
ICB1bnNpZ25lZCBsZW5ndGgoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1p
bWVUeXBlQXJyYXkuY3BwCmluZGV4IGRhMjA0NDk0NzY5NzcxODgxNmYwYjE5NjgxZWFiMWNmN2Nm
MzI4NWYuLmM0MzhkOGFlNGQwZWY0YTJkZGRlMDBiZWQ5ZjMzNDgwOTA0MmU2YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmNwcApAQCAtNzAsMjcgKzcwLDEx
IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5cGU+IERPTU1pbWVUeXBlQXJyYXk6Oml0ZW0odW5zaWdu
ZWQgaW5kZXgpCiAgICAgcmV0dXJuIERPTU1pbWVUeXBlOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwg
aW5kZXgpOwogfQogCi1ib29sIERPTU1pbWVUeXBlQXJyYXk6OmNhbkdldEl0ZW1zRm9yTmFtZShj
b25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKK1JlZlB0cjxET01NaW1lVHlwZT4gRE9N
TWltZVR5cGVBcnJheTo6bmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1l
KQogewotICAgIFBsdWdpbkRhdGEgKmRhdGEgPSBnZXRQbHVnaW5EYXRhKCk7Ci0gICAgaWYgKCFk
YXRhKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFZlY3RvcjxNaW1lQ2xhc3NJbmZvPiBtaW1l
czsKLSAgICBWZWN0b3I8c2l6ZV90PiBtaW1lUGx1Z2luSW5kaWNlczsKLSAgICBkYXRhLT5nZXRX
ZWJWaXNpYmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7
Ci0gICAgZm9yIChhdXRvJiBtaW1lIDogbWltZXMpIHsKLSAgICAgICAgaWYgKG1pbWUudHlwZSA9
PSBwcm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1QYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5
OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCi17Ci0gICAgUGx1
Z2luRGF0YSAqZGF0YSA9IGdldFBsdWdpbkRhdGEoKTsKKyAgICBQbHVnaW5EYXRhKiBkYXRhID0g
Z2V0UGx1Z2luRGF0YSgpOwogICAgIGlmICghZGF0YSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOwog
ICAgIFZlY3RvcjxzaXplX3Q+IG1pbWVQbHVnaW5JbmRpY2VzOwpAQCAtOTksNyArODMsNyBAQCBQ
YXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01NaW1lVHlwZUFycmF5OjpuYW1lZEl0ZW0oY29uc3Qg
QXRvbWljU3RyaW5nJiBwcm9wZXJ0eQogICAgICAgICBpZiAobWltZXNbaV0udHlwZSA9PSBwcm9w
ZXJ0eU5hbWUpCiAgICAgICAgICAgICByZXR1cm4gRE9NTWltZVR5cGU6OmNyZWF0ZShkYXRhLCBt
X2ZyYW1lLCBpKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIFBsdWdpbkRhdGEqIERPTU1pbWVUeXBlQXJyYXk6OmdldFBsdWdpbkRhdGEoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFycmF5LmggYi9T
b3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuaAppbmRleCA5NmQ1YjU2Y2Vm
ZTU4YWQ0OTk0Zjg3MDY1ZDBkMDdiMGFjMjY3ZmZlLi5lYzQxYzc4Y2Q3NjY1ZjhlM2M0NTAxYWI4
Njk2NzQ0NWIyYmEwZGUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1p
bWVUeXBlQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJy
YXkuaApAQCAtMzksOCArMzksNyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBsZW5ndGgoKSBj
b25zdDsKICAgICBQYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsK
LSAgICBib29sIGNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5
TmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxET01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21p
Y1N0cmluZyYgcHJvcGVydHlOYW1lKTsKKyAgICBSZWZQdHI8RE9NTWltZVR5cGU+IG5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7CiAKIHByaXZhdGU6CiAgICAgZXhw
bGljaXQgRE9NTWltZVR5cGVBcnJheShGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGx1Z2lucy9ET01QbHVnaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVn
aW4uY3BwCmluZGV4IGMwMjdlOTlkZjhkNzY3MjE0NTliZDQ3NGYwNWZhNTI0MDZhNGJiMzkuLmZh
MTMyOTE4ZTQxYzVlMmRlMzA3YzI2MjZmMTBhNDJmN2M2YjYxYjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbi5jcHAKQEAgLTc0LDE5ICs3NCw3IEBAIFBhc3NSZWZQdHI8RE9NTWltZVR5
cGU+IERPTVBsdWdpbjo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4gMDsKIH0KIAot
Ym9vbCBET01QbHVnaW46OmNhbkdldEl0ZW1zRm9yTmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHBy
b3BlcnR5TmFtZSkKLXsKLSAgICBWZWN0b3I8TWltZUNsYXNzSW5mbz4gbWltZXM7Ci0gICAgVmVj
dG9yPHNpemVfdD4gbWltZVBsdWdpbkluZGljZXM7Ci0gICAgbV9wbHVnaW5EYXRhLT5nZXRXZWJW
aXNpYmxlTWltZXNBbmRQbHVnaW5JbmRpY2VzKG1pbWVzLCBtaW1lUGx1Z2luSW5kaWNlcyk7Ci0g
ICAgZm9yIChhdXRvJiBtaW1lIDogbWltZXMpIHsKLSAgICAgICAgaWYgKG1pbWUudHlwZSA9PSBw
cm9wZXJ0eU5hbWUpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJu
IGZhbHNlOwotfQotCi1QYXNzUmVmUHRyPERPTU1pbWVUeXBlPiBET01QbHVnaW46Om5hbWVkSXRl
bShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkKK1JlZlB0cjxET01NaW1lVHlwZT4g
RE9NUGx1Z2luOjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpCiB7
CiAgICAgVmVjdG9yPE1pbWVDbGFzc0luZm8+IG1pbWVzOwogICAgIFZlY3RvcjxzaXplX3Q+IG1p
bWVQbHVnaW5JbmRpY2VzOwpAQCAtOTQsNyArODIsNyBAQCBQYXNzUmVmUHRyPERPTU1pbWVUeXBl
PiBET01QbHVnaW46Om5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSkK
ICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWltZXMuc2l6ZSgpOyArK2kpCiAgICAgICAg
IGlmIChtaW1lc1tpXS50eXBlID09IHByb3BlcnR5TmFtZSkKICAgICAgICAgICAgIHJldHVybiBE
T01NaW1lVHlwZTo6Y3JlYXRlKG1fcGx1Z2luRGF0YS5nZXQoKSwgbV9mcmFtZSwgaSk7Ci0gICAg
cmV0dXJuIDA7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbi5oCmluZGV4IDY4ZWEwNTc5MmExMTJhNDU0YjIx
YzQzZjgxOTRiZTFiNjNmYzQxNjAuLmFiMTFlNTliZWQ0ZmEzNjVhNTBlZDE0YzUzYmU5NTdkMjRl
ZWNhMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW4uaApAQCAtNDMsOCArNDMsNyBAQCBw
dWJsaWM6CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7CiAKICAgICBQYXNzUmVmUHRyPERP
TU1pbWVUeXBlPiBpdGVtKHVuc2lnbmVkIGluZGV4KTsKLSAgICBib29sIGNhbkdldEl0ZW1zRm9y
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmIHByb3BlcnR5TmFtZSk7Ci0gICAgUGFzc1JlZlB0cjxE
T01NaW1lVHlwZT4gbmFtZWRJdGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKTsK
KyAgICBSZWZQdHI8RE9NTWltZVR5cGU+IG5hbWVkSXRlbShjb25zdCBBdG9taWNTdHJpbmcmIHBy
b3BlcnR5TmFtZSk7CiAKIHByaXZhdGU6CiAgICAgRE9NUGx1Z2luKFBsdWdpbkRhdGEqLCBGcmFt
ZSosIFBsdWdpbkluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01Q
bHVnaW5BcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNw
cAppbmRleCA5NDc4YjdkNGJlNTRiMzY1NzU1NDIyZmVjYzhkNjZjOWNjNDA5NGIzLi43MmVjYWM2
MjJjM2Q5YzgzYTBjMDMzMTYxZThlN2JkMTg1NmFhMjg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL0RPTVBsdWdpbkFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVn
aW5zL0RPTVBsdWdpbkFycmF5LmNwcApAQCAtNjQsMzAgKzY0LDE3IEBAIFBhc3NSZWZQdHI8RE9N
UGx1Z2luPiBET01QbHVnaW5BcnJheTo6aXRlbSh1bnNpZ25lZCBpbmRleCkKICAgICByZXR1cm4g
RE9NUGx1Z2luOjpjcmVhdGUoZGF0YSwgbV9mcmFtZSwgcGx1Z2luc1tpbmRleF0pOwogfQogCi1i
b29sIERPTVBsdWdpbkFycmF5OjpjYW5HZXRJdGVtc0Zvck5hbWUoY29uc3QgQXRvbWljU3RyaW5n
JiBwcm9wZXJ0eU5hbWUpCitSZWZQdHI8RE9NUGx1Z2luPiBET01QbHVnaW5BcnJheTo6bmFtZWRJ
dGVtKGNvbnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKQogewogICAgIFBsdWdpbkRhdGEq
IGRhdGEgPSBwbHVnaW5EYXRhKCk7CiAgICAgaWYgKCFkYXRhKQotICAgICAgICByZXR1cm4gMDsK
LQotICAgIGZvciAoYXV0byYgcGx1Z2luIDogZGF0YS0+d2ViVmlzaWJsZVBsdWdpbnMoKSkgewot
ICAgICAgICBpZiAocGx1Z2luLm5hbWUgPT0gcHJvcGVydHlOYW1lKQotICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotUGFzc1JlZlB0cjxET01Q
bHVnaW4+IERPTVBsdWdpbkFycmF5OjpuYW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9w
ZXJ0eU5hbWUpCi17Ci0gICAgUGx1Z2luRGF0YSogZGF0YSA9IHBsdWdpbkRhdGEoKTsKLSAgICBp
ZiAoIWRhdGEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIGZvciAoYXV0byYgcGx1Z2luIDogZGF0YS0+d2ViVmlzaWJsZVBsdWdpbnMoKSkgewogICAg
ICAgICBpZiAocGx1Z2luLm5hbWUgPT0gcHJvcGVydHlOYW1lKQogICAgICAgICAgICAgcmV0dXJu
IERPTVBsdWdpbjo6Y3JlYXRlKGRhdGEsIG1fZnJhbWUsIHBsdWdpbik7CiAgICAgfQotICAgIHJl
dHVybiAwOworICAgIHJldHVybiBudWxscHRyOwogfQogCiB2b2lkIERPTVBsdWdpbkFycmF5Ojpy
ZWZyZXNoKGJvb2wgcmVsb2FkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9E
T01QbHVnaW5BcnJheS5oIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5o
CmluZGV4IDY3ZGU2OGI3NjZlY2Y2MWE2NDNmYjE0YWU2OWZlZDI0MTRiOGM3MTYuLjdlMGM3NmQ3
OTkyNzUwOTYwMjdmYThlOGNiODk5ZTA0ZDUwMjY4ZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5z
L0RPTVBsdWdpbkFycmF5LmgKQEAgLTM5LDggKzM5LDcgQEAgcHVibGljOgogCiAgICAgdW5zaWdu
ZWQgbGVuZ3RoKCkgY29uc3Q7CiAgICAgUGFzc1JlZlB0cjxET01QbHVnaW4+IGl0ZW0odW5zaWdu
ZWQgaW5kZXgpOwotICAgIGJvb2wgY2FuR2V0SXRlbXNGb3JOYW1lKGNvbnN0IEF0b21pY1N0cmlu
ZyYgcHJvcGVydHlOYW1lKTsKLSAgICBQYXNzUmVmUHRyPERPTVBsdWdpbj4gbmFtZWRJdGVtKGNv
bnN0IEF0b21pY1N0cmluZyYgcHJvcGVydHlOYW1lKTsKKyAgICBSZWZQdHI8RE9NUGx1Z2luPiBu
YW1lZEl0ZW0oY29uc3QgQXRvbWljU3RyaW5nJiBwcm9wZXJ0eU5hbWUpOwogCiAgICAgdm9pZCBy
ZWZyZXNoKGJvb2wgcmVsb2FkKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>