<?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>87788</bug_id>
          
          <creation_ts>2012-05-29 15:38:51 -0700</creation_ts>
          <short_desc>[chromium] Migrate to WebTransformationMatrix</short_desc>
          <delta_ts>2012-05-31 17:24:47 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>87315</dependson>
    
    <dependson>87510</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>vollick</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>636505</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-29 15:38:51 -0700</bug_when>
    <thetext>This patch will substitute all instances of WebCore::TransformationMatrix with WebKit::WebTransformationMatrix in the chromium compositor.  The change should be completely transparent and incur minimal overhead (specifically, all functions incur one additional trivial wrapper function call on the stack), which will be OK for production, but will that overhead will probably be temporary anyway.

This migration is covered by unit tests and layout tests, and should have no change in behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638804</commentid>
    <comment_count>1</comment_count>
      <attachid>145175</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-31 16:35:52 -0700</bug_when>
    <thetext>Created attachment 145175
for backup, not for review yet

This version passes all unit tests, but still need to test it a lot more and add changelogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638824</commentid>
    <comment_count>2</comment_count>
      <attachid>145177</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-05-31 17:08:20 -0700</bug_when>
    <thetext>Created attachment 145177
Same patch with changelogs

This patch is ready for review.  Tested on all unit tests, layout tests, and manually, on mac.  This patch does the following: (a) replaced all instances of WebCore::TransformationMatrix with WebKit::WebTransformationMatrix, (b) handled the namespace and other minor fallouts to get things to compile and be clean (c) a few minor cleanups while making things compile (d) adds a new constructor (and unit test) to WebTransformationMatrix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638827</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-05-31 17:11:44 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638828</commentid>
    <comment_count>4</comment_count>
      <attachid>145177</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-31 17:16:10 -0700</bug_when>
    <thetext>Comment on attachment 145177
Same patch with changelogs

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>638832</commentid>
    <comment_count>5</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-05-31 17:24:47 -0700</bug_when>
    <thetext>Committed r119178: &lt;http://trac.webkit.org/changeset/119178&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145175</attachid>
            <date>2012-05-31 16:35:52 -0700</date>
            <delta_ts>2012-05-31 17:08:17 -0700</delta_ts>
            <desc>for backup, not for review yet</desc>
            <filename>bug-87788-20120531163551.patch</filename>
            <type>text/plain</type>
            <size>209414</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Y2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvUGxhdGZv
cm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNTIzNjQ2
ZWI3Y2IwYjU0OGEyMTI1MThiNTZkN2VkOTg0MzE2NmU0Mi4uMzEzNWI0ZTY4MDFmMWUwOThjNzZi
ZjQ3NTJlMDUyMmRmYjgwZDRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVt
L3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9j
aHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaApAQCAtNDcsNiArNDcsMTAg
QEAgY2xhc3MgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggewogcHVibGljOgogICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KCk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoZG91YmxlIGEs
IGRvdWJsZSBiLCBkb3VibGUgYywgZG91YmxlIGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CisgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoZG91YmxlIG0xMSwgZG91YmxlIG0xMiwgZG91YmxlIG0x
MywgZG91YmxlIG0xNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbTIxLCBk
b3VibGUgbTIyLCBkb3VibGUgbTIzLCBkb3VibGUgbTI0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRvdWJsZSBtMzEsIGRvdWJsZSBtMzIsIGRvdWJsZSBtMzMsIGRvdWJsZSBtMzQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG00MSwgZG91YmxlIG00MiwgZG91Ymxl
IG00MywgZG91YmxlIG00NCk7CiAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAgICB+V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSB7
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9y
dC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAppbmRleCA2MDkyNzU3
OGQ5ZTk2YTk5MzgxMGRmNjEzYjhhZTBiN2FlOGZmZGM0Li5lZWZkMTU0ZThhOTM1ZmJlM2YwYTcy
MDdjNGU0MDNmNmRiNzU4MGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4
LmNwcApAQCAtNDIsNiArNDIsMTQgQEAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlIGMsIGQKIHsKIH0KIAor
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRvdWJsZSBt
MTEsIGRvdWJsZSBtMTIsIGRvdWJsZSBtMTMsIGRvdWJsZSBtMTQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIG0yMSwgZG91YmxlIG0yMiwg
ZG91YmxlIG0yMywgZG91YmxlIG0yNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgbTMxLCBkb3VibGUgbTMyLCBkb3VibGUgbTMzLCBkb3Vi
bGUgbTM0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRvdWJsZSBtNDEsIGRvdWJsZSBtNDIsIGRvdWJsZSBtNDMsIGRvdWJsZSBtNDQpCisgICAgOiBt
X3ByaXZhdGUobTExLCBtMTIsIG0xMywgbTE0LCBtMjEsIG0yMiwgbTIzLCBtMjQsIG0zMSwgbTMy
LCBtMzMsIG0zNCwgbTQxLCBtNDIsIG00MywgbTQ0KQoreworfQorCiBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHQpCiAgICAgOiBtX3ByaXZhdGUodC5tX3ByaXZhdGUpCiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCmluZGV4IDc0NDU5YTg1MWQxYWMyNmFlZWE4NDIxYTQzZTE1ZjgzY2Y0MWQwMzAuLmY2
MWZkMzVkNTMwMDE0MWYyYjJmZjI2Yjg3NjRiOGY2MmUwM2UyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21p
dW0uY3BwCkBAIC00NCw5ICs0NCwxMCBAQAogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5o
IgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRmb3JtX2NhbnZhcy5oIgogCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OworCituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBpbnQgc19uZXh0
TGF5ZXJJZCA9IDE7CiAKQEAgLTM2MSw3ICszNjIsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNl
dFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uKQogICAgIHNldE5lZWRzQ29tbWl0
KCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKQordm9pZCBMYXllckNocm9t
aXVtOjpzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
c3VibGF5ZXJUcmFuc2Zvcm0pCiB7CiAgICAgaWYgKG1fc3VibGF5ZXJUcmFuc2Zvcm0gPT0gc3Vi
bGF5ZXJUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsKQEAgLTM2OSw3ICszNzAsNyBAQCB2b2lk
IExheWVyQ2hyb21pdW06OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBzdWJsYXllclRyYQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgTGF5
ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0pCit2b2lkIExheWVyQ2hyb21pdW06OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIGlmIChtX3RyYW5zZm9ybSA9PSB0cmFu
c2Zvcm0pCiAgICAgICAgIHJldHVybjsKQEAgLTU5MCw3ICs1OTEsNyBAQCB2b2lkIExheWVyQ2hy
b21pdW06OnNldE9wYWNpdHlGcm9tQW5pbWF0aW9uKGZsb2F0IG9wYWNpdHkpCiAgICAgbV9vcGFj
aXR5ID0gb3BhY2l0eTsKIH0KIAotdm9pZCBMYXllckNocm9taXVtOjpzZXRUcmFuc2Zvcm1Gcm9t
QW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIExh
eWVyQ2hyb21pdW06OnNldFRyYW5zZm9ybUZyb21BbmltYXRpb24oY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKIHsKICAgICAvLyBUaGlzIGlzIGNhbGxlZCBkdWUgdG8g
YW4gb25nb2luZyBhY2NlbGVyYXRlZCBhbmltYXRpb24uIFNpbmNlIHRoaXMgYW5pbWF0aW9uIGlz
CiAgICAgLy8gYWxzbyBiZWluZyBydW4gb24gdGhlIGltcGwgdGhyZWFkLCB0aGVyZSBpcyBubyBu
ZWVkIHRvIHJlcXVlc3QgYSBjb21taXQgdG8gcHVzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDli
ZTAyNzllMmFlYmNkN2NkYzdjNjhiZDAyNWViZTA4NDFjMTc1ZDMuLmE5M2QxNzYwZmNhZDAwZTIx
MjcwZDUwNjFhMDI0N2UyZjYyMWJkY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKQEAgLTQxLDExICs0
MSwxMSBAQAogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJv
bWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3Jt
YXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5o
IgogI2luY2x1ZGUgImNjL0NDT2NjbHVzaW9uVHJhY2tlci5oIgogCiAjaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtNzcsOCArNzcsOCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBpbnQgaWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2xh
eWVySWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0T3BhY2l0eUZyb21BbmltYXRpb24oZmxvYXQp
IE9WRVJSSURFOwogICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFIHsg
cmV0dXJuIG1fb3BhY2l0eTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1Gcm9tQW5p
bWF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7Ci0gICAgdmlydHVh
bCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV90cmFuc2Zvcm07IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtRnJv
bUFuaW1hdGlvbihjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQogICAgIHZp
cnR1YWwgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9i
b3VuZHM7IH0KIAogICAgIGNvbnN0IExheWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIGNvbnN0OwpA
QCAtMTMwLDEwICsxMzAsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3Qg
RmxvYXRQb2ludCYpOwogICAgIEZsb2F0UG9pbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uOyB9CiAKLSAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1Ymxh
eWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQorICAg
IHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYpOworICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1
YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQog
Ci0gICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAg
ICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
Jik7CiAgICAgYm9vbCB0cmFuc2Zvcm1Jc0FuaW1hdGluZygpIGNvbnN0OwogCiAgICAgY29uc3Qg
SW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZUxheWVy
UmVjdDsgfQpAQCAtMjEzLDExICsyMTMsMTEgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U2NyZWVu
U3BhY2VUcmFuc2Zvcm1Jc0FuaW1hdGluZyhib29sIGFuaW1hdGluZykgeyBtX3NjcmVlblNwYWNl
VHJhbnNmb3JtSXNBbmltYXRpbmcgPSBhbmltYXRpbmc7IH0KIAogICAgIC8vIFRoaXMgbW92ZXMg
ZnJvbSBsYXllciBzcGFjZSwgd2l0aCBvcmlnaW4gaW4gdGhlIGNlbnRlciB0byB0YXJnZXQgc3Bh
Y2Ugd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0K
LSAgICB2b2lkIHNldERyYXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCkgeyBtX2RyYXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KKyAgICBjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9k
cmF3VHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2RyYXdUcmFuc2Zvcm0gPSBtYXRy
aXg7IH0KICAgICAvLyBUaGlzIG1vdmVzIGZyb20gbGF5ZXIgc3BhY2UsIHdpdGggb3JpZ2luIHRo
ZSB0b3AgbGVmdCB0byBzY3JlZW4gc3BhY2Ugd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0Ci0g
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsgfQotICAgIHZvaWQgc2V0U2NyZWVu
U3BhY2VUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX3Nj
cmVlblNwYWNlVHJhbnNmb3JtID0gbWF0cml4OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTY3JlZW5TcGFjZVRyYW5zZm9y
bShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSA9IG1hdHJpeDsgfQogICAgIGNvbnN0IEludFJlY3QmIGRyYXdhYmxl
Q29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2RyYXdhYmxlQ29udGVudFJlY3Q7IH0KICAg
ICB2b2lkIHNldERyYXdhYmxlQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX2Ry
YXdhYmxlQ29udGVudFJlY3QgPSByZWN0OyB9CiAgICAgZmxvYXQgY29udGVudHNTY2FsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY29udGVudHNTY2FsZTsgfQpAQCAtMzM0LDggKzMzNCw4IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2RyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXM7CiAgICAgYm9v
bCBtX2ZvcmNlUmVuZGVyU3VyZmFjZTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJh
bnNmb3JtOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07Cisg
ICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKKyAgICBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07CiAKICAgICAv
LyBSZXBsaWNhIGxheWVyIHVzZWQgZm9yIHJlZmxlY3Rpb25zLgogICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBtX3JlcGxpY2FMYXllcjsKQEAgLTM0Niw4ICszNDYsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9kcmF3T3BhY2l0eUlzQW5pbWF0aW5nOwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsK
ICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0qIG1fdGFyZ2V0UmVuZGVyU3VyZmFjZTsKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07Ci0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07CiAgICAgYm9vbCBtX2RyYXdUcmFuc2Zvcm1J
c0FuaW1hdGluZzsKICAgICBib29sIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm1Jc0FuaW1hdGluZzsK
ICAgICBJbnRSZWN0IG1fZHJhd2FibGVDb250ZW50UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCmluZGV4IDk3ZDZlNzdlY2UxNmVlMmNjZGMxNDQ2MjE4YmI2MGI1ZDc4
YThkODEuLmFjYWNjMzUzYmEzZmU3MzMyOGExMjNmYmY4MmVjZWEwYzkxOWY5OTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVy
ZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApAQCAtNzQsMTYgKzc0LDE3IEBACiAjaW5j
bHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
bmFtZXNwYWNlIHsKIAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IG9ydGhvTWF0cml4KGZs
b2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9hdCBib3R0b20sIGZsb2F0IHRvcCkKK3N0YXRpYyBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRob01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdo
dCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0b3ApCiB7CiAgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQg
LSBsZWZ0OwogICAgIGZsb2F0IGRlbHRhWSA9IHRvcCAtIGJvdHRvbTsKLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBvcnRobzsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKICAg
ICBpZiAoIWRlbHRhWCB8fCAhZGVsdGFZKQogICAgICAgICByZXR1cm4gb3J0aG87CiAgICAgb3J0
aG8uc2V0TTExKDIuMGYgLyBkZWx0YVgpOwpAQCAtOTgsOSArOTksOSBAQCBzdGF0aWMgVHJhbnNm
b3JtYXRpb25NYXRyaXggb3J0aG9NYXRyaXgoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0
IGJvdHRvbSwgZgogICAgIHJldHVybiBvcnRobzsKIH0KIAotc3RhdGljIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHNjcmVlbk1hdHJpeChpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkK
K3N0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5NYXRyaXgoaW50IHgsIGludCB5
LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2Ny
ZWVuOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlbjsKIAogICAgIC8vIE1hcCB0
byB2aWV3cG9ydC4KICAgICBzY3JlZW4udHJhbnNsYXRlM2QoeCwgeSwgMCk7CkBAIC01MjYsNyAr
NTI3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdDaGVja2VyYm9hcmRRdWFk
KGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1YWQqIHEKICAgICBHTEMoY29udGV4dCgpLCBjb250
ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAKICAgICBJbnRSZWN0IHRp
bGVSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxl
VHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IHRpbGVUcmFuc2Zvcm0gPSBxdWFkLT5xdWFkVHJhbnNmb3JtKCk7CiAgICAgdGlsZVRy
YW5zZm9ybS50cmFuc2xhdGUodGlsZVJlY3QueCgpICsgdGlsZVJlY3Qud2lkdGgoKSAvIDIuMCwg
dGlsZVJlY3QueSgpICsgdGlsZVJlY3QuaGVpZ2h0KCkgLyAyLjApOwogCiAgICAgZmxvYXQgdGV4
T2Zmc2V0WCA9IHRpbGVSZWN0LngoKTsKQEAgLTU1NSw3ICs1NTYsNyBAQCB2b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJh
d1F1YWQqIHF1YQogICAgIEdMQyhjb250ZXh0KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9n
cmFtLT5wcm9ncmFtKCkpKTsKIAogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHF1YWQt
PnF1YWRSZWN0KCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gcXVh
ZC0+cXVhZFRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1h
dHJpeCA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKICAgICByZW5kZXJNYXRyaXgudHJhbnNsYXRl
KDAuNSAqIGxheWVyUmVjdC53aWR0aCgpICsgbGF5ZXJSZWN0LngoKSwgMC41ICogbGF5ZXJSZWN0
LmhlaWdodCgpICsgbGF5ZXJSZWN0LnkoKSk7CiAgICAgcmVuZGVyTWF0cml4LnNjYWxlTm9uVW5p
Zm9ybShsYXllclJlY3Qud2lkdGgoKSwgbGF5ZXJSZWN0LmhlaWdodCgpKTsKICAgICBMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRvR0xNYXRyaXgoJmdsTWF0cml4WzBdLCBwcm9qZWN0aW9uTWF0cml4
KCkgKiByZW5kZXJNYXRyaXgpOwpAQCAtNTg2LDcgKzU4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgU2tC
aXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVuZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwg
Y29uc3QKICAgICByZXR1cm4gQ0NSZW5kZXJTdXJmYWNlRmlsdGVyczo6YXBwbHkoZmlsdGVycywg
c291cmNlVGV4dHVyZS0+dGV4dHVyZUlkKCksIHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVy
Q29udGV4dC5nZXQoKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFj
a2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHF1YWQsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50c0RldmljZVRyYW5zZm9ybSkKK3ZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJT
dXJmYWNlRHJhd1F1YWQqIHF1YWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250
ZW50c0RldmljZVRyYW5zZm9ybSkKIHsKICAgICAvLyBUaGlzIG1ldGhvZCBkcmF3cyBhIGJhY2tn
cm91bmQgZmlsdGVyLCB3aGljaCBhcHBsaWVzIGEgZmlsdGVyIHRvIGFueSBwaXhlbHMgYmVoaW5k
IHRoZSBxdWFkIGFuZCBzZWVuIHRocm91Z2ggaXRzIGJhY2tncm91bmQuCiAgICAgLy8gVGhlIGFs
Z29yaXRobSB3b3JrcyBhcyBmb2xsb3dzOgpAQCAtNjM4LDEwICs2MzksMTAgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1
cmZhY2VEcmF3UXVhZCoKICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFJlbmRlclN1cmZhY2Ug
PSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlOwogICAgIGlmICh1c2VNYW5hZ2VkVGV4dHVyZShkcmF3
aW5nU3VyZmFjZS0+YmFja2dyb3VuZFRleHR1cmUoKSwgcXVhZC0+cXVhZFJlY3QoKSkpIHsKICAg
ICAgICAgLy8gQ29weSB0aGUgcmVhZGJhY2sgcGl4ZWxzIGZyb20gZGV2aWNlIHRvIHRoZSBiYWNr
Z3JvdW5kIHRleHR1cmUgZm9yIHRoZSBzdXJmYWNlLgotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGRldmljZVRvU3VyZmFjZVRyYW5zZm9ybTsKICAgICAgICAgZGV2aWNlVG9TdXJmYWNl
VHJhbnNmb3JtLnRyYW5zbGF0ZShxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCkgLyAyLjAsIHF1YWQt
PnF1YWRSZWN0KCkuaGVpZ2h0KCkgLyAyLjApOwogICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFu
c2Zvcm0uc2NhbGUzZChxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCku
aGVpZ2h0KCksIDEpOwotICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0gKj0gY29udGVu
dHNEZXZpY2VUcmFuc2Zvcm0uaW52ZXJzZSgpOworICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFu
c2Zvcm0ubXVsdGlwbHkoY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKICAgICAg
ICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShkZXZpY2VSZWN0LndpZHRoKCkg
LyAyLjAsIGRldmljZVJlY3QuaGVpZ2h0KCkgLyAyLjApOwogICAgICAgICBkZXZpY2VUb1N1cmZh
Y2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmljZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSk7CiAK
QEAgLTY1OCwxMCArNjU5LDEwIEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVu
ZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqCiAKICAgICBDQ1Jl
bmRlclN1cmZhY2UqIGRyYXdpbmdTdXJmYWNlID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFj
ZSgpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyVHJhbnNmb3JtID0gcXVhZC0+
bGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW5kZXJUcmFu
c2Zvcm0gPSBxdWFkLT5sYXllclRyYW5zZm9ybSgpOwogICAgIC8vIEFwcGx5IGEgc2NhbGluZyBm
YWN0b3IgdG8gc2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KICAg
ICByZW5kZXJUcmFuc2Zvcm0uc2NhbGUzZChxdWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQt
PnF1YWRSZWN0KCkuaGVpZ2h0KCksIDEpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRl
bnRzRGV2aWNlVHJhbnNmb3JtID0gVHJhbnNmb3JtYXRpb25NYXRyaXgod2luZG93TWF0cml4KCkg
KiBwcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJUcmFuc2Zvcm0pLnRvMmRUcmFuc2Zvcm0oKTsK
KyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KHdpbmRvd01hdHJpeCgpICogcHJvamVjdGlvbk1hdHJpeCgp
ICogcmVuZGVyVHJhbnNmb3JtKS50bzJkVHJhbnNmb3JtKCk7CiAKICAgICAvLyBDYW4gb25seSBk
cmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJpeCBpcyBpbnZlcnRpYmxlLgogICAgIGlmICghY29u
dGVudHNEZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkgfHwgIWRyYXdpbmdTdXJmYWNlLT5o
YXNWYWxpZENvbnRlbnRzVGV4dHVyZSgpKSB7CkBAIC03ODIsNyArNzgzLDcgQEAgdm9pZCBMYXll
clJlbmRlcmVyQ2hyb21pdW06OmRyYXdTb2xpZENvbG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JE
cmF3UXVhZCogcXVhZCkKIAogICAgIEludFJlY3QgdGlsZVJlY3QgPSBxdWFkLT5xdWFkUmVjdCgp
OwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRU
cmFuc2Zvcm0oKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxlVHJhbnNmb3JtID0g
cXVhZC0+cXVhZFRyYW5zZm9ybSgpOwogICAgIHRpbGVUcmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVS
ZWN0LngoKSArIHRpbGVSZWN0LndpZHRoKCkgLyAyLjAsIHRpbGVSZWN0LnkoKSArIHRpbGVSZWN0
LmhlaWdodCgpIC8gMi4wKTsKIAogICAgIGNvbnN0IENvbG9yJiBjb2xvciA9IHF1YWQtPmNvbG9y
KCk7CkBAIC04NTgsNyArODU5LDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdU
aWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVhZCogcXVhZCkKIAogCiAgICAgRmxvYXRRdWFkIGxv
Y2FsUXVhZDsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUcmFuc2Zvcm0gPSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCh3aW5kb3dNYXRyaXgoKSAqIHByb2plY3Rpb25NYXRyaXgoKSAqIHF1
YWQtPnF1YWRUcmFuc2Zvcm0oKSkudG8yZFRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IGRldmljZVRyYW5zZm9ybSA9IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KHdpbmRv
d01hdHJpeCgpICogcHJvamVjdGlvbk1hdHJpeCgpICogcXVhZC0+cXVhZFRyYW5zZm9ybSgpKS50
bzJkVHJhbnNmb3JtKCk7CiAgICAgaWYgKCFkZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkp
CiAgICAgICAgIHJldHVybjsKIApAQCAtOTQ3LDcgKzk0OCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJl
ckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29uc3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAg
ICAgIENDTGF5ZXJRdWFkIGRldmljZVF1YWQobGVmdEVkZ2UsIHRvcEVkZ2UsIHJpZ2h0RWRnZSwg
Ym90dG9tRWRnZSk7CiAKICAgICAgICAgLy8gTWFwIHF1YWQgdG8gbGF5ZXIgc3BhY2UuCi0gICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VEZXZpY2VUcmFuc2Zvcm0gPSBkZXZpY2VU
cmFuc2Zvcm0uaW52ZXJzZSgpOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZl
cnNlRGV2aWNlVHJhbnNmb3JtID0gZGV2aWNlVHJhbnNmb3JtLmludmVyc2UoKTsKICAgICAgICAg
bG9jYWxRdWFkID0gaW52ZXJzZURldmljZVRyYW5zZm9ybS5tYXBRdWFkKGRldmljZVF1YWQuZmxv
YXRRdWFkKCkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIE1vdmUgZnJhZ21lbnQgc2hhZGVy
IHRyYW5zZm9ybSB0byB2ZXJ0ZXggc2hhZGVyLiBXZSBjYW4gZG8gdGhpcyB3aGlsZQpAQCAtMTIy
MCw3ICsxMjIxLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlz
cGxheShNYW5hZ2VkVGV4dHVyZSogaHVkVGV4dHVyZSwgY29uc3QKICAgICBHTEMobV9jb250ZXh0
LCBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJvZ3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKG1f
Y29udGV4dCwgbV9jb250ZXh0LT51bmlmb3JtMWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5z
YW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4
OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKICAgICBtYXRyaXgudHJhbnNs
YXRlM2QoaHVkU2l6ZS53aWR0aCgpICogMC41LCBodWRTaXplLmhlaWdodCgpICogMC41LCAwKTsK
ICAgICBkcmF3VGV4dHVyZWRRdWFkKG1hdHJpeCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhl
aWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgMSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIHBy
b2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJpeExvY2F0aW9uKCksCkBAIC0xMjQzLDcgKzEyNDQs
NyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKICAg
ICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFuYWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKG1f
cmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0b3IuZ2V0KCkpOwogfQogCi12b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6dG9HTE1hdHJpeChmbG9hdCogZmxhdHRlbmVkLCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4
KGZsb2F0KiBmbGF0dGVuZWQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtKQogewog
ICAgIGZsYXR0ZW5lZFswXSA9IG0ubTExKCk7CiAgICAgZmxhdHRlbmVkWzFdID0gbS5tMTIoKTsK
QEAgLTEyNjMsMTMgKzEyNjQsMTMgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRvR0xN
YXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXQKICAgICBmbGF0
dGVuZWRbMTVdID0gbS5tNDQoKTsKIH0KIAotdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRy
YXdUZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCit2
b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd1RleHR1cmVkUXVhZChjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNp
dHksIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBtYXRyaXhMb2NhdGlvbiwgaW50IGFscGhhTG9jYXRpb24sIGlu
dCBxdWFkTG9jYXRpb24pCiB7CiAgICAgc3RhdGljIGZsb2F0IGdsTWF0cml4WzE2XTsKIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9IGRyYXdNYXRyaXg7CisgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gZHJhd01hdHJpeDsKIAogICAgIC8v
IEFwcGx5IGEgc2NhbGluZyBmYWN0b3IgdG8gc2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMg
aW50ZW5kZWQgc2l6ZS4KICAgICByZW5kZXJNYXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAx
KTsKQEAgLTEyOTgsNyArMTI5OSw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3
VGV4dHVyZWRRdWFkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0CiAgICAgR0xD
KG1fY29udGV4dCwgbV9jb250ZXh0LT5kcmF3RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRS
SUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7CiB9CiAK
LXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50
IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd01hdHJpeCkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVy
ZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkKIHsKICAgICBjb25zdCBSZW5k
ZXJTdXJmYWNlUHJvZ3JhbSogcHJvZ3JhbSA9IHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
UmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXggODFlZTFhN2I1MWI3NTBkNTMyNDI3
OGRhYzEyY2IyODU2ZjZjMzViOS4uMGY5NjVhOGI0ZmFkNTNjZWExZWZkMDk4M2VlOTViZjk3NzY3
MjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEwNyw4ICsxMDcs
OCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgdm9pZCBkZWJ1Z0dMQ2FsbChHcmFwaGljc0NvbnRl
eHQzRCosIGNvbnN0IGNoYXIqIGNvbW1hbmQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsK
IAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29u
c3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0cml4OyB9Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9
CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1h
dHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJvamVjdGlvbk1hdHJpeDsgfQorICAgIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0
dXJuIG1fd2luZG93TWF0cml4OyB9CiAKICAgICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJl
ZEdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQogICAg
IGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2VvbWV0cnlRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9z
aGFyZWRHZW9tZXRyeVF1YWQ7IH0KQEAgLTEzMSwxMSArMTMxLDExIEBAIHB1YmxpYzoKIAogICAg
IEdDM0RlbnVtIGJlc3RUZXh0dXJlRm9ybWF0KCk7CiAKLSAgICBzdGF0aWMgdm9pZCB0b0dMTWF0
cml4KGZsb2F0KiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSAgICB2b2lkIGRyYXdU
ZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAorICAg
IHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxvYXQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBG
bG9hdFF1YWQmLAogICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24s
IGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVhZExvY2F0aW9uKTsKLSAgICB2b2lkIGNvcHlUZXh0
dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3TWF0cml4KTsKKyAgICB2b2lkIGNvcHlUZXh0
dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVyZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIExheWVyUmVuZGVyZXJHcHVNZW1vcnlBbGxvY2F0aW9u
Q2hhbmdlZENhbGxiYWNrQWRhcHRlcjsKQEAgLTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3UXVhZCosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFj
ZURhbWFnZVJlY3QpOwogICAgIHZvaWQgZHJhd0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVj
a2VyYm9hcmREcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBD
Q0RlYnVnQm9yZGVyRHJhd1F1YWQqKTsKLSAgICB2b2lkIGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhj
b25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkZXZpY2VUcmFuc2Zvcm0pOworICAgIHZvaWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0
IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtKTsKICAgICB2b2lkIGRyYXdSZW5kZXJTdXJmYWNlUXVh
ZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCopOwogICAgIHZvaWQgZHJhd1NvbGlkQ29s
b3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRyYXdRdWFkKik7CiAgICAgdm9pZCBkcmF3VGV4dHVy
ZVF1YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1YWQqKTsKQEAgLTE5NSw4ICsxOTUsOCBAQCBwcml2
YXRlOgogCiAgICAgTGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcyBtX2NhcGFiaWxpdGllczsKIAot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3dpbmRvd01hdHJpeDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJpeDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fd2luZG93TWF0cml4OwogCiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2N1cnJl
bnRSZW5kZXJTdXJmYWNlOwogICAgIE1hbmFnZWRUZXh0dXJlKiBtX2N1cnJlbnRNYW5hZ2VkVGV4
dHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL0xpbmtIaWdobGlnaHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGlua0hpZ2hsaWdodC5jcHAKaW5kZXggNTM1MzZiMzJjZTBhZDcwNzI2MTMyNTQz
MmEwYTE1MTVhMTZlMDQ4Ny4uYmNiN2IzYzM2YzdiOGUxODRjZDIwNjdkZmE1YTBhNDUwYzViODY3
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
TGlua0hpZ2hsaWdodC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vTGlua0hpZ2hsaWdodC5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIAogI2lmIFVTRShB
Q0NFTEVSQVRFRF9DT01QT1NJVElORykKIAordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPExpbmtIaWdobGln
aHQ+IExpbmtIaWdobGlnaHQ6OmNyZWF0ZShHcmFwaGljc0xheWVyQ2hyb21pdW0qIHBhcmVudCwg
Y29uc3QgUGF0aCYgcGF0aCwgaW50IGFuaW1hdGlvbklkLCBpbnQgZ3JvdXBJZCkKQEAgLTUyLDcg
KzU0LDcgQEAgTGlua0hpZ2hsaWdodDo6TGlua0hpZ2hsaWdodChHcmFwaGljc0xheWVyQ2hyb21p
dW0qIHBhcmVudCwgY29uc3QgUGF0aCYgcGF0aCwgaW4KIAogICAgIG1fY29udGVudExheWVyLT5z
ZXRCb3VuZHMocmVjdC5zaXplKCkpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKHJlY3QueCgpICsgcmVjdC53aWR0aCgpIC8gMiwgcmVjdC55KCkgKyByZWN0
LmhlaWdodCgpIC8gMik7CiAgICAgbV9jb250ZW50TGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zv
cm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCmluZGV4IDBlYTQ4YWQxMzk5
ZWRhODVhNzVhYzcxNDM1ZTBlNDExYWNlZDc1NTAuLmU2NzExZWYyYTVjNTBmMTRiZmQwZjkwN2Zk
ZTc0NmI1ODQzODM2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCkBAIC0z
NCw4ICszNCw4IEBACiAjaW5jbHVkZSAiUHJvZ3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJTaGFk
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1
ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NSwyMyAr
NjUsMjMgQEAgcHVibGljOgogCiAgICAgLy8gVGhpcyBnb2VzIGZyb20gY29udGVudCBzcGFjZSB3
aXRoIHRoZSBvcmlnaW4gaW4gdGhlIGNlbnRlciBvZiB0aGUgcmVjdCBiZWluZyB0cmFuc2Zvcm1l
ZCB0byB0aGUgdGFyZ2V0IHNwYWNlIHdpdGggdGhlIG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQgb2Yg
dGhlCiAgICAgLy8gcmVjdCBiZWluZyB0cmFuc2Zvcm1lZC4gUG9zaXRpb24gdGhlIHJlY3Qgc28g
dGhhdCB0aGUgb3JpZ2luIGlzIGluIHRoZSBjZW50ZXIgb2YgaXQgYmVmb3JlIGFwcGx5aW5nIHRo
aXMgdHJhbnNmb3JtLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNm
b3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9Ci0gICAgdm9pZCBzZXREcmF3
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSB7IG1f
ZHJhd1RyYW5zZm9ybSA9IGRyYXdUcmFuc2Zvcm07IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3
VHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pIHsgbV9kcmF3VHJhbnNmb3JtID0g
ZHJhd1RyYW5zZm9ybTsgfQogCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdp
blRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVHJhbnNmb3JtOyB9Ci0gICAgdm9p
ZCBzZXRPcmlnaW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRy
YW5zZm9ybSkgeyBtX29yaWdpblRyYW5zZm9ybSA9IG9yaWdpblRyYW5zZm9ybTsgfQorICAgIGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fb3JpZ2luVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRPcmlnaW5UcmFu
c2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNm
b3JtKSB7IG1fb3JpZ2luVHJhbnNmb3JtID0gb3JpZ2luVHJhbnNmb3JtOyB9CiAKLSAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJl
dHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9Ci0gICAgdm9pZCBzZXRTY3JlZW5TcGFjZVRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0p
IHsgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zv
cm0oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgdm9pZCBz
ZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSkgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtID0gc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm07IH0KIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBy
ZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURyYXdUcmFuc2Zv
cm07IH0KLSAgICB2b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSkgeyBtX3JlcGxpY2FEcmF3VHJhbnNmb3Jt
ID0gcmVwbGljYURyYXdUcmFuc2Zvcm07IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
bGljYURyYXdUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FEcmF3VHJhbnNmb3Jt
KSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSByZXBsaWNhRHJhd1RyYW5zZm9ybTsgfQogCi0g
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KLSAgICB2b2lkIHNldFJl
cGxpY2FPcmlnaW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FP
cmlnaW5UcmFuc2Zvcm0pIHsgbV9yZXBsaWNhT3JpZ2luVHJhbnNmb3JtID0gcmVwbGljYU9yaWdp
blRyYW5zZm9ybTsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FPcmlnaW5U
cmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYU9yaWdpblRyYW5zZm9ybSkgeyBt
X3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSByZXBsaWNhT3JpZ2luVHJhbnNmb3JtOyB9CiAKLSAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KLSAgICB2
b2lkIHNldFJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKSB7IG1fcmVwbGljYVNjcmVlblNwYWNl
VHJhbnNmb3JtID0gcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KKyAgICB2
b2lkIHNldFJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiByZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0pIHsgbV9yZXBsaWNh
U2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSByZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KIAog
ICAgIGJvb2wgdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmcoKSBjb25zdCB7IHJl
dHVybiBtX3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOyB9CiAgICAgdm9pZCBz
ZXRUYXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZyhib29sIGFuaW1hdGluZykgeyBt
X3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9CkBAIC0x
MjQsMTIgKzEyNCwxMiBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV9kcmF3T3BhY2l0eTsKICAg
ICBib29sIG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZzsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtX2RyYXdUcmFuc2Zvcm07Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFu
c2Zvcm07Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtOwotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybTsKLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKKyAgICBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fb3JpZ2luVHJhbnNmb3JtOworICAgIFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYURyYXdUcmFuc2Zvcm07CisgICAgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07Cisg
ICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FTY3JlZW5TcGFjZVRy
YW5zZm9ybTsKICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7
CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBXZWJL
aXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggMTdjMzUxZjZkN2RmYmRiYWMxYzlkODVlYmE3NGU4Njk3MWNjOWNjNi4u
MTJlMzcxN2NhNmRmZjFjMzhhYzk0ZGJiMTdlZTZjNjdmZDBjZDUxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVt
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxl
ZExheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDg5LDcgKzQ5MCw3
IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVtOjp1cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBs
ZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGluCiAKICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUo
KS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7CiAgICAgICAgICAgICBpZiAob2NjbHVzaW9uKQot
ICAgICAgICAgICAgICAgIG9jY2x1c2lvbi0+b3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXBsb2FkKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIHNvdXJjZVJlY3QsIHRpbGUtPm9wYXF1ZVJlY3QoKSk7Cisg
ICAgICAgICAgICAgICAgb2NjbHVzaW9uLT5vdmVyZHJhd01ldHJpY3MoKS5kaWRVcGxvYWQoV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgc291cmNlUmVjdCwgdGlsZS0+b3BhcXVlUmVjdCgpKTsK
IAogICAgICAgICAgICAgY29uc3QgSW50UG9pbnQgYW5jaG9yID0gbV90aWxlci0+dGlsZVJlY3Qo
dGlsZSkubG9jYXRpb24oKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oCmluZGV4IDdm
NTA2YTcwNmYyYTQzYWU2ZDM4YTVhZjYzYmQ3NWNmOGNiM2U3ZDUuLmUyMWRlODk2NDc1NzViZmU2
OWJlY2VlMzk4MmIyOTUyZDVlMjJjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9uQ3VydmUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmgK
QEAgLTI1LDE0ICsyNSwxNCBAQAogI2lmbmRlZiBDQ0FuaW1hdGlvbkN1cnZlX2gKICNkZWZpbmUg
Q0NBbmltYXRpb25DdXJ2ZV9oCiAKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgot
CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8
d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0Zsb2F0
QW5pbWF0aW9uQ3VydmU7CiBjbGFzcyBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOworY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIFRyYW5zZm9ybU9wZXJhdGlvbnM7CiAKIC8vIEFuIGFuaW1hdGlvbiBj
dXJ2ZSBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIHZhbHVlIGdpdmVuIGEgdGltZS4KQEAg
LTY1LDcgKzY1LDcgQEAgY2xhc3MgQ0NUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSA6IHB1YmxpYyBD
Q0FuaW1hdGlvbkN1cnZlIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5DQ1RyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlKCkgeyB9CiAKLSAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IGdldFZh
bHVlKGRvdWJsZSB0LCBjb25zdCBJbnRTaXplJiBsYXllclNpemUpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZ2V0VmFsdWUoZG91YmxlIHQs
IGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSkgY29uc3QgPSAwOwogCiAgICAgLy8gUGFydGlhbCBD
Q0FuaW1hdGlvbiBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0
IE9WRVJSSURFIHsgcmV0dXJuIFRyYW5zZm9ybTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tl
ci5jcHAKaW5kZXggNTY3YmQxZjFmZWEyMDAyZTU0Yjc1NWM3NmVmYTkxZWU1NjU0YWVmNC4uOGZk
M2VkMTI0YjIzMDNiNzdhMGIwZjQ5Mjg5ODNkOWM4OTUxYmVkYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rh
bWFnZVRyYWNrZXIuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJT
dXJmYWNlLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KIAordXNp
bmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBQYXNzT3duUHRyPENDRGFtYWdlVHJhY2tlcj4gQ0NEYW1hZ2VUcmFja2VyOjpjcmVhdGUo
KQpAQCAtMjQ0LDcgKzI0Niw3IEBAIHZvaWQgQ0NEYW1hZ2VUcmFja2VyOjpleHRlbmREYW1hZ2VG
b3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIsIEZsb2F0UmVjdCYgdGFyZ2V0CiAgICAgLy8gUHJv
cGVydHkgY2hhbmdlcyB0YWtlIHByaW9yaXR5IG92ZXIgdXBkYXRlIHJlY3RzLgogCiAgICAgLy8g
Q29tcHV0ZSB0aGUgbGF5ZXIncyAib3JpZ2luVHJhbnNmb3JtIiBieSB0cmFuc2xhdGluZyB0aGUg
ZHJhd1RyYW5zZm9ybS4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcmlnaW5UcmFuc2Zvcm0g
PSBsYXllci0+ZHJhd1RyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG9y
aWdpblRyYW5zZm9ybSA9IGxheWVyLT5kcmF3VHJhbnNmb3JtKCk7CiAgICAgb3JpZ2luVHJhbnNm
b3JtLnRyYW5zbGF0ZSgtMC41ICogbGF5ZXItPmJvdW5kcygpLndpZHRoKCksIC0wLjUgKiBsYXll
ci0+Ym91bmRzKCkuaGVpZ2h0KCkpOwogCiAgICAgYm9vbCBsYXllcklzTmV3ID0gZmFsc2U7CkBA
IC0zMDQsMTIgKzMwNiwxMiBAQCB2b2lkIENDRGFtYWdlVHJhY2tlcjo6ZXh0ZW5kRGFtYWdlRm9y
UmVuZGVyU3VyZmFjZShDQ0xheWVySW1wbCogbGF5ZXIsIEZsb2F0UmVjdAogCiAgICAgLy8gSWYg
dGhlcmUgd2FzIGRhbWFnZSwgdHJhbnNmb3JtIGl0IHRvIHRhcmdldCBzcGFjZSwgYW5kIHBvc3Np
Ymx5IGNvbnRyaWJ1dGUgaXRzIHJlZmxlY3Rpb24gaWYgbmVlZGVkLgogICAgIGlmICghZGFtYWdl
UmVjdEluTG9jYWxTcGFjZS5pc0VtcHR5KCkpIHsKLSAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9y
bSgpOworICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNm
b3JtID0gcmVuZGVyU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCk7CiAgICAgICAgIEZsb2F0UmVj
dCBkYW1hZ2VSZWN0SW5UYXJnZXRTcGFjZSA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG9y
aWdpblRyYW5zZm9ybSwgZGFtYWdlUmVjdEluTG9jYWxTcGFjZSk7CiAgICAgICAgIHRhcmdldERh
bWFnZVJlY3QudW5pdGVJZk5vblplcm8oZGFtYWdlUmVjdEluVGFyZ2V0U3BhY2UpOwogCiAgICAg
ICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3JpZ2luVHJhbnNmb3JtID0gcmVuZGVyU3VyZmFjZS0+
cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpOworICAgICAgICAgICAgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5yZXBs
aWNhT3JpZ2luVHJhbnNmb3JtKCk7CiAgICAgICAgICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRl
SWZOb25aZXJvKENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHJlcGxpY2FPcmlnaW5UcmFuc2Zv
cm0sIGRhbWFnZVJlY3RJbkxvY2FsU3BhY2UpKTsKICAgICAgICAgfQogICAgIH0KQEAgLTMyMiw3
ICszMjQsNyBAQCB2b2lkIENDRGFtYWdlVHJhY2tlcjo6ZXh0ZW5kRGFtYWdlRm9yUmVuZGVyU3Vy
ZmFjZShDQ0xheWVySW1wbCogbGF5ZXIsIEZsb2F0UmVjdAogICAgICAgICByZW1vdmVSZWN0RnJv
bUN1cnJlbnRGcmFtZShyZXBsaWNhTWFza0xheWVyLT5pZCgpLCByZXBsaWNhSXNOZXcpOwogCiAg
ICAgICAgIC8vIENvbXB1dGUgdGhlIHJlcGxpY2EncyAib3JpZ2luVHJhbnNmb3JtIiB0aGF0IG1h
cHMgZnJvbSB0aGUgcmVwbGljYSdzIG9yaWdpbiBzcGFjZSB0byB0aGUgdGFyZ2V0IHN1cmZhY2Ug
b3JpZ2luIHNwYWNlLgotICAgICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGlj
YU9yaWdpblRyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPnJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0o
KTsKKyAgICAgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCk7CiAgICAg
ICAgIEZsb2F0UmVjdCByZXBsaWNhTWFza0xheWVyUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBw
ZWRSZWN0KHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0sIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJv
KCksIEZsb2F0U2l6ZShyZXBsaWNhTWFza0xheWVyLT5ib3VuZHMoKS53aWR0aCgpLCByZXBsaWNh
TWFza0xheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSkpKTsKICAgICAgICAgc2F2ZVJlY3RGb3JOZXh0
RnJhbWUocmVwbGljYU1hc2tMYXllci0+aWQoKSwgcmVwbGljYU1hc2tMYXllclJlY3QpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0RyYXdRdWFkLmgKaW5kZXggZjRlZjJkM2YyMWMxZmFlNTc2NjYzY2QzMjJmY2IxMjdiODdj
YmZlYi4uMzgxY2JhZWFjZjNmMjUyMTc0ZDU3ZmRkMzNmMjA5YjE1OGExZDU5MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVh
ZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
RHJhd1F1YWQuaApAQCAtNDcsOCArNDcsOCBAQCBjbGFzcyBDQ0RyYXdRdWFkIHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShDQ0RyYXdRdWFkKTsKIHB1YmxpYzoKICAgICBjb25zdCBJbnRSZWN0
JiBxdWFkUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFJlY3Q7IH0KLSAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVk
UXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtKCk7IH0KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
bGF5ZXJUcmFuc2Zvcm0oKTsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
cXVhZFRyYW5zZm9ybSgpOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+
bGF5ZXJUcmFuc2Zvcm0oKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0
IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5sYXllclJlY3QoKTsgfQogICAgIGNvbnN0IElu
dFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmNsaXBS
ZWN0KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFk
U3RhdGUtPm9wYWNpdHkoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1h
dGlvbkN1cnZlLmNwcAppbmRleCBhZTQxZmUwNjk1YjMwZDZhMjk0Nzc1NTBlZjZmMTk5YjEzMTRj
ZmQ5Li40ZGIzOWI2OWEwMDFmYzg3M2YyNTQ1MzRiZDc3MmNhMDQ0NDFhZWZmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1l
ZEFuaW1hdGlvbkN1cnZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcApAQCAtMzcsNiArMzcs
OCBAQAogCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCit1c2luZyBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CkBA
IC0xNzYsNyArMTc4LDcgQEAgUGFzc093blB0cjxDQ1RyYW5zZm9ybUtleWZyYW1lPiBDQ1RyYW5z
Zm9ybUtleWZyYW1lOjpjbG9uZSgpIGNvbnN0CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246Ok1BVFJJWDogewogICAgICAgICAgICAgTWF0cml4VHJhbnNmb3JtT3Bl
cmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24q
PihtX3ZhbHVlLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtID0gdHJhbnNmb3JtLT5tYXRyaXgoKTsKKyAgICAgICAgICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IG0gPSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm0tPm1h
dHJpeCgpKTsKICAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRy
aXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShtLmEoKSwgbS5iKCksIG0uYygpLCBtLmQoKSwg
bS5lKCksIG0uZigpKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpAQCAtMjg3LDE4
ICsyODksMTkgQEAgUGFzc093blB0cjxDQ0FuaW1hdGlvbkN1cnZlPiBDQ0tleWZyYW1lZFRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlOjpjbG9uZSgpIGNvbnN0CiAgICAgcmV0dXJuIHRvUmV0dXJuLnJl
bGVhc2UoKTsKIH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NLZXlmcmFtZWRUcmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZTo6Z2V0VmFsdWUoZG91YmxlIHQsIGNvbnN0IEludFNpemUmIGxheWVyU2l6
ZSkgY29uc3QKK1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4IENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5p
bWF0aW9uQ3VydmU6OmdldFZhbHVlKGRvdWJsZSB0LCBjb25zdCBJbnRTaXplJiBsYXllclNpemUp
IGNvbnN0CiB7CisgICAgLy8gTm90ZTogV2ViQ29yZSBkYXRhIHR5cGUgdXNlZCBoZXJlLCBqdXN0
IGZvciBub3cuCiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtTWF0cml4OwogCiAg
ICAgaWYgKHQgPD0gbV9rZXlmcmFtZXMuZmlyc3QoKS0+dGltZSgpKSB7CiAgICAgICAgIG1fa2V5
ZnJhbWVzLmZpcnN0KCktPnZhbHVlKCkuYXBwbHkobGF5ZXJTaXplLCB0cmFuc2Zvcm1NYXRyaXgp
OwotICAgICAgICByZXR1cm4gdHJhbnNmb3JtTWF0cml4OworICAgICAgICByZXR1cm4gV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtTWF0cml4KTsKICAgICB9CiAKICAgICBpZiAodCA+
PSBtX2tleWZyYW1lcy5sYXN0KCktPnRpbWUoKSkgewogICAgICAgICBtX2tleWZyYW1lcy5sYXN0
KCktPnZhbHVlKCkuYXBwbHkobGF5ZXJTaXplLCB0cmFuc2Zvcm1NYXRyaXgpOwotICAgICAgICBy
ZXR1cm4gdHJhbnNmb3JtTWF0cml4OworICAgICAgICByZXR1cm4gV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgodHJhbnNmb3JtTWF0cml4KTsKICAgICB9CiAKICAgICBzaXplX3QgaSA9IDA7CkBAIC0z
MTYsNiArMzE5LDcgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NLZXlmcmFtZWRUcmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZTo6Z2V0VmFsdWUoZG91YmxlIHQsIGNvbnMKICAgICAgICAgZm9yIChzaXpl
X3QgaiA9IDA7IGogPCBtX2tleWZyYW1lc1tpKzFdLT52YWx1ZSgpLnNpemUoKTsgKytqKQogICAg
ICAgICAgICAgbV9rZXlmcmFtZXNbaSsxXS0+dmFsdWUoKS5vcGVyYXRpb25zKClbal0tPmJsZW5k
KG1fa2V5ZnJhbWVzW2ldLT52YWx1ZSgpLmF0KGopLCBwcm9ncmVzcyktPmFwcGx5KHRyYW5zZm9y
bU1hdHJpeCwgbGF5ZXJTaXplKTsKICAgICB9IGVsc2UgeworICAgICAgICAvLyBOb3RlOiBXZWJD
b3JlIGRhdGEgdHlwZSB1c2VkIGhlcmUsIGp1c3QgZm9yIG5vdy4KICAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggc291cmNlOwogCiAgICAgICAgIG1fa2V5ZnJhbWVzW2ldLT52YWx1ZSgpLmFw
cGx5KGxheWVyU2l6ZSwgc291cmNlKTsKQEAgLTMyNCw3ICszMjgsNyBAQCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpnZXRWYWx1ZShkb3Vi
bGUgdCwgY29ucwogICAgICAgICB0cmFuc2Zvcm1NYXRyaXguYmxlbmQoc291cmNlLCBwcm9ncmVz
cyk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRyYW5zZm9ybU1hdHJpeDsKKyAgICByZXR1cm4gV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtTWF0cml4KTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5o
CmluZGV4IDhkMWYwZTA1NWY0Mjk3ZDQzNjM3Nzc5OGRjNDI1ZGE4ZDk0ZjUwMWYuLmU3MGNkYWZi
NzViMjk4MDliMGVkYmUzOTBjN2FiYWM5OTBhNWNiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3Vy
dmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmgKQEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBQYXNzT3duUHRyPENDQW5pbWF0aW9uQ3VydmU+IGNsb25lKCkgY29uc3QgT1ZF
UlJJREU7CiAKICAgICAvLyBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlIGltcGxlbWVudGF0aW9u
Ci0gICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdCwgY29u
c3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdCwgY29uc3QgSW50U2l6ZSYpIGNvbnN0
IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAgIENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9u
Q3VydmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
LmNwcAppbmRleCAxNGZiNzhhNjVjMjU4MDI3NGVhZjY4OTAxZjUyZTRiZjc3YzU4YmJjLi4wOTY5
Nzk1NDQ4M2E1NzkyZjJlNDI4ZDMwZjBhMmU0ZmNjY2RhZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCkBAIC0yNywxMiArMjcsMTQgQEAK
ICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAi
R3JhcGhpY3NMYXllci5oIiAvLyBmb3IgS2V5ZnJhbWVWYWx1ZUxpc3QKLSNpbmNsdWRlICJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCiAj
aW5jbHVkZSAiY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oIgorI2luY2x1ZGUgPHB1Ymxp
Yy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXg7CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTQ3
OCw3ICs0ODAsNyBAQCB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjp0aWNrQW5pbWF0
aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkKIAogICAgICAgICAgICAgY2FzZSBDQ0FjdGl2ZUFu
aW1hdGlvbjo6VHJhbnNmb3JtOiB7CiAgICAgICAgICAgICAgICAgY29uc3QgQ0NUcmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZSogdHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUgPSBtX2FjdGl2ZUFuaW1hdGlv
bnNbaV0tPmN1cnZlKCktPnRvVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKLSAgICAgICAgICAg
ICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSB0cmFuc2Zvcm1BbmltYXRp
b25DdXJ2ZS0+Z2V0VmFsdWUodHJpbW1lZCwgbV9jbGllbnQtPmJvdW5kcygpKTsKKyAgICAgICAg
ICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRyaXggPSB0cmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZS0+Z2V0VmFsdWUodHJpbW1lZCwgbV9jbGllbnQtPmJvdW5kcygpKTsKICAg
ICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQobW9u
b3RvbmljVGltZSkpCiAgICAgICAgICAgICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+
c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZpbmlzaGVkLCBtb25vdG9uaWNUaW1lKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXgg
YWM3Mjg3ZjcxMWUyMzAzYWEwOTNhNzEyYzVjNTkxYTEwZTMxYzNlNC4uYzRjOTE1OGIyYzg3Y2Zl
NDZkZmMxNjJkMDg3YTExZmRmZmI4OTI0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC0zNCwxMiArMzQsMTYgQEAKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQgeworY2xhc3MgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3Mg
SW50U2l6ZTsKIGNsYXNzIEtleWZyYW1lVmFsdWVMaXN0OwotY2xhc3MgVHJhbnNmb3JtYXRpb25N
YXRyaXg7CiAKIGNsYXNzIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IHsKIHB1Ymxp
YzoKQEAgLTQ4LDggKzUyLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5RnJvbUFuaW1hdGlvbihmbG9hdCkgPSAw
OwogICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgc2V0VHJhbnNmb3JtRnJvbUFuaW1hdGlvbihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYp
ID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0o
KSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybUZyb21BbmltYXRpb24o
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0dWFs
IGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0
ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0ID0gMDsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcAppbmRleCA2OWRlOTA0NzI0OGY4M2M4OTgzMGM4MGIw
ZmI5MTI0Y2FiY2U0OTEyLi4xZjA4YjliOTk3Mzg0MjVkNDFhNGM0ZGZiYzdiMGUzMGI3ZDBmZTM1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3BwCkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAi
Y2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBDQ0xheWVySW1wbDo6Q0NMYXllckltcGwoaW50IGlkKQpAQCAtMTk0LDkg
KzE5Niw5IEBAIGNvbnN0IEludFJlY3QgQ0NMYXllckltcGw6OmdldERyYXdSZWN0KCkgY29uc3QK
ICAgICByZXR1cm4gbWFwcGVkUmVjdDsKIH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NMYXll
ckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25zdAorV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NM
YXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25zdAogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHF1YWRUcmFuc2Zvcm1hdGlvbiA9IGRyYXdUcmFuc2Zvcm0oKTsKKyAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtYXRpb24gPSBkcmF3VHJhbnNmb3JtKCk7CiAKICAg
ICBmbG9hdCBvZmZzZXRYID0gLTAuNSAqIGJvdW5kcygpLndpZHRoKCk7CiAgICAgZmxvYXQgb2Zm
c2V0WSA9IC0wLjUgKiBib3VuZHMoKS5oZWlnaHQoKTsKQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lk
IENDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5RnJvbUFuaW1hdGlvbihmbG9hdCBvcGFjaXR5KQogICAg
IHNldE9wYWNpdHkob3BhY2l0eSk7CiB9CiAKLXZvaWQgQ0NMYXllckltcGw6OnNldFRyYW5zZm9y
bUZyb21BbmltYXRpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3Zv
aWQgQ0NMYXllckltcGw6OnNldFRyYW5zZm9ybUZyb21BbmltYXRpb24oY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKIHsKICAgICBzZXRUcmFuc2Zvcm0odHJhbnNmb3Jt
KTsKIH0KQEAgLTQ1NSw3ICs0NTcsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRQcmVzZXJ2ZXMz
RChib29sIHByZXNlcnZlczNEKQogICAgIG5vdGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRy
ZWUoKTsKIH0KIAotdm9pZCBDQ0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKQordm9pZCBDQ0xheWVySW1w
bDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1
YmxheWVyVHJhbnNmb3JtKQogewogICAgIGlmIChtX3N1YmxheWVyVHJhbnNmb3JtID09IHN1Ymxh
eWVyVHJhbnNmb3JtKQogICAgICAgICByZXR1cm47CkBAIC00NjUsNyArNDY3LDcgQEAgdm9pZCBD
Q0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHN1YmxheWVyVHJhbnMKICAgICBub3RlTGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JEZXNjZW5k
YW50cygpOwogfQogCi12b2lkIENDTGF5ZXJJbXBsOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3ZvaWQgQ0NMYXllckltcGw6OnNldFRyYW5zZm9y
bShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIGlmICht
X3RyYW5zZm9ybSA9PSB0cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1w
bC5oCmluZGV4IDg4NGMxMjlhZGFhMDhmMDVjYmQ0NDM4Yzc5NzFiNGUwN2Q1Zjc3ZDguLjJjNDFk
MDZlYThiMDBiZGQyZWNmNDM3OWZhOGQ1ZmI5ZGZjMjljYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwu
aApAQCAtMzEsMTEgKzMxLDExIEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJl
Z2lvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCiAj
aW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFk
U3RhdGUuaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgorI2luY2x1
ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CkBAIC02MSw4ICs2MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGludCBpZCgpIGNv
bnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbGF5ZXJJZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRP
cGFjaXR5RnJvbUFuaW1hdGlvbihmbG9hdCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBmbG9hdCBv
cGFjaXR5KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9vcGFjaXR5OyB9Ci0gICAgdmlydHVh
bCB2b2lkIHNldFRyYW5zZm9ybUZyb21BbmltYXRpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1Gcm9tQW5pbWF0aW9uKGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0
dXJuIG1fdHJhbnNmb3JtOyB9CiAgICAgdmlydHVhbCBjb25zdCBJbnRTaXplJiBib3VuZHMoKSBj
b25zdCBPVkVSUklERSB7IHJldHVybiBtX2JvdW5kczsgfQogCiAgICAgLy8gVHJlZSBzdHJ1Y3R1
cmUuCkBAIC0xMzYsOCArMTM2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0SXNOb25Db21wb3Np
dGVkQ29udGVudChib29sIGlzTm9uQ29tcG9zaXRlZENvbnRlbnQpIHsgbV9pc05vbkNvbXBvc2l0
ZWRDb250ZW50ID0gaXNOb25Db21wb3NpdGVkQ29udGVudDsgfQogICAgIGJvb2wgaXNOb25Db21w
b3NpdGVkQ29udGVudCgpIGNvbnN0IHsgcmV0dXJuIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsg
fQogCi0gICAgdm9pZCBzZXRTdWJsYXllclRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYpOwotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9y
bSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFN1
YmxheWVyVHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsK
KyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5ZXJUcmFuc2Zvcm07IH0KIAogICAgIC8vIERl
YnVnIGxheWVyIGJvcmRlciAtIHZpc3VhbCBlZmZlY3Qgb25seSwgZG8gbm90IGNoYW5nZSBnZW9t
ZXRyeS9jbGlwcGluZy9ldGMuCiAgICAgdm9pZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsK
QEAgLTIxMiwxMyArMjEyLDEzIEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSByZWN0IGNv
bnRhaW50YWluaW5nIHRoaXMgbGF5ZXIgaW4gdGhlIGN1cnJlbnQgdmlldydzIGNvb3JkaW5hdGUg
c3lzdGVtLgogICAgIGNvbnN0IEludFJlY3QgZ2V0RHJhd1JlY3QoKSBjb25zdDsKIAotICAgIHZv
aWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBz
ZXRUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAg
IGJvb2wgdHJhbnNmb3JtSXNBbmltYXRpbmcoKSBjb25zdDsKIAotICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNm
b3JtOyB9Ci0gICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBtYXRyaXgpIHsgbV9kcmF3VHJhbnNmb3JtID0gbWF0cml4OyB9Ci0gICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4g
bV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsgfQotICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zv
cm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX3NjcmVlblNwYWNlVHJh
bnNmb3JtID0gbWF0cml4OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd1RyYW5zZm9ybTsgfQor
ICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgpIHsgbV9kcmF3VHJhbnNmb3JtID0gbWF0cml4OyB9CisgICAgY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTY3Jl
ZW5TcGFjZVRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBt
YXRyaXgpIHsgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybSA9IG1hdHJpeDsgfQogCiAgICAgYm9vbCBk
cmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm1J
c0FuaW1hdGluZzsgfQogICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nKGJvb2wg
YW5pbWF0aW5nKSB7IG1fZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9CkBA
IC0yNTMsNyArMjUzLDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHdyaXRlSW5kZW50
KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KTsKIAogICAgIC8vIFRyYW5zZm9ybWF0aW9uIHVzZWQg
dG8gdHJhbnNmb3JtIHF1YWRzIHByb3ZpZGVkIGluIGFwcGVuZFF1YWRzLgotICAgIHZpcnR1YWwg
VHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3Q7CiAK
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRQYXJlbnQoQ0NMYXllckltcGwqIHBhcmVudCkgeyBtX3Bh
cmVudCA9IHBhcmVudDsgfQpAQCAtMzA0LDggKzMwNCw4IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQ
b2ludCBtX3Bvc2l0aW9uOwogICAgIGJvb2wgbV9wcmVzZXJ2ZXMzRDsKICAgICBib29sIG1fZHJh
d0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlczsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
X3N1YmxheWVyVHJhbnNmb3JtOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3Jt
OworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zdWJsYXllclRyYW5zZm9y
bTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogICAg
IGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsKICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29u
dGVudDsKIApAQCAtMzM5LDggKzMzOSw4IEBAIHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJGaWx0
ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMg
bV9iYWNrZ3JvdW5kRmlsdGVyczsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1Ry
YW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jt
OworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOwor
ICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9y
bTsKICAgICBib29sIG1fZHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nOwogICAgIGJvb2wgbV9zY3Jl
ZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5nOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3Bw
CmluZGV4IDFhZjYzOWM4YjA5NmI0NDkwOTU4MTExMGVlYWMwMmVlMWYzNjc1NWEuLmZkZjNjN2Ji
Mjc1YzE2NzEzM2ZhMTA4ZDExYTMwZDFmODMyYWUwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0
ZXIuY3BwCkBAIC0yNiwxMyArMjYsMTQgQEAKIAogI2luY2x1ZGUgImNjL0NDTGF5ZXJTb3J0ZXIu
aCIKIAotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NN
YXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZS5oIgogI2luY2x1ZGUgPGxp
bWl0cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2lu
Y2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCiB1c2luZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogI2RlZmluZSBMT0dfQ0hBTk5FTF9QUkVGSVgg
TG9nCiAjZGVmaW5lIFNIT1dfREVCVUdfTE9HIDAKQEAgLTE1MSw3ICsxNTIsNyBAQCBDQ0xheWVy
U29ydGVyOjpBQkNvbXBhcmVSZXN1bHQgQ0NMYXllclNvcnRlcjo6Y2hlY2tPdmVybGFwKExheWVy
U2hhcGUqIGEsIExheWVyUwogICAgIHJldHVybiBCQmVmb3JlQTsKIH0KIAotQ0NMYXllclNvcnRl
cjo6TGF5ZXJTaGFwZTo6TGF5ZXJTaGFwZShmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkKK0NDTGF5ZXJTb3J0ZXI6Okxh
eWVyU2hhcGU6OkxheWVyU2hhcGUoZmxvYXQgd2lkdGgsIGZsb2F0IGhlaWdodCwgY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0pCiB7CiAgICAgRmxvYXRRdWFkIGxh
eWVyUXVhZChGbG9hdFBvaW50KC13aWR0aCAqIDAuNSwgaGVpZ2h0ICogMC41KSwKICAgICAgICAg
ICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQod2lkdGggKiAwLjUsIGhlaWdodCAqIDAuNSksCkBA
IC0yMzYsNyArMjM3LDcgQEAgdm9pZCBDQ0xheWVyU29ydGVyOjpjcmVhdGVHcmFwaE5vZGVzKExh
eWVyTGlzdDo6aXRlcmF0b3IgZmlyc3QsIExheWVyTGlzdDo6aXRlcmEKICAgICAgICAgTE9HKEND
TGF5ZXJTb3J0ZXIsICJMYXllciAlZCAoJWQgeCAlZClcbiIsIG5vZGUubGF5ZXItPmlkKCksIG5v
ZGUubGF5ZXItPmJvdW5kcygpLndpZHRoKCksIG5vZGUubGF5ZXItPmJvdW5kcygpLmhlaWdodCgp
KTsKICNlbmRpZgogCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07
CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CiAgICAgICAg
IGZsb2F0IGxheWVyV2lkdGgsIGxheWVySGVpZ2h0OwogICAgICAgICBpZiAocmVuZGVyU3VyZmFj
ZSkgewogICAgICAgICAgICAgZHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPmRyYXdUcmFu
c2Zvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuaAppbmRleCAzZTJhODhjOTIxOTNiYjcwMTA0
NDMxNDdlMGZmZmI3NTNhNzRiMjk5Li5jYjg4ZTg1ZGI1NGIyOTk3ZGEzZGNlZmI4NDVjNWZjY2E0
MDk4MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyU29ydGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNvcnRlci5oCkBAIC0zMyw2ICszMywxMCBAQAogI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFt
ZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKK30KKwogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0xheWVyU29ydGVyIHsKQEAgLTQ3LDcgKzUxLDcg
QEAgcHVibGljOgogICAgIC8vIEhvbGRzIHZhcmlvdXMgdXNlZnVsIHByb3BlcnRpZXMgZGVyaXZl
ZCBmcm9tIGEgbGF5ZXIncyAzRCBvdXRsaW5lLgogICAgIHN0cnVjdCBMYXllclNoYXBlIHsKICAg
ICAgICAgTGF5ZXJTaGFwZSgpIHsgfQotICAgICAgICBMYXllclNoYXBlKGZsb2F0IHdpZHRoLCBm
bG9hdCBoZWlnaHQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKTsK
KyAgICAgICAgTGF5ZXJTaGFwZShmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKTsKIAogICAgICAgICBm
bG9hdCBsYXllclpGcm9tUHJvamVjdGVkUG9pbnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmNwcAppbmRleCA5NjM5N2NhNDVjNDIxNjQ5NWFj
ZmI4YTA3ZTRiNmEwYTE1OTkwMWFjLi5jYjYxMGRmZDllOTJjMjI3Y2Q4MzE2M2IxMzQwNDA1ZWI2
Y2RmYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5jcHAKQEAgLTQzLDYgKzQzLDcg
QEAKICNpbmNsdWRlICJjYy9DQ1RocmVhZFByb3h5LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7
Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2Ugewog
c3RhdGljIGludCBudW1MYXllclRyZWVJbnN0YW5jZXM7CkBAIC01MTEsOCArNTEyLDggQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxheWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIs
IENDVGV4dHVyZVVwZGF0ZXImIHUKIAogICAgIHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5
ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICAgICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggZGV2aWNlU2NhbGVUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBkZXZpY2VTY2FsZVRyYW5zZm9ybTsKICAgICAgICAgZGV2aWNlU2NhbGVUcmFuc2Zvcm0uc2Nh
bGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwg
cm9vdExheWVyLCBkZXZpY2VTY2FsZVRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIHVwZGF0ZUxp
c3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXllckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxp
dGllcygpLm1heFRleHR1cmVTaXplKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5o
CmluZGV4IGVjZWMyM2IxMWRhZDdmZjE5MGE5OTNjNzM0OTVhMjg4Zjg1ODk1ZWIuLmRjOGZiMWM5
MzU0YzFhMGFhNDJhNmZiZmJjY2NjY2Q0YTNhMmRhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdC5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJSYXRlTGltaXRlci5oIgotI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NBbmltYXRpb25FdmVudHMuaCIK
ICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1By
b3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCBl
NGVlM2VkYzFhNzhlM2YwODAxZTk4ZWU5Y2NjNTUxNTE4NGU1MThkLi5iNWJjYWJiZjA4YzZkYzMw
MjMzYzdhYzNmNjI5NjM3MjYyYmMwNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdENvbW1vbi5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAj
aW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1
bS5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NB
Y3RpdmVBbmltYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCkBAIC0zOSwxMCArMzgsMTMgQEAKICNp
bmNsdWRlICJjYy9DQ0xheWVyU29ydGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgog
I2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oPgorCit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUludFJlY3QgQ0NMYXllclRyZWVIb3N0Q29t
bW9uOjpjYWxjdWxhdGVWaXNpYmxlUmVjdChjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVj
dCwgY29uc3QgSW50UmVjdCYgbGF5ZXJCb3VuZFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0pCitJbnRSZWN0IENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
VmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZVJlY3QsIGNvbnN0IEludFJl
Y3QmIGxheWVyQm91bmRSZWN0LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtKQogewogICAgIC8vIElzIHRoaXMgbGF5ZXIgZnVsbHkgY29udGFpbmVkIHdpdGhpbiB0aGUg
dGFyZ2V0IHN1cmZhY2U/CiAgICAgSW50UmVjdCBsYXllckluU3VyZmFjZVNwYWNlID0gQ0NNYXRo
VXRpbDo6bWFwQ2xpcHBlZFJlY3QodHJhbnNmb3JtLCBsYXllckJvdW5kUmVjdCk7CkBAIC01OSw3
ICs2MSw3IEBAIEludFJlY3QgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxl
UmVjdChjb25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlCiAgICAgLy8gVGhpcyBib3VuZGluZyBy
ZWN0YW5nbGUgbWF5IGJlIGxhcmdlciB0aGFuIGl0IG5lZWRzIHRvIGJlIChiZWluZwogICAgIC8v
IGF4aXMtYWxpZ25lZCksIGJ1dCBpcyBhIHJlYXNvbmFibGUgZmlsdGVyIG9uIHRoZSBzcGFjZSB0
byBjb25zaWRlci4KICAgICAvLyBOb24taW52ZXJ0aWJsZSB0cmFuc2Zvcm1zIHdpbGwgY3JlYXRl
IGFuIGVtcHR5IHJlY3QgaGVyZS4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJm
YWNlVG9MYXllciA9IHRyYW5zZm9ybS5pbnZlcnNlKCk7CisgICAgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggc3VyZmFjZVRvTGF5ZXIgPSB0cmFuc2Zvcm0uaW52ZXJzZSgpOwogICAgIElu
dFJlY3QgbGF5ZXJSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChDQ01hdGhVdGlsOjpwcm9qZWN0Q2xp
cHBlZFJlY3Qoc3VyZmFjZVRvTGF5ZXIsIEZsb2F0UmVjdChtaW5pbWFsU3VyZmFjZVJlY3QpKSk7
CiAgICAgbGF5ZXJSZWN0LmludGVyc2VjdChsYXllckJvdW5kUmVjdCk7CiAgICAgcmV0dXJuIGxh
eWVyUmVjdDsKQEAgLTEwMiw3ICsxMDQsNyBAQCBzdGF0aWMgYm9vbCBpc0xheWVyQmFja0ZhY2VW
aXNpYmxlKExheWVyVHlwZSogbGF5ZXIpCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlw
ZT4KLXN0YXRpYyBib29sIGlzU3VyZmFjZUJhY2tGYWNlVmlzaWJsZShMYXllclR5cGUqIGxheWVy
LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkKK3N0YXRpYyBib29s
IGlzU3VyZmFjZUJhY2tGYWNlVmlzaWJsZShMYXllclR5cGUqIGxheWVyLCBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkKIHsKICAgICBpZiAobGF5ZXJJc0luRXhp
c3RpbmczRFJlbmRlcmluZ0NvbnRleHQobGF5ZXIpKQogICAgICAgICByZXR1cm4gZHJhd1RyYW5z
Zm9ybS5pc0JhY2tGYWNlVmlzaWJsZSgpOwpAQCAtMTMzLDcgKzEzNSw3IEBAIHN0YXRpYyBJbnRS
ZWN0IGNhbGN1bGF0ZVZpc2libGVMYXllclJlY3QoTGF5ZXJUeXBlKiBsYXllcikKICAgICBjb25z
dCBJbnRTaXplJiBjb250ZW50Qm91bmRzID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMoKTsKIAogICAg
IGNvbnN0IEludFJlY3QgbGF5ZXJCb3VuZFJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIGNvbnRl
bnRCb3VuZHMpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyLT5k
cmF3VHJhbnNmb3JtKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0g
bGF5ZXItPmRyYXdUcmFuc2Zvcm0oKTsKIAogICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0o
Ym91bmRzLndpZHRoKCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGNvbnRlbnRCb3VuZHMud2lkdGgo
KSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHMuaGVpZ2h0KCkgLyBzdGF0
aWNfY2FzdDxkb3VibGU+KGNvbnRlbnRCb3VuZHMuaGVpZ2h0KCkpKTsKQEAgLTE0Myw3ICsxNDUs
NyBAQCBzdGF0aWMgSW50UmVjdCBjYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0KExheWVyVHlwZSog
bGF5ZXIpCiAgICAgcmV0dXJuIHZpc2libGVMYXllclJlY3Q7CiB9CiAKLXN0YXRpYyBib29sIGlz
U2NhbGVPclRyYW5zbGF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtKQorc3RhdGlj
IGJvb2wgaXNTY2FsZU9yVHJhbnNsYXRpb24oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG0pCiB7CiAgICAgcmV0dXJuICFtLm0xMigpICYmICFtLm0xMygpICYmICFtLm0xNCgpCiAgICAg
ICAgICAgICYmICFtLm0yMSgpICYmICFtLm0yMygpICYmICFtLm0yNCgpCkBAIC0yODIsNyArMjg0
LDcgQEAgc3RhdGljIGJvb2wgc3VidHJlZVNob3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKExh
eWVyVHlwZSogbGF5ZXIsIGJvb2wgYXhpc0FsaWcKIC8vIFJlY3Vyc2l2ZWx5IHdhbGtzIHRoZSBs
YXllciB0cmVlIHN0YXJ0aW5nIGF0IHRoZSBnaXZlbiBub2RlIGFuZCBjb21wdXRlcyBhbGwgdGhl
CiAvLyBuZWNlc3NhcnkgdHJhbnNmb3JtYXRpb25zLCBjbGlwUmVjdHMsIHJlbmRlciBzdXJmYWNl
cywgZXRjLgogdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3Qs
IHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBlLCB0eXBlbmFtZSBMYXllclNvcnRlcj4KLXN0YXRp
YyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKExheWVy
VHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9vdExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJh
cmNoeU1hdHJpeCwgUmVuZGVyU3VyZmFjZVR5cGUqIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1Bp
eGVscywgTGF5ZXJMaXN0JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBMYXllckxpc3QmIGxheWVy
TGlzdCwgTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCitzdGF0
aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXll
clR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJvb3RMYXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1
bGxIaWVyYXJjaHlNYXRyaXgsIFJlbmRlclN1cmZhY2VUeXBlKiBuZWFyZXN0QW5jZXN0b3JUaGF0
TW92ZXNQaXhlbHMsIExheWVyTGlzdCYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgTGF5ZXJMaXN0
JiBsYXllckxpc3QsIExheWVyU29ydGVyKiBsYXllclNvcnRlciwgaW50IG1heFRleHR1cmVTaXpl
KQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24gY29tcHV0ZXMgdGhlIG5ldyBtYXRyaXggdHJhbnNm
b3JtYXRpb25zIHJlY3Vyc2l2ZWx5IGZvciB0aGlzCiAgICAgLy8gbGF5ZXIgYW5kIGFsbCBpdHMg
ZGVzY2VuZGFudHMuIEl0IGFsc28gY29tcHV0ZXMgdGhlIGFwcHJvcHJpYXRlIHJlbmRlciBzdXJm
YWNlcy4KQEAgLTI5Niw3ICsyOTgsNyBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogICAgIC8v
ICAgIHByb2plY3Rpb24gYXBwbGllZCBhdCBkcmF3IHRpbWUgZmxpcHMgdGhlIFkgYXhpcyBhcHBy
b3ByaWF0ZWx5LgogICAgIC8vCiAgICAgLy8gMi4gVGhlIGFuY2hvciBwb2ludCwgd2hlbiBnaXZl
biBhcyBhIEZsb2F0UG9pbnQgb2JqZWN0LCBpcyBzcGVjaWZpZWQgaW4gInVuaXQgbGF5ZXIgc3Bh
Y2UiLAotICAgIC8vICAgIHdoZXJlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyIG1hcCB0byBbMCwg
MV0uIEhvd2V2ZXIsIGFzIGEgVHJhbnNmb3JtYXRpb25NYXRyaXggb2JqZWN0LAorICAgIC8vICAg
IHdoZXJlIHRoZSBib3VuZHMgb2YgdGhlIGxheWVyIG1hcCB0byBbMCwgMV0uIEhvd2V2ZXIsIGFz
IGEgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggb2JqZWN0LAogICAgIC8vICAgIHRoZSB0cmFuc2Zv
cm0gdG8gdGhlIGFuY2hvciBwb2ludCBpcyBzcGVjaWZpZWQgaW4gInBpeGVsIGxheWVyIHNwYWNl
Iiwgd2hlcmUgdGhlIGJvdW5kcwogICAgIC8vICAgIG9mIHRoZSBsYXllciBtYXAgdG8gW2JvdW5k
cy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCldLgogICAgIC8vCkBAIC0zOTksNyArNDAxLDcgQEAg
c3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwo
TGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICBmbG9hdCBjZW50ZXJPZmZzZXRYID0gKDAuNSAt
IGFuY2hvclBvaW50LngoKSkgKiBib3VuZHMud2lkdGgoKTsKICAgICBmbG9hdCBjZW50ZXJPZmZz
ZXRZID0gKDAuNSAtIGFuY2hvclBvaW50LnkoKSkgKiBib3VuZHMuaGVpZ2h0KCk7CiAKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllckxvY2FsVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IGxheWVyTG9jYWxUcmFuc2Zvcm07CiAgICAgLy8gTFQgPSBUcltvcmlnaW5d
ICogU1twYWdlU2NhbGVEZWx0YV0KICAgICBsYXllckxvY2FsVHJhbnNmb3JtLnNjYWxlKGxheWVy
LT5wYWdlU2NhbGVEZWx0YSgpKTsKICAgICAvLyBMVCA9IFRyW29yaWdpbl0gKiBTW3BhZ2VTY2Fs
ZURlbHRhXSAqIFRyW29yaWdpbjJhbmNob3JdCkBAIC00MDksOCArNDExLDggQEAgc3RhdGljIGJv
b2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBl
KiBsYXllciwgTGF5ZXIKICAgICAvLyBMVCA9IFRyW29yaWdpbl0gKiBTW3BhZ2VTY2FsZURlbHRh
XSAqIFRyW29yaWdpbjJhbmNob3JdICogTVtsYXllcl0gKiBUclthbmNob3IyY2VudGVyXQogICAg
IGxheWVyTG9jYWxUcmFuc2Zvcm0udHJhbnNsYXRlM2QoY2VudGVyT2Zmc2V0WCwgY2VudGVyT2Zm
c2V0WSwgLWxheWVyLT5hbmNob3JQb2ludFooKSk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjb21iaW5lZFRyYW5zZm9ybSA9IHBhcmVudE1hdHJpeDsKLSAgICBjb21iaW5lZFRyYW5zZm9y
bSA9IGNvbWJpbmVkVHJhbnNmb3JtLm11bHRpcGx5KGxheWVyTG9jYWxUcmFuc2Zvcm0pOworICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbWJpbmVkVHJhbnNmb3JtID0gcGFyZW50TWF0cml4
OworICAgIGNvbWJpbmVkVHJhbnNmb3JtLm11bHRpcGx5KGxheWVyTG9jYWxUcmFuc2Zvcm0pOwog
CiAgICAgYm9vbCBhbmltYXRpbmdUcmFuc2Zvcm1Ub1RhcmdldCA9IGxheWVyLT50cmFuc2Zvcm1J
c0FuaW1hdGluZygpOwogICAgIGJvb2wgYW5pbWF0aW5nVHJhbnNmb3JtVG9TY3JlZW4gPSBhbmlt
YXRpbmdUcmFuc2Zvcm1Ub1RhcmdldDsKQEAgLTQyNCw3ICs0MjYsNyBAQCBzdGF0aWMgYm9vbCBj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxh
eWVyLCBMYXllcgogCiAgICAgLy8gZnVsbEhpZXJhcmNoeU1hdHJpeCBpcyB0aGUgbWF0cml4IHRo
YXQgdHJhbnNmb3JtcyBvYmplY3RzIGJldHdlZW4gc2NyZWVuIHNwYWNlIChleGNlcHQgcHJvamVj
dGlvbiBtYXRyaXgpIGFuZCB0aGUgbW9zdCByZWNlbnQgUmVuZGVyU3VyZmFjZSdzIHNwYWNlLgog
ICAgIC8vIG5leHRIaWVyYXJjaHlNYXRyaXggd2lsbCBvbmx5IGNoYW5nZSBpZiB0aGlzIGxheWVy
IHVzZXMgYSBuZXcgUmVuZGVyU3VyZmFjZSwgb3RoZXJ3aXNlIHJlbWFpbnMgdGhlIHNhbWUuCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmV4dEhpZXJhcmNoeU1hdHJpeCA9IGZ1bGxIaWVyYXJj
aHlNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbmV4dEhpZXJhcmNoeU1hdHJp
eCA9IGZ1bGxIaWVyYXJjaHlNYXRyaXg7CiAKICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtl
IHRoZSB3cm9uZyBwbGFjZSB0byBzZXQgdGhpcwogICAgIGxheWVyLT5zZXRVc2VzTGF5ZXJDbGlw
cGluZyhmYWxzZSk7CkBAIC00NDEsNyArNDQzLDcgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIK
ICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xlYXJMYXllckxpc3QoKTsKIAogICAgICAgICAvLyBU
aGUgb3JpZ2luIG9mIHRoZSBuZXcgc3VyZmFjZSBpcyB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2Yg
dGhlIGxheWVyLgotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOwor
ICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOwogICAgICAgICBk
cmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAuNSAqIGJvdW5kcy53aWR0aCgpLCAwLjUgKiBib3Vu
ZHMuaGVpZ2h0KCksIDApOwogICAgICAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJh
bnNmb3JtKTsKIApAQCAtNDUzLDcgKzQ1NSw3IEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdU
cmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAg
ICAgICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKICAgICAgICAgbGF5ZXItPnNldERyYXdP
cGFjaXR5SXNBbmltYXRpbmcoZmFsc2UpOwogCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0gPSBjb21iaW5lZFRyYW5zZm9ybTsKKyAgICAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggc3VyZmFjZU9yaWdpblRyYW5zZm9ybSA9IGNvbWJpbmVkVHJh
bnNmb3JtOwogICAgICAgICBzdXJmYWNlT3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC0wLjUg
KiBib3VuZHMud2lkdGgoKSwgLTAuNSAqIGJvdW5kcy5oZWlnaHQoKSwgMCk7CiAgICAgICAgIHJl
bmRlclN1cmZhY2UtPnNldE9yaWdpblRyYW5zZm9ybShzdXJmYWNlT3JpZ2luVHJhbnNmb3JtKTsK
IApAQCAtNTI2LDcgKzUyOCw3IEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eUludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAKICAgICAvLyBO
b3RlIHRoYXQgYXQgdGhpcyBwb2ludCwgbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKSBpcyBub3QgbmVj
ZXNzYXJpbHkgdGhlIHNhbWUgYXMgbG9jYWwgdmFyaWFibGUgZHJhd1RyYW5zZm9ybS4KICAgICAv
LyBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtIHJlcHJlc2VudHMgdGhlIHRyYW5zZm9ybSBiZXR3
ZWVuIHJvb3QgbGF5ZXIncyAic2NyZWVuIHNwYWNlIiBhbmQgbG9jYWwgbGF5ZXIgc3BhY2UuCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSA9IG5leHRI
aWVyYXJjaHlNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJTY3JlZW5T
cGFjZVRyYW5zZm9ybSA9IG5leHRIaWVyYXJjaHlNYXRyaXg7CiAgICAgbGF5ZXJTY3JlZW5TcGFj
ZVRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBsYXllclNj
cmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC0wLjUgKiBib3VuZHMud2lkdGgoKSwgLTAu
NSAqIGJvdW5kcy5oZWlnaHQoKSwgMCk7CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNm
b3JtKGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwpAQCAtNTQxLDcgKzU0Myw3IEBAIHN0YXRp
YyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKExheWVy
VHlwZSogbGF5ZXIsIExheWVyCiAgICAgfSBlbHNlCiAgICAgICAgIGxheWVyLT5zZXREcmF3YWJs
ZUNvbnRlbnRSZWN0KEludFJlY3QoKSk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdWJs
YXllck1hdHJpeCA9IGxheWVyLT5kcmF3VHJhbnNmb3JtKCk7CisgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggc3VibGF5ZXJNYXRyaXggPSBsYXllci0+ZHJhd1RyYW5zZm9ybSgpOwogCiAgICAg
Ly8gRmxhdHRlbiB0byAyRCBpZiB0aGUgbGF5ZXIgZG9lc24ndCBwcmVzZXJ2ZSAzRC4KICAgICBp
ZiAoIWxheWVyLT5wcmVzZXJ2ZXMzRCgpKSB7CkBAIC02MjksNyArNjMxLDcgQEAgc3RhdGljIGJv
b2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBl
KiBsYXllciwgTGF5ZXIKICAgICAgICAgbGF5ZXItPnNldENsaXBSZWN0KGxheWVyLT5kcmF3YWJs
ZUNvbnRlbnRSZWN0KCkpOwogCiAgICAgICAgIC8vIEFkanVzdCB0aGUgb3JpZ2luIG9mIHRoZSB0
cmFuc2Zvcm0gdG8gYmUgdGhlIGNlbnRlciBvZiB0aGUgcmVuZGVyIHN1cmZhY2UuCi0gICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5vcmln
aW5UcmFuc2Zvcm0oKTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5z
Zm9ybSA9IHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpOwogICAgICAgICBkcmF3VHJh
bnNmb3JtLnRyYW5zbGF0ZTNkKHN1cmZhY2VDZW50ZXIueCgpICsgY2VudGVyT2Zmc2V0RHVlVG9D
bGlwcGluZy53aWR0aCgpLCBzdXJmYWNlQ2VudGVyLnkoKSArIGNlbnRlck9mZnNldER1ZVRvQ2xp
cHBpbmcuaGVpZ2h0KCksIDApOwogICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNm
b3JtKGRyYXdUcmFuc2Zvcm0pOwogCkBAIC02MzgsMjMgKzY0MCwyMyBAQCBzdGF0aWMgYm9vbCBj
YWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxh
eWVyLCBMYXllcgogCiAgICAgICAgIGlmIChsYXllci0+cmVwbGljYUxheWVyKCkpIHsKICAgICAg
ICAgICAgIC8vIENvbXB1dGUgdGhlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCB1c2VkIHRvIGRyYXcg
dGhlIHN1cmZhY2UncyByZXBsaWNhIHRvIHRoZSB0YXJnZXQgc3VyZmFjZS4KLSAgICAgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FEcmF3VHJhbnNmb3JtID0gcmVuZGVyU3VyZmFj
ZS0+b3JpZ2luVHJhbnNmb3JtKCk7CisgICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByZXBsaWNhRHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgp
OwogICAgICAgICAgICAgcmVwbGljYURyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKGxheWVyLT5yZXBs
aWNhTGF5ZXIoKS0+cG9zaXRpb24oKS54KCksIGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+cG9zaXRp
b24oKS55KCkpOwogICAgICAgICAgICAgcmVwbGljYURyYXdUcmFuc2Zvcm0ubXVsdGlwbHkobGF5
ZXItPnJlcGxpY2FMYXllcigpLT50cmFuc2Zvcm0oKSk7CiAgICAgICAgICAgICByZXBsaWNhRHJh
d1RyYW5zZm9ybS50cmFuc2xhdGUoc3VyZmFjZUNlbnRlci54KCkgLSBhbmNob3JQb2ludC54KCkg
KiBib3VuZHMud2lkdGgoKSwgc3VyZmFjZUNlbnRlci55KCkgLSBhbmNob3JQb2ludC55KCkgKiBi
b3VuZHMuaGVpZ2h0KCkpOwogICAgICAgICAgICAgcmVuZGVyU3VyZmFjZS0+c2V0UmVwbGljYURy
YXdUcmFuc2Zvcm0ocmVwbGljYURyYXdUcmFuc2Zvcm0pOwogCi0gICAgICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBzdXJmYWNlT3JpZ2luVG9SZXBsaWNhT3JpZ2luVHJhbnNmb3JtOworICAg
ICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VyZmFjZU9yaWdpblRvUmVwbGljYU9y
aWdpblRyYW5zZm9ybTsKICAgICAgICAgICAgIHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0udHJhbnNsYXRlKGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+cG9zaXRpb24oKS54KCks
IGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+cG9zaXRpb24oKS55KCkpOwogICAgICAgICAgICAgc3Vy
ZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+cmVwbGlj
YUxheWVyKCktPnRyYW5zZm9ybSgpKTsKICAgICAgICAgICAgIHN1cmZhY2VPcmlnaW5Ub1JlcGxp
Y2FPcmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRlKC1hbmNob3JQb2ludC54KCkgKiBib3VuZHMud2lk
dGgoKSwgLWFuY2hvclBvaW50LnkoKSAqIGJvdW5kcy5oZWlnaHQoKSk7CiAKICAgICAgICAgICAg
IC8vIENvbXB1dGUgdGhlIHJlcGxpY2EncyAib3JpZ2luVHJhbnNmb3JtIiB0aGF0IG1hcHMgZnJv
bSB0aGUgcmVwbGljYSdzIG9yaWdpbiBzcGFjZSB0byB0aGUgdGFyZ2V0IHN1cmZhY2Ugb3JpZ2lu
IHNwYWNlLgotICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYU9yaWdpblRy
YW5zZm9ybSA9IGxheWVyLT5yZW5kZXJTdXJmYWNlKCktPm9yaWdpblRyYW5zZm9ybSgpICogc3Vy
ZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRyYW5zZm9ybTsKKyAgICAgICAgICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSBsYXllci0+cmVuZGVyU3Vy
ZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSAqIHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5U
cmFuc2Zvcm07CiAgICAgICAgICAgICByZW5kZXJTdXJmYWNlLT5zZXRSZXBsaWNhT3JpZ2luVHJh
bnNmb3JtKHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0pOwogCiAgICAgICAgICAgICAvLyBDb21wdXRl
IHRoZSByZXBsaWNhJ3MgInNjcmVlblNwYWNlVHJhbnNmb3JtIiB0aGF0IG1hcHMgZnJvbSB0aGUg
cmVwbGljYSdzIG9yaWdpbiBzcGFjZSB0byB0aGUgc2NyZWVuJ3Mgb3JpZ2luIHNwYWNlLgotICAg
ICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3Jt
ID0gbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSAqIHN1cmZh
Y2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07CisgICAgICAgICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCByZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBsYXllci0+cmVuZGVy
U3VyZmFjZSgpLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpICogc3VyZmFjZU9yaWdpblRvUmVwbGlj
YU9yaWdpblRyYW5zZm9ybTsKICAgICAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldFJlcGxpY2FT
Y3JlZW5TcGFjZVRyYW5zZm9ybShyZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwogICAgICAg
ICB9CiAKQEAgLTcwNywxMyArNzA5LDEzIEBAIHN0YXRpYyB2b2lkIHdhbGtMYXllcnNBbmRDYWxj
dWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25zdCBMYXllckxpc3QmIHJlbmRlclN1cmZhCiAgICAg
fQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckNocm9taXVtKiByb290
TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExh
eWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5
ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQgbWF4VGV4dHVyZVNpemUpCit2b2lkIENDTGF5
ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExh
eWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+
ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
PiYgbGF5ZXJMaXN0LCBpbnQgbWF4VGV4dHVyZVNpemUpCiB7CiAgICAgV2ViQ29yZTo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwgVmVj
dG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIHZvaWQ+
KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgMCwg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCAwLCBtYXhUZXh0dXJlU2l6ZSk7CiAg
ICAgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZpc2libGVMYXllclJlY3RzPExheWVyQ2hyb21pdW0s
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtPihy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0KIAotdm9pZCBDQ0xheWVyVHJlZUhvc3RDb21tb246
OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCogbGF5ZXIs
IENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJl
bnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4
LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPEND
TGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBt
YXhUZXh0dXJlU2l6ZSkKK3ZvaWQgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3
VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqIGxheWVyLCBDQ0xheWVySW1wbCog
cm9vdExheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxDQ0xheWVySW1w
bCo+JiBsYXllckxpc3QsIENDTGF5ZXJTb3J0ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVy
ZVNpemUpCiB7CiAgICAgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJu
YWw8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xheWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2UsIEND
TGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNo
eU1hdHJpeCwgMCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5ZXJMaXN0LCBsYXllclNvcnRl
ciwgbWF4VGV4dHVyZVNpemUpOwogICAgIHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5
ZXJSZWN0czxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFj
ZT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dENvbW1vbi5oCmluZGV4IDM3NjJmNjRiMTliMzEzNDk5OGU0MGI0NDc2MzhhMjQ2ZjEyNDhiYmIu
LjA1ODVhZmY0ZmI3YzhlZjY0NmJhNjVhNGNlZjJjNjVkNTgyZmVlYjEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oCkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50U2l6ZS5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAt
MzksMTAgKzM5LDEwIEBAIGNsYXNzIExheWVyQ2hyb21pdW07CiAKIGNsYXNzIENDTGF5ZXJUcmVl
SG9zdENvbW1vbiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEludFJlY3QgY2FsY3VsYXRlVmlzaWJs
ZVJlY3QoY29uc3QgSW50UmVjdCYgdGFyZ2V0U3VyZmFjZVJlY3QsIGNvbnN0IEludFJlY3QmIGxh
eWVyQm91bmRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIHN0YXRpYyBJ
bnRSZWN0IGNhbGN1bGF0ZVZpc2libGVSZWN0KGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VS
ZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllckJvdW5kUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOwogCi0gICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0qLCBMYXllckNocm9taXVtKiByb290TGF5
ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQgbWF4VGV4dHVyZVNpemUpOwotICAgIHN0YXRpYyB2
b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCosIEND
TGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRN
YXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBW
ZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPENDTGF5
ZXJJbXBsKj4mIGxheWVyTGlzdCwgQ0NMYXllclNvcnRlciosIGludCBtYXhUZXh0dXJlU2l6ZSk7
CisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExh
eWVyQ2hyb21pdW0qLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0cjxMYXll
ckNocm9taXVtPiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPExheWVy
Q2hyb21pdW0+ID4mIGxheWVyTGlzdCwgaW50IG1heFRleHR1cmVTaXplKTsKKyAgICBzdGF0aWMg
dm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqLCBD
Q0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVy
KiwgaW50IG1heFRleHR1cmVTaXplKTsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlw
ZT4gc3RhdGljIGJvb2wgcmVuZGVyU3VyZmFjZUNvbnRyaWJ1dGVzVG9UYXJnZXQoTGF5ZXJUeXBl
KiwgaW50IHRhcmdldFN1cmZhY2VMYXllcklEKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAppbmRleCA5MTMzNmE3NzY4ZDNkZDYyMTFiMDk4NDg0OWM2MmMyM2E0ZWQ1
MzYwLi4wYTQ5ZjhlN2RhNTkwNjJhY2JkYTQ2YThjNTk0NTQ5Zjk0NjgyNTFlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1
ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCit1
c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OworCiBuYW1lc3BhY2UgewogCiB2
b2lkIGRpZFZpc2liaWxpdHlDaGFuZ2UoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbCogaWQs
IGJvb2wgdmlzaWJsZSkKQEAgLTIzNCw3ICsyMzYsNyBAQCBzdGF0aWMgRmxvYXRSZWN0IGRhbWFn
ZUluU3VyZmFjZVNwYWNlKENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIsIGNvbnN0IEZs
bwogICAgIEZsb2F0UmVjdCBzdXJmYWNlRGFtYWdlUmVjdDsKICAgICAvLyBGb3Igbm93LCB3ZSBj
b25zZXJ2YXRpdmVseSB1c2UgdGhlIHJvb3QgZGFtYWdlIGFzIHRoZSBkYW1hZ2UgZm9yCiAgICAg
Ly8gYWxsIHN1cmZhY2VzLCBleGNlcHQgcGVyc3BlY3RpdmUgdHJhbnNmb3Jtcy4KLSAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKyAgICBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSByZW5k
ZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsK
ICAgICBpZiAoc2NyZWVuU3BhY2VUcmFuc2Zvcm0uaGFzUGVyc3BlY3RpdmUoKSkgewogICAgICAg
ICAvLyBQZXJzcGVjdGl2ZSBwcm9qZWN0aW9ucyBkbyBub3QgcGxheSBuaWNlIHdpdGggbWFwUmVj
dCBvZgogICAgICAgICAvLyBpbnZlcnNlIHRyYW5zZm9ybXMuIEluIHRoaXMgdW5jb21tb24gY2Fz
ZSwgaXRzIHNpbXBsZXIgdG8KQEAgLTI0Myw3ICsyNDUsNyBAQCBzdGF0aWMgRmxvYXRSZWN0IGRh
bWFnZUluU3VyZmFjZVNwYWNlKENDTGF5ZXJJbXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIsIGNvbnN0
IEZsbwogICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJm
YWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsKICAgICAgICAgc3VyZmFjZURhbWFnZVJlY3QgPSBy
ZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGludmVyc2VTY3JlZW5TcGFjZVRyYW5zZm9ybSA9IHNjcmVlblNwYWNl
VHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaW52
ZXJzZVNjcmVlblNwYWNlVHJhbnNmb3JtID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm0uaW52ZXJzZSgp
OwogICAgICAgICBzdXJmYWNlRGFtYWdlUmVjdCA9IGludmVyc2VTY3JlZW5TcGFjZVRyYW5zZm9y
bS5tYXBSZWN0KHJvb3REYW1hZ2VSZWN0KTsKICAgICB9CiAgICAgcmV0dXJuIHN1cmZhY2VEYW1h
Z2VSZWN0OwpAQCAtMjY0LDggKzI2Niw4IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2Fs
Y3VsYXRlUmVuZGVyU3VyZmFjZUxheWVyTGlzdChDQ0xheWVyTGlzdCYgcmVuZGVyU3VyCiAKICAg
ICB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjRHJhd0V0
YyIsIHRoaXMsIDApOwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlU2NhbGVUcmFuc2Zvcm07Cisg
ICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VTY2FsZVRyYW5zZm9ybTsKICAgICAgICAgZGV2
aWNlU2NhbGVUcmFuc2Zvcm0uc2NhbGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CiAg
ICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRW
aXNpYmlsaXR5KG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9yb290TGF5ZXJJbXBsLmdldCgpLCBk
ZXZpY2VTY2FsZVRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxp
c3QsIG1fcm9vdExheWVySW1wbC0+cmVuZGVyU3VyZmFjZSgpLT5sYXllckxpc3QoKSwgJm1fbGF5
ZXJTb3J0ZXIsIGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCmluZGV4IGY4Yjc2MzE0MDRk
N2MyMzgzMTE3YzU4NmFmZGJmYTRjYTBjMzIwYjAuLjdmMGM3ZmY2NjNjYTNkZjhjY2U5MzFjMjZh
MzFkNTFlN2E2MmM3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAg
LTUwLDcgKzUwLDYgQEAgY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVy
OwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9taXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsK
IHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVzOwotY2xhc3MgVHJhbnNmb3JtYXRpb25N
YXRyaXg7CiAKIC8vIENDTGF5ZXJUcmVlSG9zdC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZhY2Uu
CiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAK
aW5kZXggYTgxMmU4MjQ3MzA4ZDQ3N2U1ZjJjNDJmMTgzNTFlNzhmZGJmOWRkYy4uODY3NDY5ZGRl
MjRmMGNjZTVkNTU5Yzc1ZDliNmUwY2MyZWQxNzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAK
QEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJG
bG9hdFF1YWQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRp
b25NYXRyaXguaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
KwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1zdGF0aWMgSG9tb2dlbmVvdXNDb29yZGluYXRlIHByb2plY3RQb2ludChjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwKQor
c3RhdGljIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSBwcm9qZWN0UG9pbnQoY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcCkKIHsKICAgICAv
LyBJbiB0aGlzIGNhc2UsIHRoZSBsYXllciB3ZSBhcmUgdHJ5aW5nIHRvIHByb2plY3Qgb250byBp
cyBwZXJwZW5kaWN1bGFyIHRvIHJheQogICAgIC8vIChwb2ludCBwIGFuZCB6LWF4aXMgZGlyZWN0
aW9uKSB0aGF0IHdlIGFyZSB0cnlpbmcgdG8gcHJvamVjdC4gVGhpcyBoYXBwZW5zIHdoZW4gdGhl
CkBAIC01NSw3ICs1Nyw3IEBAIHN0YXRpYyBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgcHJvamVjdFBv
aW50KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sCiAgICAgcmV0dXJuIEhv
bW9nZW5lb3VzQ29vcmRpbmF0ZShvdXRYLCBvdXRZLCBvdXRaLCBvdXRXKTsKIH0KIAotc3RhdGlj
IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSBtYXBQb2ludChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwKQorc3RhdGljIEhvbW9nZW5lb3VzQ29v
cmRpbmF0ZSBtYXBQb2ludChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwKQogewogICAgIGRvdWJsZSB4ID0gcC54KCk7CiAgICAgZG91
YmxlIHkgPSBwLnkoKTsKQEAgLTExMywxMiArMTE1LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBh
ZGRWZXJ0ZXhUb0NsaXBwZWRRdWFkKGNvbnN0IEZsb2F0UG9pbnQmIG5ld1ZlcnRleCwgRmxvYXRQ
b2luCiAgICAgbnVtVmVydGljZXNJbkNsaXBwZWRRdWFkKys7CiB9CiAKLUludFJlY3QgQ0NNYXRo
VXRpbDo6bWFwQ2xpcHBlZFJlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKK0ludFJlY3QgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBl
ZFJlY3QoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgSW50
UmVjdCYgc3JjUmVjdCkKIHsKICAgICByZXR1cm4gZW5jbG9zaW5nSW50UmVjdChtYXBDbGlwcGVk
UmVjdCh0cmFuc2Zvcm0sIEZsb2F0UmVjdChzcmNSZWN0KSkpOwogfQogCi1GbG9hdFJlY3QgQ0NN
YXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgY29uc3QgRmxvYXRSZWN0JiBzcmNSZWN0KQorRmxvYXRSZWN0IENDTWF0aFV0aWw6Om1h
cENsaXBwZWRSZWN0KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNv
bnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKIHsKICAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHlP
clRyYW5zbGF0aW9uKCkpIHsKICAgICAgICAgRmxvYXRSZWN0IG1hcHBlZFJlY3Qoc3JjUmVjdCk7
CkBAIC0xMzYsNyArMTM4LDcgQEAgRmxvYXRSZWN0IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnMKICAgICByZXR1cm4g
Y29tcHV0ZUVuY2xvc2luZ0NsaXBwZWRSZWN0KGgxLCBoMiwgaDMsIGg0KTsKIH0KIAotRmxvYXRS
ZWN0IENDTWF0aFV0aWw6OnByb2plY3RDbGlwcGVkUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIHNyY1JlY3QpCitGbG9hdFJlY3QgQ0NN
YXRoVXRpbDo6cHJvamVjdENsaXBwZWRSZWN0KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKIHsKICAgICAvLyBQZXJmb3Jt
IHRoZSBwcm9qZWN0aW9uLCBidXQgcmV0YWluIHRoZSByZXN1bHQgaW4gaG9tb2dlbmVvdXMgY29v
cmRpbmF0ZXMuCiAgICAgRmxvYXRRdWFkIHEgPSBGbG9hdFF1YWQoRmxvYXRSZWN0KHNyY1JlY3Qp
KTsKQEAgLTE0OCw3ICsxNTAsNyBAQCBGbG9hdFJlY3QgQ0NNYXRoVXRpbDo6cHJvamVjdENsaXBw
ZWRSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sCiAgICAgcmV0dXJu
IGNvbXB1dGVFbmNsb3NpbmdDbGlwcGVkUmVjdChoMSwgaDIsIGgzLCBoNCk7CiB9CiAKLXZvaWQg
Q0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBzcmNRdWFkLCBGbG9hdFBvaW50IGNsaXBwZWRRdWFk
WzhdLCBpbnQmIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCkKK3ZvaWQgQ0NNYXRoVXRpbDo6bWFw
Q2xpcHBlZFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29u
c3QgRmxvYXRRdWFkJiBzcmNRdWFkLCBGbG9hdFBvaW50IGNsaXBwZWRRdWFkWzhdLCBpbnQmIG51
bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCkKIHsKICAgICBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgaDEg
PSBtYXBQb2ludCh0cmFuc2Zvcm0sIHNyY1F1YWQucDEoKSk7CiAgICAgSG9tb2dlbmVvdXNDb29y
ZGluYXRlIGgyID0gbWFwUG9pbnQodHJhbnNmb3JtLCBzcmNRdWFkLnAyKCkpOwpAQCAtMjUyLDcg
KzI1NCw3IEBAIEZsb2F0UmVjdCBDQ01hdGhVdGlsOjpjb21wdXRlRW5jbG9zaW5nQ2xpcHBlZFJl
Y3QoY29uc3QgSG9tb2dlbmVvdXNDb29yZGluYXRlJiBoCiAgICAgcmV0dXJuIEZsb2F0UmVjdChG
bG9hdFBvaW50KHhtaW4sIHltaW4pLCBGbG9hdFNpemUoeG1heCAtIHhtaW4sIHltYXggLSB5bWlu
KSk7CiB9CiAKLUZsb2F0UXVhZCBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UXVhZCYgcSwgYm9vbCYgY2xpcHBlZCkK
K0Zsb2F0UXVhZCBDQ01hdGhVdGlsOjptYXBRdWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UXVhZCYgcSwgYm9vbCYgY2xpcHBlZCkKIHsKICAg
ICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKICAgICAgICAgRmxv
YXRRdWFkIG1hcHBlZFF1YWQocSk7CkBAIC0yNzIsNyArMjc0LDcgQEAgRmxvYXRRdWFkIENDTWF0
aFV0aWw6Om1hcFF1YWQoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29u
c3QgRmxvYXQKICAgICByZXR1cm4gRmxvYXRRdWFkKGgxLmNhcnRlc2lhblBvaW50MmQoKSwgaDIu
Y2FydGVzaWFuUG9pbnQyZCgpLCBoMy5jYXJ0ZXNpYW5Qb2ludDJkKCksIGg0LmNhcnRlc2lhblBv
aW50MmQoKSk7CiB9CiAKLUZsb2F0UXVhZCBDQ01hdGhVdGlsOjpwcm9qZWN0UXVhZChjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFF1YWQmIHEsIGJvb2wm
IGNsaXBwZWQpCitGbG9hdFF1YWQgQ0NNYXRoVXRpbDo6cHJvamVjdFF1YWQoY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBxLCBib29sJiBj
bGlwcGVkKQogewogICAgIEZsb2F0UXVhZCBwcm9qZWN0ZWRRdWFkOwogICAgIGJvb2wgY2xpcHBl
ZFBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NNYXRoVXRpbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oCmluZGV4IDZhZmI0MzYwZTQ3MjNlODgzZmU3NGI0ZTky
N2I2MDE1YTk5NzhkYmQuLjYzY2EwMDMxMjQwZDBiYmNmZmQyZmEwZDU2OTEwYzI4MDc2NjgyNTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTWF0aFV0aWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ01hdGhVdGlsLmgKQEAgLTI3LDEzICsyNywxNiBAQAogCiAjaW5jbHVkZSAiRmxv
YXRQb2ludC5oIgogCituYW1lc3BhY2UgV2ViS2l0IHsKK2NsYXNzIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CiBjbGFz
cyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRRdWFkOwotY2xhc3Mg
VHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIHN0cnVjdCBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgewog
ICAgIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZShkb3VibGUgbmV3WCwgZG91YmxlIG5ld1ksIGRvdWJs
ZSBuZXdaLCBkb3VibGUgbmV3VykKQEAgLTcxLDcgKzc0LDcgQEAgc3RydWN0IEhvbW9nZW5lb3Vz
Q29vcmRpbmF0ZSB7CiBjbGFzcyBDQ01hdGhVdGlsIHsKIHB1YmxpYzoKIAotICAgIC8vIEJhY2tn
cm91bmQ6IFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvZGUgaW4gV2ViQ29yZSBkb2VzIG5vdCBkbyB0
aGUgcmlnaHQgdGhpbmcgaW4KKyAgICAvLyBCYWNrZ3JvdW5kOiBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjb2RlIGluIFdlYkNvcmUgZG9lcyBub3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGluCiAgICAg
Ly8gbWFwUmVjdCAvIG1hcFF1YWQgLyBwcm9qZWN0UXVhZCB3aGVuIHRoZXJlIGlzIGEgcGVyc3Bl
Y3RpdmUgcHJvamVjdGlvbiB0aGF0IGNhdXNlcwogICAgIC8vIG9uZSBvZiB0aGUgdHJhbnNmb3Jt
ZWQgdmVydGljZXMgdG8gZ28gdG8gdyA8IDAuIEluIHRob3NlIGNhc2VzLCBpdCBpcyBuZWNlc3Nh
cnkgdG8KICAgICAvLyBwZXJmb3JtIGNsaXBwaW5nIGluIGhvbW9nZW5lb3VzIGNvb3JkaW5hdGVz
LCBhZnRlciBhcHBseWluZyB0aGUgdHJhbnNmb3JtLCBiZWZvcmUKQEAgLTc5LDIzICs4MiwyMyBA
QCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgcmV0dXJuIHRoZSBheGlz
LWFsaWduZWQgcmVjdCB0aGF0IGVuY2xvc2VzIHRoZSBjb3JyZWN0bHkgY2xpcHBlZCwKICAgICAv
LyB0cmFuc2Zvcm1lZCBwb2x5Z29uLgotICAgIHN0YXRpYyBJbnRSZWN0IG1hcENsaXBwZWRSZWN0
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgSW50UmVjdCYpOwotICAgIHN0YXRp
YyBGbG9hdFJlY3QgbWFwQ2xpcHBlZFJlY3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICBzdGF0aWMgRmxvYXRSZWN0IHByb2plY3RDbGlwcGVkUmVj
dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHN0
YXRpYyBJbnRSZWN0IG1hcENsaXBwZWRSZWN0KGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmLCBjb25zdCBJbnRSZWN0Jik7CisgICAgc3RhdGljIEZsb2F0UmVjdCBtYXBDbGlw
cGVkUmVjdChjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRSZWN0Jik7CisgICAgc3RhdGljIEZsb2F0UmVjdCBwcm9qZWN0Q2xpcHBlZFJlY3QoY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAg
ICAgLy8gUmV0dXJucyBhbiBhcnJheSBvZiB2ZXJ0aWNlcyB0aGF0IHJlcHJlc2VudCB0aGUgY2xp
cHBlZCBwb2x5Z29uLiBBZnRlciByZXR1cm5pbmcsIGluZGV4ZXMgZnJvbQogICAgIC8vIDAgdG8g
bnVtVmVydGljZXNJbkNsaXBwZWRRdWFkIGFyZSB2YWxpZCBpbiB0aGUgY2xpcHBlZFF1YWQgYXJy
YXkuIE5vdGUgdGhhdAogICAgIC8vIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCBtYXkgYmUgemVy
bywgd2hpY2ggbWVhbnMgdGhlIGVudGlyZSBxdWFkIHdhcyBjbGlwcGVkLCBhbmQKICAgICAvLyBu
b25lIG9mIHRoZSB2ZXJ0aWNlcyBpbiB0aGUgYXJyYXkgYXJlIHZhbGlkLgotICAgIHN0YXRpYyB2
b2lkIG1hcENsaXBwZWRRdWFkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRRdWFkJiBzcmNRdWFkLCBGbG9hdFBvaW50IGNsaXBwZWRRdWFkWzhdLCBpbnQmIG51bVZlcnRp
Y2VzSW5DbGlwcGVkUXVhZCk7CisgICAgc3RhdGljIHZvaWQgbWFwQ2xpcHBlZFF1YWQoY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UXVhZCYgc3JjUXVh
ZCwgRmxvYXRQb2ludCBjbGlwcGVkUXVhZFs4XSwgaW50JiBudW1WZXJ0aWNlc0luQ2xpcHBlZFF1
YWQpOwogCiAgICAgc3RhdGljIEZsb2F0UmVjdCBjb21wdXRlRW5jbG9zaW5nUmVjdE9mVmVydGlj
ZXMoRmxvYXRQb2ludCB2ZXJ0aWNlc1tdLCBpbnQgbnVtVmVydGljZXMpOwogICAgIHN0YXRpYyBG
bG9hdFJlY3QgY29tcHV0ZUVuY2xvc2luZ0NsaXBwZWRSZWN0KGNvbnN0IEhvbW9nZW5lb3VzQ29v
cmRpbmF0ZSYgaDEsIGNvbnN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYgaDIsIGNvbnN0IEhvbW9n
ZW5lb3VzQ29vcmRpbmF0ZSYgaDMsIGNvbnN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYgaDQpOwog
CiAgICAgLy8gTk9URTogVGhlc2UgZnVuY3Rpb25zIGRvIG5vdCBkbyBjb3JyZWN0IGNsaXBwaW5n
IGFnYWluc3QgdyA9IDAgcGxhbmUsIGJ1dCB0aGV5CiAgICAgLy8gY29ycmVjdGx5IGRldGVjdCB0
aGUgY2xpcHBlZCBjb25kaXRpb24gdmlhIHRoZSBib29sZWFuIGNsaXBwZWQuCi0gICAgc3RhdGlj
IEZsb2F0UXVhZCBtYXBRdWFkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxv
YXRRdWFkJiwgYm9vbCYgY2xpcHBlZCk7Ci0gICAgc3RhdGljIEZsb2F0UXVhZCBwcm9qZWN0UXVh
ZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGNvbnN0IEZsb2F0UXVhZCYsIGJvb2wmIGNs
aXBwZWQpOworICAgIHN0YXRpYyBGbG9hdFF1YWQgbWFwUXVhZChjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRRdWFkJiwgYm9vbCYgY2xpcHBlZCk7Cisg
ICAgc3RhdGljIEZsb2F0UXVhZCBwcm9qZWN0UXVhZChjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRRdWFkJiwgYm9vbCYgY2xpcHBlZCk7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cAppbmRleCBjN2IxZjIwNDNhYjhlNTlmMTNiZGNkMDllNjE5MDVkNDNkMGI2ZTY5Li42OGNjZGM5
YzAxODIwNmM1OWNlZmRmNzk3MzJjNGQ5ZjEyMDczMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+
CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEzMSw3ICsxMzIsNyBAQCB2b2lk
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmZp
bmlzaGVkVGFyZ2V0UmVuZGVyUwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNl
VHlwZT4KLXN0YXRpYyBpbmxpbmUgUmVnaW9uIHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb24o
Y29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIHN1cmZhY2UsIGNvbnN0IFJlZ2lvbiYgcmVnaW9uLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorc3RhdGljIGlubGluZSBSZWdp
b24gdHJhbnNmb3JtU3VyZmFjZU9wYXF1ZVJlZ2lvbihjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSog
c3VyZmFjZSwgY29uc3QgUmVnaW9uJiByZWdpb24sIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0pCiB7CiAgICAgLy8gVmVyaWZ5IHRoYXQgcmVjdHMgd2l0aGluIHRoZSB8
c3VyZmFjZXwgd2lsbCByZW1haW4gcmVjdHMgaW4gaXRzIHRhcmdldCBzdXJmYWNlIGFmdGVyIGFw
cGx5aW5nIHx0cmFuc2Zvcm18LiBJZiB0aGlzIGlzIHRydWUsIHRoZW4KICAgICAvLyBhcHBseSB8
dHJhbnNmb3JtfCB0byBlYWNoIHJlY3Qgd2l0aGluIHxyZWdpb258IGluIG9yZGVyIHRvIHRyYW5z
Zm9ybSB0aGUgZW50aXJlIFJlZ2lvbi4KQEAgLTE5NCw3ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5l
IHZvaWQgcmVkdWNlT2NjbHVzaW9uKGNvbnN0IEludFJlY3QmIGFmZmVjdGVkQXJlYSwgY29uc3Qg
SW50UmVjdCYgZQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXN0
YXRpYyB2b2lkIHJlZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZShSZW5kZXJTdXJmYWNlVHlwZSog
c3VyZmFjZSwgY29uc3QgSW50UmVjdCYgc3VyZmFjZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBzdXJmYWNlVHJhbnNmb3JtLCBSZW5kZXJTdXJmYWNlVHlwZSogc3VyZmFjZVRhcmdl
dCwgUmVnaW9uJiBvY2NsdXNpb25JblRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblNjcmVlbikK
K3N0YXRpYyB2b2lkIHJlZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZShSZW5kZXJTdXJmYWNlVHlw
ZSogc3VyZmFjZSwgY29uc3QgSW50UmVjdCYgc3VyZmFjZVJlY3QsIGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBzdXJmYWNlVHJhbnNmb3JtLCBSZW5kZXJTdXJmYWNlVHlwZSogc3VyZmFj
ZVRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblNj
cmVlbikKIHsKICAgICBpZiAoc3VyZmFjZVJlY3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47
CkBAIC0yNjAsMTMgKzI2MSwxMyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmxlYXZlVG9UYXJnZXRSZW5kZXJTdQogfQogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+Ci1zdGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIp
CitzdGF0aWMgaW5saW5lIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNw
YWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIpCiB7CiAgICAgQVNTRVJUKGxheWVy
VHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKTsKICAgICBJbnRTaXplIGJvdW5kc0luTGF5
ZXJTcGFjZSA9IGxheWVyLT5ib3VuZHMoKTsKICAgICBJbnRTaXplIGJvdW5kc0luQ29udGVudFNw
YWNlID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMoKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybSA9IGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgp
OwogCiAgICAgaWYgKGJvdW5kc0luQ29udGVudFNwYWNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIHRyYW5zZm9ybTsKQEAgLTI3OSwxMyArMjgwLDEzIEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNm
b3JtYXRpb25NYXRyaXggY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJU
eXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgVHJh
bnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybShjb25zdCBM
YXllclR5cGUqIGxheWVyKQorc3RhdGljIGlubGluZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBj
b250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIpCiB7
CiAgICAgQVNTRVJUKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKTsKICAgICBJ
bnRTaXplIGJvdW5kc0luTGF5ZXJTcGFjZSA9IGxheWVyLT5ib3VuZHMoKTsKICAgICBJbnRTaXpl
IGJvdW5kc0luQ29udGVudFNwYWNlID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMoKTsKIAotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyLT5kcmF3VHJhbnNmb3JtKCk7Cisg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXItPmRyYXdUcmFuc2Zv
cm0oKTsKIAogICAgIGlmIChib3VuZHNJbkNvbnRlbnRTcGFjZS5pc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiB0cmFuc2Zvcm07CkBAIC0zMDIsNyArMzAzLDcgQEAgc3RhdGljIGlubGluZSBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtKGNvbnN0IExh
eWVyVHkKIAogLy8gRklYTUU6IFJlbW92ZSB1c2VQYWludFRyYWNraW5nIHdoZW4gcGFpbnQgdHJh
Y2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5
cGU+Ci1zdGF0aWMgaW5saW5lIHZvaWQgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXIoUmVnaW9uJiBy
ZWdpb24sIGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IFJlZ2lvbiYgb3BhcXVlQ29udGVudHMsIGNvbnN0IEludFJlY3Qm
IHNjaXNzb3JSZWN0LCBjb25zdCBJbnRTaXplJiBtaW5pbXVtVHJhY2tpbmdTaXplKQorc3RhdGlj
IGlubGluZSB2b2lkIGFkZE9jY2x1c2lvbkJlaGluZExheWVyKFJlZ2lvbiYgcmVnaW9uLCBjb25z
dCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBSZWdpb24mIG9wYXF1ZUNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBzY2lzc29y
UmVjdCwgY29uc3QgSW50U2l6ZSYgbWluaW11bVRyYWNraW5nU2l6ZSkKIHsKICAgICBBU1NFUlQo
bGF5ZXItPnZpc2libGVMYXllclJlY3QoKS5jb250YWlucyhvcGFxdWVDb250ZW50cy5ib3VuZHMo
KSkpOwogCkBAIC0zNDUsNyArMzQ2LDcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExh
eWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICAv
LyByZW1haW4gcmVjdGlsaW5lYXIsIHRoZW4gd2UgZG9uJ3QgYWRkIGFueSBvY2NsdXNpb24gaW4g
c2NyZWVuIHNwYWNlLgogCiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5
ZXIpKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRhcmdldFRvU2NyZWVuVHJhbnNm
b3JtID0gbV9zdGFjay5sYXN0KCkuc3VyZmFjZS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKyAg
ICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdGFyZ2V0VG9TY3JlZW5UcmFuc2Zvcm0gPSBt
X3N0YWNrLmxhc3QoKS5zdXJmYWNlLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpOwogICAgICAgICBi
b29sIGNsaXBwZWQ7CiAgICAgICAgIEZsb2F0UXVhZCBzY2lzc29ySW5TY3JlZW5RdWFkID0gQ0NN
YXRoVXRpbDo6bWFwUXVhZCh0YXJnZXRUb1NjcmVlblRyYW5zZm9ybSwgRmxvYXRRdWFkKEZsb2F0
UmVjdChzY2lzc29ySW5UYXJnZXQpKSwgY2xpcHBlZCk7CiAgICAgICAgIC8vIEZJWE1FOiBGaW5k
IGEgcmVjdCBpbnRlcmlvciB0byB0aGUgdHJhbnNmb3JtZWQgc2Npc3NvciBxdWFkLgpAQCAtMzU2
LDcgKzM1Nyw3IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRl
clN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5CiAgICAgfQogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgdGVzdENvbnRlbnRSZWN0T2NjbHVkZWQoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50U3BhY2VUcmFuc2Zvcm0s
IGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1c2lvbikKK3N0
YXRpYyBpbmxpbmUgYm9vbCB0ZXN0Q29udGVudFJlY3RPY2NsdWRlZChjb25zdCBJbnRSZWN0JiBj
b250ZW50UmVjdCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRy
YW5zZm9ybSwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVz
aW9uKQogewogICAgIEZsb2F0UmVjdCB0cmFuc2Zvcm1lZFJlY3QgPSBDQ01hdGhVdGlsOjptYXBD
bGlwcGVkUmVjdChjb250ZW50U3BhY2VUcmFuc2Zvcm0sIEZsb2F0UmVjdChjb250ZW50UmVjdCkp
OwogICAgIC8vIFRha2UgdGhlIGVuY2xvc2luZ0ludFJlY3QsIGFzIHdlIHdhbnQgdG8gaW5jbHVk
ZSBwYXJ0aWFsIHBpeGVscyBpbiB0aGUgdGVzdC4KQEAgLTM5MSw3ICszOTIsNyBAQCBzdGF0aWMg
aW5saW5lIEludFJlY3QgcmVjdFN1YnRyYWN0UmVnaW9uKGNvbnN0IEludFJlY3QmIHJlY3QsIGNv
bnN0IFJlZ2lvbiYgcmVnaQogICAgIHJldHVybiByZWN0UmVnaW9uLmJvdW5kcygpOwogfQogCi1z
dGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBJ
bnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRT
cGFjZVRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgc2Npc3NvclJlY3QsIGNvbnN0IFJlZ2lvbiYg
b2NjbHVzaW9uKQorc3RhdGljIGlubGluZSBJbnRSZWN0IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVu
dFJlY3QoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4JiBjb250ZW50U3BhY2VUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0
LCBjb25zdCBSZWdpb24mIG9jY2x1c2lvbikKIHsKICAgICBpZiAoIWNvbnRlbnRTcGFjZVRyYW5z
Zm9ybS5pc0ludmVydGlibGUoKSkKICAgICAgICAgcmV0dXJuIGNvbnRlbnRSZWN0OwpAQCAtNDU1
LDggKzQ1Niw4IEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJl
bmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRlZENvbnRyaWJ1CiAgICAgLy8gZm91bmQganVzdCBi
ZWxvdyB0aGUgdG9wIG9mIHRoZSBzdGFjayAoaWYgaXQgZXhpc3RzKS4KICAgICBib29sIGhhc09j
Y2x1c2lvbiA9IG1fc3RhY2suc2l6ZSgpID4gMTsKIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm1Ub1NjcmVlbiA9IGZvclJlcGxpY2EgPyBzdXJmYWNlLT5yZXBsaWNh
U2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSA6IHN1cmZhY2UtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0ID0gZm9y
UmVwbGljYSA/IHN1cmZhY2UtPnJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSA6IHN1cmZhY2UtPm9y
aWdpblRyYW5zZm9ybSgpOworICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Ub1NjcmVlbiA9IGZvclJlcGxpY2EgPyBzdXJmYWNlLT5yZXBsaWNhU2NyZWVuU3BhY2VU
cmFuc2Zvcm0oKSA6IHN1cmZhY2UtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7CisgICAgY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0ID0gZm9yUmVwbGljYSA/
IHN1cmZhY2UtPnJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSA6IHN1cmZhY2UtPm9yaWdpblRyYW5z
Zm9ybSgpOwogCiAgICAgSW50UmVjdCB1bm9jY2x1ZGVkSW5TY3JlZW4gPSBjb250ZW50UmVjdDsK
ICAgICBpZiAoc3VyZmFjZVRyYW5zZm9ybXNUb1NjcmVlbktub3duKHN1cmZhY2UpKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCmluZGV4IDIzMjg3NDUyM2RhOTgzNThiNTc0OGRh
MTNmMjA5YTJkNDZlNTUwZDQuLjEyODAxZmZiZTM5NzM2YmMxNjliZTZlNjUxODY2YjhmMjA1MzVi
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC0yOCw3ICsyOCw2IEBA
CiAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJSZWdpb24uaCIKLSNpbmNsdWRl
ICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJdGVyYXRvci5o
IgogI2luY2x1ZGUgImNjL0NDT3ZlcmRyYXdNZXRyaWNzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3Zl
cmRyYXdNZXRyaWNzLmNwcAppbmRleCAzYjAxOTNlYzRhOTQ3MjU3YTUxOTUyNjVmNDZhMTRjMmRk
Zjc5OGIxLi43YjU3Yzg5YjEyMjEwZDFlNjc2NmU0N2M1OGZjNmU5YjU0NmU3MzE2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJk
cmF3TWV0cmljcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuY3BwCkBAIC0zMSwxMCArMzEsMTIgQEAKICNpbmNs
dWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVHJhY2VF
dmVudC5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2Mv
Q0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgog
I2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oPgorCit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc4LDcgKzgwLDcgQEAgdm9pZCBDQ092ZXJk
cmF3TWV0cmljczo6ZGlkQ3VsbFRpbGVGb3JVcGxvYWQoKQogICAgICAgICArK21fdGlsZXNDdWxs
ZWRGb3JVcGxvYWQ7CiB9CiAKLXZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZFVwbG9hZChjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3Qm
IHVwbG9hZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCit2b2lkIENDT3ZlcmRyYXdN
ZXRyaWNzOjpkaWRVcGxvYWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiB1cGxvYWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFx
dWVSZWN0KQogewogICAgIGlmICghbV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKQEAgLTkwLDcgKzkyLDcgQEAgdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkVXBsb2Fk
KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwKICAgICBtX3Bp
eGVsc1VwbG9hZGVkVHJhbnNsdWNlbnQgKz0gdXBsb2FkQXJlYSAtIHVwbG9hZE9wYXF1ZUFyZWE7
CiB9CiAKLXZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1bGxGb3JEcmF3aW5nKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYmVm
b3JlQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QpCit2b2lkIENDT3ZlcmRy
YXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2luZyhjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIGJlZm9yZUN1bGxSZWN0LCBjb25z
dCBJbnRSZWN0JiBhZnRlckN1bGxSZWN0KQogewogICAgIGlmICghbV9yZWNvcmRNZXRyaWNzRm9y
RnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTEwMSw3ICsxMDMsNyBAQCB2b2lkIENDT3ZlcmRy
YXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2luZyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtVAogICAgIG1fcGl4ZWxzQ3VsbGVkRm9yRHJhd2luZyArPSBiZWZvcmVDdWxsQXJl
YSAtIGFmdGVyQ3VsbEFyZWE7CiB9CiAKLXZvaWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZERyYXco
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRS
ZWN0JiBhZnRlckN1bGxSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQordm9pZCBDQ092
ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyhjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QsIGNvbnN0IEludFJl
Y3QmIG9wYXF1ZVJlY3QpCiB7CiAgICAgaWYgKCFtX3JlY29yZE1ldHJpY3NGb3JGcmFtZSkKICAg
ICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmgKaW5kZXggNTE1NmMz
YzM5YjMzNGUzMDk2ODE2Y2YyMmY3MmUxNDM0YWM2YTkwYi4uNzE1ZjVlMTUxYmJhZGRhMTc5NzZj
N2UzOWZlMzcxMzc3YmRmOGUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oCkBA
IC0yNyw5ICsyNywxMiBAQAogCiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorbmFtZXNw
YWNlIFdlYktpdCB7CitjbGFzcyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKK30KKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVjdDsKLWNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4
OwogY2xhc3MgQ0NMYXllclRyZWVIb3N0OwogY2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIApA
QCAtNDUsMTQgKzQ4LDE0IEBAIHB1YmxpYzoKICAgICAvLyBSZWNvcmRzIHRoYXQgYW4gaW52YWxp
ZCB0aWxlIHdhcyBjdWxsZWQgYW5kIGRpZCBub3QgbmVlZCB0byBiZSBwYWludGVkL3VwbG9hZGVk
LCBhbmQgZGlkIG5vdCBjb250cmlidXRlIHRvIG90aGVyIHRpbGVzIG5lZWRpbmcgdG8gYmUgcGFp
bnRlZC4KICAgICB2b2lkIGRpZEN1bGxUaWxlRm9yVXBsb2FkKCk7CiAgICAgLy8gUmVjb3JkcyBw
aXhlbHMgdGhhdCB3ZXJlIHVwbG9hZGVkIHRvIHRleHR1cmUgbWVtb3J5LgotICAgIHZvaWQgZGlk
VXBsb2FkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29u
c3QgSW50UmVjdCYgdXBsb2FkUmVjdCwgY29uc3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CisgICAg
dm9pZCBkaWRVcGxvYWQoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIHVwbG9hZFJlY3QsIGNvbnN0IEludFJlY3Qm
IG9wYXF1ZVJlY3QpOwogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgdXNlZCBmb3Igc2F2aW5n
IG1ldHJpY3MgZHVyaW5nIGRyYXcuCiAKICAgICAvLyBSZWNvcmQgcGl4ZWxzIHRoYXQgd2VyZSBu
b3QgZHJhd24gdG8gc2NyZWVuLgotICAgIHZvaWQgZGlkQ3VsbEZvckRyYXdpbmcoY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBiZWZv
cmVDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYgYWZ0ZXJDdWxsUmVjdCk7CisgICAgdm9pZCBkaWRD
dWxsRm9yRHJhd2luZyhjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYmVmb3JlQ3VsbFJlY3QsIGNvbnN0IEludFJl
Y3QmIGFmdGVyQ3VsbFJlY3QpOwogICAgIC8vIFJlY29yZCBwaXhlbHMgdGhhdCB3ZXJlIGRyYXdu
IHRvIHNjcmVlbi4KLSAgICB2b2lkIGRpZERyYXcoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBhZnRlckN1bGxSZWN0LCBjb25zdCBJ
bnRSZWN0JiBvcGFxdWVSZWN0KTsKKyAgICB2b2lkIGRpZERyYXcoY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIGFm
dGVyQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwogCiAgICAgdm9pZCByZWNv
cmRNZXRyaWNzKGNvbnN0IENDTGF5ZXJUcmVlSG9zdCopIGNvbnN0OwogICAgIHZvaWQgcmVjb3Jk
TWV0cmljcyhjb25zdCBDQ0xheWVyVHJlZUhvc3RJbXBsKikgY29uc3Q7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFk
Q3VsbGVyLmNwcAppbmRleCBlNWI0NWU5MTMxMWM0MmY2MTg2MTc0NjA5NmQ3ZWM5ODViMmIyNzJh
Li42NmVlZjM5ZmNhNzgwZGVjZGY2NDczYWZhYjRkODBhMDNmYzhjN2ViIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
UXVhZEN1bGxlci5jcHAKQEAgLTMwLDEyICszMCwxMiBAQAogI2luY2x1ZGUgImNjL0NDUXVhZEN1
bGxlci5oIgogCiAjaW5jbHVkZSAiUmVnaW9uLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25N
YXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDT3ZlcmRyYXdNZXRyaWNzLmgiCiAj
aW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNl
RHJhd1F1YWQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
IAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXgg
MzUxODY2MDdmNTVlNTRkMzA2OWUwNGY4YzdiYWQ2Nzg0YTEwOGFjZi4uZmQ4OTk5MGM3MTk4MTYw
Njc2YTc2ZjViZWQyMTk2ZmY3Yjk2ZWNjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBA
IC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNs
dWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogCit1c2luZyBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4OworCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8Q0NS
ZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNyZWF0ZShDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1
cmZhY2UpCkBAIC04OSw3ICs5MSw3IEBAIHZvaWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1Rv
RmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBDb2xvciYKICAgICAgICAg
cmV0dXJuOwogCiAgICAgT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUg
PSByb290TGF5ZXItPmNyZWF0ZVNoYXJlZFF1YWRTdGF0ZSgpOwotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zZm9ybVRvTGF5ZXJTcGFjZSA9IHJvb3RMYXllci0+c2NyZWVuU3BhY2VUcmFu
c2Zvcm0oKS5pbnZlcnNlKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
VG9MYXllclNwYWNlID0gcm9vdExheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2Uo
KTsKICAgICBWZWN0b3I8SW50UmVjdD4gZmlsbFJlY3RzID0gZmlsbFJlZ2lvbi5yZWN0cygpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsbFJlY3RzLnNpemUoKTsgKytpKSB7CiAgICAg
ICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gdHJhbnNmb3JtVG9MYXllclNwYWNlLm1hcFJlY3QoZmls
bFJlY3RzW2ldKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKaW5kZXggOGUzNzA1NzhjZWQy
MTA1MDFlOWRkZGM0NDhhODc5NWQ5NDY2OTI0Yi4uODU1ZmNjZTdlNDM1M2I4ZGRlZDUxZGVlMGVl
ZDBjNDAwMzgyYTE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJmYWNlLmgKQEAgLTMyLDkgKzMy
LDkgQEAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5j
bHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
IgogI2luY2x1ZGUgImNjL0NDTGF5ZXJRdWFkLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRl
ck9wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpA
QCAtODUsMjMgKzg1LDIzIEBAIHB1YmxpYzoKICAgICBib29sIGRyYXdPcGFjaXR5SXNBbmltYXRp
bmcoKSBjb25zdCB7IHJldHVybiBtX2RyYXdPcGFjaXR5SXNBbmltYXRpbmc7IH0KICAgICB2b2lk
IHNldERyYXdPcGFjaXR5SXNBbmltYXRpbmcoYm9vbCBkcmF3T3BhY2l0eUlzQW5pbWF0aW5nKSB7
IG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZyA9IGRyYXdPcGFjaXR5SXNBbmltYXRpbmc7IH0KIAot
ICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d1RyYW5zZm9ybSkgeyBtX2RyYXdUcmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtOyB9Ci0gICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBt
X2RyYXdUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldERyYXdUcmFuc2Zvcm0oY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgeyBtX2RyYXdUcmFuc2Zv
cm0gPSBkcmF3VHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fZHJhd1RyYW5zZm9ybTsg
fQogCi0gICAgdm9pZCBzZXRPcmlnaW5UcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG9yaWdpblRyYW5zZm9ybSkgeyBtX29yaWdpblRyYW5zZm9ybSA9IG9yaWdpblRyYW5zZm9y
bTsgfQotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBvcmlnaW5UcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX29yaWdpblRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0T3JpZ2luVHJh
bnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5z
Zm9ybSkgeyBtX29yaWdpblRyYW5zZm9ybSA9IG9yaWdpblRyYW5zZm9ybTsgfQorICAgIGNvbnN0
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fb3JpZ2luVHJhbnNmb3JtOyB9CiAKLSAgICB2b2lkIHNldFNjcmVlblNwYWNl
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9y
bSkgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KLSAg
ICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTY3JlZW5T
cGFjZVRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY3Jl
ZW5TcGFjZVRyYW5zZm9ybSkgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtID0gc2NyZWVuU3BhY2VU
cmFuc2Zvcm07IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBz
Y3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2NyZWVuU3BhY2VUcmFuc2Zv
cm07IH0KIAotICAgIHZvaWQgc2V0UmVwbGljYURyYXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zv
cm0gPSByZXBsaWNhRHJhd1RyYW5zZm9ybTsgfQotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURyYXdU
cmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKSB7IG1fcmVw
bGljYURyYXdUcmFuc2Zvcm0gPSByZXBsaWNhRHJhd1RyYW5zZm9ybTsgfQorICAgIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKCkgY29u
c3QgeyByZXR1cm4gbV9yZXBsaWNhRHJhd1RyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRSZXBs
aWNhT3JpZ2luVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3Jp
Z2luVHJhbnNmb3JtKSB7IG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybSA9IHJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm07IH0KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYU9yaWdp
blRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybTsgfQor
ICAgIHZvaWQgc2V0UmVwbGljYU9yaWdpblRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3JpZ2luVHJhbnNmb3JtKSB7IG1fcmVwbGljYU9yaWdp
blRyYW5zZm9ybSA9IHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KKyAgICBjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV9yZXBsaWNhT3JpZ2luVHJhbnNmb3JtOyB9CiAKLSAgICB2b2lkIHNldFJlcGxp
Y2FTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGlj
YVNjcmVlblNwYWNlVHJhbnNmb3JtKSB7IG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtID0g
cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVw
bGljYVNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRSZXBsaWNhU2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGlj
YVNjcmVlblNwYWNlVHJhbnNmb3JtKSB7IG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtID0g
cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KIAogICAgIGJvb2wgdGFyZ2V0
U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1
cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nOyB9CiAgICAgdm9pZCBzZXRUYXJnZXRTdXJmYWNl
VHJhbnNmb3Jtc0FyZUFuaW1hdGluZyhib29sIGFuaW1hdGluZykgeyBtX3RhcmdldFN1cmZhY2VU
cmFuc2Zvcm1zQXJlQW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9CkBAIC0xNTIsMTIgKzE1MiwxMiBA
QCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV9kcmF3T3BhY2l0eTsKICAgICBib29sIG1fZHJhd09w
YWNpdHlJc0FuaW1hdGluZzsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zv
cm07Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07Ci0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
X3JlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fb3JpZ2luVHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fcmVwbGljYURyYXdUcmFuc2Zvcm07CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07CisgICAgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBi
b29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAgYm9vbCBtX3Nj
cmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBXZWJLaXQ6OldlYkZpbHRlck9w
ZXJhdGlvbnMgbV9maWx0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCmlu
ZGV4IDliZjc2OTI1YmI4Y2YyYmJhYzUzOWMwMTQzMWM1NTc4NDMzOWZkMDUuLjNmMjgzN2UwNTIw
YmY4NDZiNDczZWExZTczODcxNWY2ZTgwOTYwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1
YWRTdGF0ZS5jcHAKQEAgLTI3LDE0ICsyNywxNiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRR
dWFkU3RhdGUuaCIKIAordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKKwog
bmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNzT3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ1No
YXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJh
bnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0
IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNp
dHksIGJvb2wgb3BhcXVlKQorUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NTaGFyZWRR
dWFkU3RhdGU6OmNyZWF0ZShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5z
Zm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25z
dCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFj
aXR5LCBib29sIG9wYXF1ZSkKIHsKICAgICByZXR1cm4gYWRvcHRQdHIobmV3IENDU2hhcmVkUXVh
ZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVyVHJhbnNmb3JtLCBsYXllclJlY3QsIGNsaXBSZWN0
LCBvcGFjaXR5LCBvcGFxdWUpKTsKIH0KIAotQ0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVh
ZFN0YXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVy
UmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVl
KQorQ0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQogICAgIDogbV9xdWFkVHJh
bnNmb3JtKHF1YWRUcmFuc2Zvcm0pCiAgICAgLCBtX2xheWVyVHJhbnNmb3JtKGxheWVyVHJhbnNm
b3JtKQogICAgICwgbV9sYXllclJlY3QobGF5ZXJSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVh
ZFN0YXRlLmgKaW5kZXggNDIwNmFhNWMyZGUyYTc1NGM5Y2E5MWY0ZThlODg5MzgyMjExZmYyMi4u
YTE0YjE3ZGFhY2YxMGM3YjljNTkzYTUzMGEyYTI2YmI1ODUxMTU5OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3Rh
dGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NoYXJlZFF1YWRTdGF0ZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFF1
YWQuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRy
aXguaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNs
dWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiwxMiAr
MzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGUgewog
ICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKENDU2hhcmVkUXVhZFN0YXRlKTsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVj
dCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKKyAgICBzdGF0aWMgUGFz
c093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0sIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNv
bnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CiAKICAg
ICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgcXVhZHMgaW4gYSBDQ0RyYXdRdWFkIHNob3VsZCBiZSB0
cmFuc2Zvcm1lZCB3aXRoLgotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9xdWFkVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0
dXJuIG1fcXVhZFRyYW5zZm9ybTsgfQogICAgIC8vIFRoZSB0cmFuc2Zvcm0gdGhhdCBsYXllclJl
Y3QoKSBzaG91bGQgYmUgdHJhbnNmb3JtZWQgd2l0aC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJhbnNmb3Jt
OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFu
c2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xheWVyVHJhbnNmb3JtOyB9CiAgICAgY29uc3QgSW50
UmVjdCYgbGF5ZXJSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9sYXllclJlY3Q7IH0KICAgICAvLyBV
c2FnZTogaWYgY2xpcFJlY3QgaXMgZW1wdHksIHRoaXMgY2xpcFJlY3Qgc2hvdWxkIG5vdCBiZSB1
c2VkLgogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlw
UmVjdDsgfQpAQCAtNTEsMTAgKzUxLDEwIEBAIHB1YmxpYzoKICAgICBib29sIGlzTGF5ZXJBeGlz
QWxpZ25lZEludFJlY3QoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDQ1NoYXJlZFF1YWRTdGF0
ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3Qs
IGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7Cisg
ICAgQ0NTaGFyZWRRdWFkU3RhdGUoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYg
Y2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKTsKIAotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IG1fcXVhZFRyYW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2xh
eWVyVHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9xdWFk
VHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9sYXllclRy
YW5zZm9ybTsKICAgICBJbnRSZWN0IG1fbGF5ZXJSZWN0OwogICAgIEludFJlY3QgbV9jbGlwUmVj
dDsKICAgICBmbG9hdCBtX29wYWNpdHk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsLmNwcAppbmRleCA2YWUzYTE3Mjk4ZTljNmMzMTgyN2FkNjllYWI0NmI5ZThlZDNlNDYz
Li5kMWE0Zjc2MjY2MjQyOWNhNzAyZjNlYTJmZWEwYmYyZDgwMTI4NGFiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JM
YXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5n
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtNDksOSArNTAsOSBAQCBDQ1NvbGlkQ29sb3JMYXllckltcGw6On5DQ1NvbGlkQ29sb3JM
YXllckltcGwoKQogewogfQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBDQ1NvbGlkQ29sb3JMYXll
ckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25zdAorV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NT
b2xpZENvbG9yTGF5ZXJJbXBsOjpxdWFkVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBzb2xpZENvbG9yVHJhbnNmb3JtID0gZHJhd1RyYW5zZm9ybSgpOworICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNvbGlkQ29sb3JUcmFuc2Zvcm0gPSBkcmF3VHJhbnNm
b3JtKCk7CiAgICAgc29saWRDb2xvclRyYW5zZm9ybS50cmFuc2xhdGUoLWJvdW5kcygpLndpZHRo
KCkgLyAyLjAsIC1ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCk7CiAKICAgICByZXR1cm4gc29saWRD
b2xvclRyYW5zZm9ybTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5k
ZXggZDhmY2UzNzYxN2Q2YWI0ZDlhZGYzODhlNzUxMWI5ZGZhZmEzZjE1Mi4uNjQyOTEyNTVmZGJk
Mjg4NGQ3M2E0OWNlNmEyNjM4MDA5NDg0YWIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsLmgKQEAgLTI2LDggKzI2LDggQEAKICNpZm5kZWYgQ0NTb2xpZENvbG9yTGF5
ZXJJbXBsX2gKICNkZWZpbmUgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsX2gKIAotI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNs
dWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NT
b2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKLSAgICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHF1YWRUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRyYW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhDQ1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1
YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdUaWxlcykgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKaW5kZXggOTYwNWU0OTk3MzYxY2MyNTRk
MzVjNDgwZjBhMmVlNWM4ODFkNjA2Zi4uZWZlY2FiZDFkZmNmZDU3ZmI4ZDhjMDBkOGU4NWIyM2Ji
NjE3OWY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5jcHAKQEAgLTM4LDYgKzM4
LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMTIxLDkgKzEyMiw5IEBAIERyYXdhYmxlVGlsZSogQ0NUaWxlZExh
eWVySW1wbDo6Y3JlYXRlVGlsZShpbnQgaSwgaW50IGopCiAgICAgcmV0dXJuIGFkZGVkVGlsZTsK
IH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NUaWxlZExheWVySW1wbDo6cXVhZFRyYW5zZm9y
bSgpIGNvbnN0CitXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDQ1RpbGVkTGF5ZXJJbXBsOjpxdWFk
VHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0g
PSBkcmF3VHJhbnNmb3JtKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
ID0gZHJhd1RyYW5zZm9ybSgpOwogCiAgICAgaWYgKGNvbnRlbnRCb3VuZHMoKS5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgK
aW5kZXggMmU4NTM5YWUxODZhMjAwMjZmZjkyMjhiNzA3OWMyMGNkYzNiZjUyMS4uZjU4OGM5Y2Y1
OTMzZDIwZmE0MWJhZWNiNDJlYmQ1ZmE4MjU5ZjliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXll
ckltcGwuaApAQCAtMjcsOSArMjcsOSBAQAogI2RlZmluZSBDQ1RpbGVkTGF5ZXJJbXBsX2gKIAog
I2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0ZXIuaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NM
YXllclRpbGluZ0RhdGEuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC02NSw3ICs2NSw3IEBAIHByb3RlY3Rl
ZDoKICAgICBib29sIGhhc1RpbGVBdChpbnQsIGludCkgY29uc3Q7CiAgICAgYm9vbCBoYXNUZXh0
dXJlSWRGb3JUaWxlQXQoaW50LCBpbnQpIGNvbnN0OwogCi0gICAgdmlydHVhbCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm0oKSBjb25zdCBPVkVS
UklERTsKIAogcHJpdmF0ZToKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3Bw
CmluZGV4IGJkMDIyYjcyNDc4YTEyZmVjM2I4ZTkwZDIzM2ZiYmI1NWE3MDM3MjEuLjZiMTAyOTgx
NDRmMjY2MThhZDI2NTAyMDNiNWQyMzZmOGMwNTZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJMYXllci5jcHAKQEAgLTM4LDIwICszOCwyMSBAQAogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3Vz
aW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFjZSB7CiAKLVRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29u
c3QgU2tNYXRyaXg0NCYgbWF0cml4KQorV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
YXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChjb25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCiB7CiAg
ICAgZG91YmxlIGRhdGFbMTZdOwogICAgIG1hdHJpeC5hc0NvbE1ham9yZChkYXRhKTsKLSAgICBy
ZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgoZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0
YVszXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVs0XSwgZGF0YVs1XSwg
ZGF0YVs2XSwgZGF0YVs3XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVs4
XSwgZGF0YVs5XSwgZGF0YVsxMF0sIGRhdGFbMTFdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkYXRhWzEyXSwgZGF0YVsxM10sIGRhdGFbMTRdLCBkYXRhWzE1XSk7CisgICAgcmV0
dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRh
dGFbM10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFb
NV0sIGRhdGFbNl0sIGRhdGFbN10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBdLCBkYXRhWzExXSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGF0YVsxMl0sIGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0p
OwogfQogCi1Ta01hdHJpeDQ0IHNrTWF0cml4NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKK1NrTWF0cml4NDQgc2tNYXRyaXg0NEZy
b21UcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4KQogewogICAgIFNrTWF0cml4NDQgc2tNYXRyaXg7CiAgICAgc2tNYXRyaXguc2V0KDAsIDAs
IFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5tMTEoKSkpOwpAQCAtMjMxLDcgKzIzMiw3IEBAIHZv
aWQgV2ViTGF5ZXI6OnNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJp
eCkKIAogdm9pZCBXZWJMYXllcjo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKIHsKLSAgICBtX3ByaXZhdGUtPnNldFN1YmxheWVyVHJh
bnNmb3JtKG1hdHJpeC50b1dlYkNvcmVUcmFuc2Zvcm0oKSk7CisgICAgbV9wcml2YXRlLT5zZXRT
dWJsYXllclRyYW5zZm9ybShtYXRyaXgpOwogfQogCiBTa01hdHJpeDQ0IFdlYkxheWVyOjpzdWJs
YXllclRyYW5zZm9ybSgpIGNvbnN0CkBAIC0yNDYsNyArMjQ3LDcgQEAgdm9pZCBXZWJMYXllcjo6
c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKIAogdm9pZCBXZWJMYXllcjo6
c2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiB7Ci0g
ICAgbV9wcml2YXRlLT5zZXRUcmFuc2Zvcm0obWF0cml4LnRvV2ViQ29yZVRyYW5zZm9ybSgpKTsK
KyAgICBtX3ByaXZhdGUtPnNldFRyYW5zZm9ybShtYXRyaXgpOwogfQogCiBTa01hdHJpeDQ0IFdl
YkxheWVyOjp0cmFuc2Zvcm0oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uY3BwCmluZGV4IDM2Zjc5ODE4ZWYwOWU4
MzhjYzk4MjdiOGZhMTYyNTg4MTk1MGRhNDIuLjBlOGMxYTQwMWY2YzhiYmRlMjIzMjMxZDJjOTNm
ZDk4NGIzNTIxM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NB
bmltYXRpb25UZXN0Q29tbW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAKQEAgLTk5LDkgKzk5LDkgQEAgRmFrZVRyYW5zZm9y
bVRyYW5zaXRpb246On5GYWtlVHJhbnNmb3JtVHJhbnNpdGlvbigpCiB7CiB9CiAKLVdlYkNvcmU6
OlRyYW5zZm9ybWF0aW9uTWF0cml4IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uOjpnZXRWYWx1ZShk
b3VibGUgdGltZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkgY29uc3QKK1dlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggRmFrZVRyYW5zZm9ybVRyYW5zaXRpb246OmdldFZhbHVl
KGRvdWJsZSB0aW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSBjb25zdAogewotICAg
IHJldHVybiBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpOworICAgIHJldHVybiBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiB9CiAKIFBhc3NPd25QdHI8V2ViQ29yZTo6
Q0NBbmltYXRpb25DdXJ2ZT4gRmFrZVRyYW5zZm9ybVRyYW5zaXRpb246OmNsb25lKCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0
Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENv
bW1vbi5oCmluZGV4IDc3NmI3NWM4ZDZmNmVhZTQ5Y2IyYzI4ZWU4ZDYzYzIxYmUxMjM4MzQuLjQz
ODQxMTdkMzljYWI3MjJmODQ1NGVkNTc3NmU1MDIyOTkxNjBmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uaApAQCAtMjUs
NiArMjUsNyBAQAogI2lmbmRlZiBDQ0FuaW1hdGlvblRlc3RDb21tb25faAogI2RlZmluZSBDQ0Fu
aW1hdGlvblRlc3RDb21tb25faAogCisjaW5jbHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgImNj
L0NDQW5pbWF0aW9uQ3VydmUuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlci5oIgogCkBAIC01Myw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GYWtlVHJh
bnNmb3JtVHJhbnNpdGlvbigpOwogCiAgICAgdmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25z
dCBPVkVSUklERSB7IHJldHVybiBtX2R1cmF0aW9uOyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdGltZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdGltZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkND
QW5pbWF0aW9uQ3VydmU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREU7CiAKQEAgLTg2LDEzICs4Nywx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgaWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVy
biAwOyB9CiAgICAgdmlydHVhbCB2b2lkIHNldE9wYWNpdHlGcm9tQW5pbWF0aW9uKGZsb2F0IG9w
YWNpdHkpIE9WRVJSSURFIHsgbV9vcGFjaXR5ID0gb3BhY2l0eTsgfQogICAgIHZpcnR1YWwgZmxv
YXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fb3BhY2l0eTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1Gcm9tQW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pIE9WRVJSSURFIHsgbV90cmFuc2Zvcm0gPSB0cmFu
c2Zvcm07IH0KLSAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAg
IHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1Gcm9tQW5pbWF0aW9uKGNvbnN0IFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkgT1ZFUlJJREUgeyBtX3RyYW5zZm9ybSA9
IHRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90cmFuc2Zvcm07
IH0KICAgICB2aXJ0dWFsIGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGJvdW5kcygpIGNvbnN0IE9W
RVJSSURFIHsgcmV0dXJuIG1fYm91bmRzOyB9CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV9vcGFj
aXR5OwotICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOworICAg
IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV90cmFuc2Zvcm07CiAgICAgV2ViQ29y
ZTo6SW50U2l6ZSBtX2JvdW5kczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwCmluZGV4IGJiZWE5NzFkZDVhNGVmZTY3
ZDMzNjE2MWM5YTBkZmI3MTVhZDdhYjcuLjU2ZDg1ZmFmYTlmZDdiOWFjN2YyZjI3MjhkNmNhZjY3
Yjc5NmFiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1h
Z2VUcmFja2VyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0Rh
bWFnZVRyYWNrZXJUZXN0LmNwcApAQCAtNDYsNyArNDYsNyBAQCBuYW1lc3BhY2Ugewogdm9pZCBl
eGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiBy
b290LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAg
ICBDQ0xheWVyU29ydGVyIGxheWVyU29ydGVyOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IGR1bW15TGF5ZXJMaXN0OwogICAgIGludCBkdW1t
eU1heFRleHR1cmVTaXplID0gNTEyOwogCkBAIC0yOTEsNyArMjkxLDcgQEAgVEVTVF9GKENDRGFt
YWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFnZUZvclRyYW5zZm9ybWVkTGF5ZXIpCiAgICAgT3du
UHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3JlYXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJm
YWNlKCk7CiAgICAgQ0NMYXllckltcGwqIGNoaWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQo
KTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJvdGF0aW9uOworICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHJvdGF0aW9uOwogICAgIHJvdGF0aW9uLnJvdGF0ZSg0NSk7CiAKICAgICAv
LyBOb3RlIGNhcmVmdWxseSwgdGhlIGFuY2hvciBpcyBhY3R1YWxseSBwYXJ0IG9mIGxheWVyLT5w
b3NpdGlvbigpLiBCeSBzZXR0aW5nIGFuY2hvcgpAQCAtMzMyLDcgKzMzMiw3IEBAIFRFU1RfRihD
Q0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JQZXJzcGVjdGl2ZUNsaXBwZWRMYXll
cikKICAgICBPd25QdHI8Q0NMYXllckltcGw+IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVl
V2l0aE9uZVN1cmZhY2UoKTsKICAgICBDQ0xheWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJl
bigpWzBdLmdldCgpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0uYXBwbHlQ
ZXJzcGVjdGl2ZSgxKTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlM2QoLTE1MCwgLTUwLCAwKTsK
ICAgICB0cmFuc2Zvcm0ucm90YXRlM2QoMCwgNDUsIDApOwpAQCAtNzg5LDcgKzc4OSw3IEBAIFRF
U1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhKQogICAgICAg
ICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5kQ2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpj
cmVhdGUoNyk7CiAgICAgICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxvYXRQ
b2ludDo6emVybygpKTsKICAgICAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRBbmNob3JQb2lu
dChGbG9hdFBvaW50Ojp6ZXJvKCkpOwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZs
ZWN0aW9uOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOwogICAg
ICAgICByZWZsZWN0aW9uLnNjYWxlM2QoLTEuMCwgMS4wLCAxLjApOwogICAgICAgICBncmFuZENo
aWxkMVJlcGxpY2EtPnNldFRyYW5zZm9ybShyZWZsZWN0aW9uKTsKICAgICAgICAgZ3JhbmRDaGls
ZDEtPnNldFJlcGxpY2FMYXllcihncmFuZENoaWxkMVJlcGxpY2EucmVsZWFzZSgpKTsKQEAgLTky
OCw3ICs5MjgsNyBAQCBURVNUX0YoQ0NEYW1hZ2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9y
UmVwbGljYU1hc2spCiAgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBs
aWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2KTsKICAgICAgICAgZ3JhbmRDaGlsZDFSZXBsaWNh
LT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgICAgICBncmFuZENoaWxkMVJl
cGxpY2EtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7Ci0gICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHJlZmxlY3Rpb247CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IHJlZmxlY3Rpb247CiAgICAgICAgIHJlZmxlY3Rpb24uc2NhbGUzZCgtMS4wLCAxLjAsIDEu
MCk7CiAgICAgICAgIGdyYW5kQ2hpbGQxUmVwbGljYS0+c2V0VHJhbnNmb3JtKHJlZmxlY3Rpb24p
OwogICAgICAgICBncmFuZENoaWxkMS0+c2V0UmVwbGljYUxheWVyKGdyYW5kQ2hpbGQxUmVwbGlj
YS5yZWxlYXNlKCkpOwpAQCAtOTg4LDcgKzk4OCw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJU
ZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhTWFza1dpdGhBbmNob3IpCiAgICAgICAgIE93blB0
cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2
KTsKICAgICAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6
ZXJvKCkpOwogICAgICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQ6Onplcm8oKSk7IC8vIG5vdGUsIHRoaXMgaXMgbm90IHRoZSBhbmNob3IgYmVpbmcgdGVz
dGVkLgotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOworICAgICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOwogICAgICAgICByZWZsZWN0aW9uLnNj
YWxlM2QoLTEuMCwgMS4wLCAxLjApOwogICAgICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFRy
YW5zZm9ybShyZWZsZWN0aW9uKTsKICAgICAgICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxpY2FMYXll
cihncmFuZENoaWxkMVJlcGxpY2EucmVsZWFzZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZVRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5j
cHAKaW5kZXggMTViNTU0YTA2OTA1NzUyZjFiZGVmY2I4YWViYjg3MjhmZWVmYTU1YS4uYWQxYWU3
NGNhMTI1NzM2NGM5YzE1MzBlNDdlMjBiNjk0N2Y1MGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZl
VGVzdC5jcHAKQEAgLTMxLDE4ICszMSwxOCBAQAogCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4K
ICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIAotdm9pZCBleHBlY3RUcmFuc2xhdGVY
KGRvdWJsZSB0cmFuc2xhdGVYLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQor
dm9pZCBleHBlY3RUcmFuc2xhdGVYKGRvdWJsZSB0cmFuc2xhdGVYLCBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgbWF0cml4KQogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNv
bXBvc2VkVHlwZSBkZWNvbXBvc2VkVHlwZTsKLSAgICBtYXRyaXguZGVjb21wb3NlKGRlY29tcG9z
ZWRUeXBlKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEodHJhbnNsYXRlWCwgZGVjb21wb3NlZFR5cGUu
dHJhbnNsYXRlWCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHRyYW5zbGF0ZVgsIG1hdHJpeC5tNDEo
KSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgYSBmbG9hdCBhbmltYXRpb24gd2l0aCBvbmUga2V5ZnJh
bWUgd29ya3MgYXMgZXhwZWN0ZWQuCkBAIC0xOTEsMTAgKzE5MSw4IEBAIFRFU1QoQ0NLZXlmcmFt
ZWRBbmltYXRpb25DdXJ2ZVRlc3QsIFJlcGVhdGVkVHJhbnNmb3JtS2V5VGltZXMpCiAgICAgZXhw
ZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMC41LCBsYXllclNpemUpKTsKIAogICAg
IC8vIFRoZXJlIGlzIGEgZGlzY29udGludWl0eSBhdCAxLiBBbnkgdmFsdWUgYmV0d2VlbiA0IGFu
ZCA2IGlzIHZhbGlkLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHZhbHVlID0gY3VydmUtPmdl
dFZhbHVlKDEsIGxheWVyU2l6ZSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9z
ZWRUeXBlIGRlY29tcG9zZWRUeXBlOwotICAgIHZhbHVlLmRlY29tcG9zZShkZWNvbXBvc2VkVHlw
ZSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVjb21wb3NlZFR5cGUudHJhbnNsYXRlWCA+PSA0ICYmIGRl
Y29tcG9zZWRUeXBlLnRyYW5zbGF0ZVggPD0gNik7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggdmFsdWUgPSBjdXJ2ZS0+Z2V0VmFsdWUoMSwgbGF5ZXJTaXplKTsKKyAgICBFWFBFQ1RfVFJV
RSh2YWx1ZS5tNDEoKSA+PSA0ICYmIHZhbHVlLm00MSgpIDw9IDYpOwogCiAgICAgZXhwZWN0VHJh
bnNsYXRlWCg2LCBjdXJ2ZS0+Z2V0VmFsdWUoMS41LCBsYXllclNpemUpKTsKICAgICBleHBlY3RU
cmFuc2xhdGVYKDYsIGN1cnZlLT5nZXRWYWx1ZSgyLCBsYXllclNpemUpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJU
ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXJUZXN0LmNwcAppbmRleCA4MjcxOTRiYmM0MTUzNmYyZmFjMzQ5MWQzZDUxZTQ0ODhh
MTE0MmY2Li5kYmVkMDJjNzQ5YjllN2FkZTMzYTY1NWFkYWU0NmNhMjhhZWZiMDNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5p
bWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCkBAIC0zNSwxOCArMzUsMTggQEAKIAogI2luY2x1ZGUg
PGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwor
dXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIAot
dm9pZCBleHBlY3RUcmFuc2xhdGVYKGRvdWJsZSB0cmFuc2xhdGVYLCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgbWF0cml4KQordm9pZCBleHBlY3RUcmFuc2xhdGVYKGRvdWJsZSB0cmFuc2xh
dGVYLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogewotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXBvc2VkVHlwZTsKLSAgICBtYXRy
aXguZGVjb21wb3NlKGRlY29tcG9zZWRUeXBlKTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEodHJhbnNs
YXRlWCwgZGVjb21wb3NlZFR5cGUudHJhbnNsYXRlWCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHRy
YW5zbGF0ZVgsIG1hdHJpeC5tNDEoKSk7CiB9CiAKIFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRp
b24+IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQW5pbWF0aW9uQ3VydmU+IGN1
cnZlLCBpbnQgaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSBwcm9wZXJ0eSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0
LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcApp
bmRleCBmNTI1OWUxY2ZjYjg1M2M5NDIxMTM3ZTczZDZkYmI3MTNkNjNkNDE2Li44MjdjOWFkYWFl
MDc0NDU2YTlkMGMwMmI4NzM4Mzc0NzlmNjM2NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRlc3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFRFU1Qo
Q0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXllckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAg
ICAgSW50UmVjdCBhcmJpdHJhcnlJbnRSZWN0ID0gSW50UmVjdChhcmJpdHJhcnlJbnRQb2ludCwg
YXJiaXRyYXJ5SW50U2l6ZSk7CiAgICAgRmxvYXRSZWN0IGFyYml0cmFyeUZsb2F0UmVjdCA9IEZs
b2F0UmVjdChhcmJpdHJhcnlGbG9hdFBvaW50LCBGbG9hdFNpemUoMS4yMzRmLCA1LjY3OGYpKTsK
ICAgICBDb2xvciBhcmJpdHJhcnlDb2xvciA9IENvbG9yKDEwLCAyMCwgMzApOwotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGFyYml0cmFyeVRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBhcmJpdHJhcnlUcmFuc2Zvcm07CiAgICAgYXJiaXRyYXJ5VHJhbnNmb3JtLnNjYWxl
M2QoMC4xLCAwLjIsIDAuMyk7CiAgICAgV2ViRmlsdGVyT3BlcmF0aW9ucyBhcmJpdHJhcnlGaWx0
ZXJzOwogICAgIGFyYml0cmFyeUZpbHRlcnMuYXBwZW5kKFdlYkZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlT3BhY2l0eUZpbHRlcigwLjUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJJdGVyYXRvclRlc3QuY3BwCmluZGV4IGY1ZWFlN2Y4NGRkNTEyNWM4MDk5
NWI5Y2Q0MjliOTliY2JmNjkzMzQuLjEwNWM3MTg2ZTRjOTQzNWU4OWViMzMwY2EyNmM5MDE5YjJk
MjU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0
ZXJhdG9yVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVy
SXRlcmF0b3JUZXN0LmNwcApAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVy
VHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDsKIHVzaW5nIDo6dGVzdGluZzo6TW9jazsKIHVzaW5nIDo6dGVzdGluZzo6XzsK
IHVzaW5nIDo6dGVzdGluZzo6QXRMZWFzdDsKQEAgLTEzOSw3ICsxNDEsNyBAQCBURVNUKENDTGF5
ZXJJdGVyYXRvclRlc3QsIHNpbXBsZVRyZWUpCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGxheWVyTGlzdDsKICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290
TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2
KTsKIApAQCAtMTg2LDcgKzE4OCw3IEBAIFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgY29tcGxl
eFRyZWUpCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKICAg
ICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIuZ2V0KCkpOwogICAgIEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5
KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2KTsKIApAQCAtMjQ1LDcgKzI0Nyw3
IEBAIFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgY29tcGxleFRyZWVNdWx0aVN1cmZhY2UpCiAg
ICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKICAgICByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXll
ci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0LCBsYXllckxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMjU2KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29ydGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcAppbmRleCA2NWRiNTQ5YmFmODE0ZjBj
ZmYzNGUwNjg4YjM5YThjYTJkYTEyZDI5Li5kMjMxZTEyNTk3MjY4ZjFmOTE5OGI1YjhhYTA0ZDVi
NWRjMmI4NzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJTb3J0ZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5
ZXJTb3J0ZXJUZXN0LmNwcApAQCAtMzAsOCArMzAsMTAgQEAKICNpbmNsdWRlICJjYy9DQ01hdGhV
dGlsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIApAQCAtNDYsMTEgKzQ4LDExIEBAIFRFU1QoQ0NM
YXllclNvcnRlclRlc3QsIEJhc2ljT3ZlcmxhcCkKICAgICBmbG9hdCB3ZWlnaHQgPSAwOwogCiAg
ICAgLy8gVHJpdmlhbCB0ZXN0LCB3aXRoIG9uZSBsYXllciBkaXJlY3RseSBvYnNjdXJpbmcgdGhl
IG90aGVyLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG5lZzRUcmFuc2xhdGU7CisgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggbmVnNFRyYW5zbGF0ZTsKICAgICBuZWc0VHJhbnNsYXRlLnRy
YW5zbGF0ZTNkKDAsIDAsIC00KTsKICAgICBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlIGZyb250
KDIsIDIsIG5lZzRUcmFuc2xhdGUpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmVnNVRy
YW5zbGF0ZTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBuZWc1VHJhbnNsYXRlOwogICAg
IG5lZzVUcmFuc2xhdGUudHJhbnNsYXRlM2QoMCwgMCwgLTUpOwogICAgIENDTGF5ZXJTb3J0ZXI6
OkxheWVyU2hhcGUgYmFjaygyLCAyLCBuZWc1VHJhbnNsYXRlKTsKIApAQCAtNjMsNyArNjUsNyBA
QCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCBCYXNpY092ZXJsYXApCiAgICAgRVhQRUNUX0VRKDEs
IHdlaWdodCk7CiAKICAgICAvLyBPbmUgbGF5ZXIgdHJhbnNsYXRlZCBvZmYgdG8gdGhlIHJpZ2h0
LiBObyBvdmVybGFwIHNob3VsZCBiZSBkZXRlY3RlZC4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByaWdodFRyYW5zbGF0ZTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByaWdodFRyYW5z
bGF0ZTsKICAgICByaWdodFRyYW5zbGF0ZS50cmFuc2xhdGUzZCgxMCwgMCwgLTUpOwogICAgIEND
TGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgYmFja1JpZ2h0KDIsIDIsIHJpZ2h0VHJhbnNsYXRlKTsK
ICAgICBvdmVybGFwUmVzdWx0ID0gQ0NMYXllclNvcnRlcjo6Y2hlY2tPdmVybGFwKCZmcm9udCwg
JmJhY2tSaWdodCwgelRocmVzaG9sZCwgd2VpZ2h0KTsKQEAgLTgwLDE0ICs4MiwxNSBAQCBURVNU
KENDTGF5ZXJTb3J0ZXJUZXN0LCBSaWdodEFuZ2xlT3ZlcmxhcCkKICAgICBjb25zdCBmbG9hdCB6
VGhyZXNob2xkID0gMC4xZjsKICAgICBmbG9hdCB3ZWlnaHQgPSAwOwogCi0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggcGVyc3BlY3RpdmVNYXRyaXg7CiAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVj
dGl2ZSgxMDAwKTsKIAogICAgIC8vIFR3byBsYXllcnMgZm9ybWluZyBhIHJpZ2h0IGFuZ2xlIHdp
dGggYSBwZXJzcGVjdGl2ZSB2aWV3aW5nIHRyYW5zZm9ybS4KLSAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBsZWZ0RmFjZU1hdHJpeDsKLSAgICBsZWZ0RmFjZU1hdHJpeC5yb3RhdGUzZCgwLCAxLCAw
LCAtOTApLnRyYW5zbGF0ZVJpZ2h0M2QoLTEsIDAsIC01KTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBsZWZ0RmFjZU1hdHJpeDsKKyAgICBsZWZ0RmFjZU1hdHJpeC5yb3RhdGUzZCgwLCAx
LCAwLCAtOTApOworICAgIGxlZnRGYWNlTWF0cml4LnRyYW5zbGF0ZVJpZ2h0M2QoLTEsIDAsIC01
KTsKICAgICBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlIGxlZnRGYWNlKDIsIDIsIHBlcnNwZWN0
aXZlTWF0cml4ICogbGVmdEZhY2VNYXRyaXgpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZy
b250RmFjZU1hdHJpeDsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmcm9udEZhY2VNYXRy
aXg7CiAgICAgZnJvbnRGYWNlTWF0cml4LnRyYW5zbGF0ZTNkKDAsIDAsIC00KTsKICAgICBDQ0xh
eWVyU29ydGVyOjpMYXllclNoYXBlIGZyb250RmFjZSgyLCAyLCBwZXJzcGVjdGl2ZU1hdHJpeCAq
IGZyb250RmFjZU1hdHJpeCk7CiAKQEAgLTEwMSwxNyArMTA0LDE4IEBAIFRFU1QoQ0NMYXllclNv
cnRlclRlc3QsIEludGVyc2VjdGluZ0xheWVyT3ZlcmxhcCkKICAgICBjb25zdCBmbG9hdCB6VGhy
ZXNob2xkID0gMC4xZjsKICAgICBmbG9hdCB3ZWlnaHQgPSAwOwogCi0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
cGVyc3BlY3RpdmVNYXRyaXg7CiAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2
ZSgxMDAwKTsKIAogICAgIC8vIEludGVyc2VjdGluZyBsYXllcnMuIEFuIGV4cGxpY2l0IG9yZGVy
IHdpbGwgYmUgcmV0dXJuZWQgYmFzZWQgb24gcmVsYXRpdmUgegogICAgIC8vIHZhbHVlcyBhdCB0
aGUgb3ZlcmxhcHBpbmcgZmVhdHVyZXMgYnV0IHRoZSB3ZWlnaHQgcmV0dXJuZWQgc2hvdWxkIGJl
IHplcm8uCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZnJvbnRGYWNlTWF0cml4OworICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb250RmFjZU1hdHJpeDsKICAgICBmcm9udEZhY2VNYXRy
aXgudHJhbnNsYXRlM2QoMCwgMCwgLTQpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUg
ZnJvbnRGYWNlKDIsIDIsIHBlcnNwZWN0aXZlTWF0cml4ICogZnJvbnRGYWNlTWF0cml4KTsKIAot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRocm91Z2hNYXRyaXg7Ci0gICAgdGhyb3VnaE1hdHJp
eC5yb3RhdGUzZCgwLCAxLCAwLCA0NSkudHJhbnNsYXRlUmlnaHQzZCgwLCAwLCAtNCk7CisgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdGhyb3VnaE1hdHJpeDsKKyAgICB0aHJvdWdoTWF0cml4
LnJvdGF0ZTNkKDAsIDEsIDAsIDQ1KTsKKyAgICB0aHJvdWdoTWF0cml4LnRyYW5zbGF0ZVJpZ2h0
M2QoMCwgMCwgLTQpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgcm90YXRlZEZhY2Uo
MiwgMiwgcGVyc3BlY3RpdmVNYXRyaXggKiB0aHJvdWdoTWF0cml4KTsKICAgICBvdmVybGFwUmVz
dWx0ID0gQ0NMYXllclNvcnRlcjo6Y2hlY2tPdmVybGFwKCZmcm9udEZhY2UsICZyb3RhdGVkRmFj
ZSwgelRocmVzaG9sZCwgd2VpZ2h0KTsKICAgICBFWFBFQ1RfTkUoQ0NMYXllclNvcnRlcjo6Tm9u
ZSwgb3ZlcmxhcFJlc3VsdCk7CkBAIC0xMzYsMTUgKzE0MCwxNSBAQCBURVNUKENDTGF5ZXJTb3J0
ZXJUZXN0LCBMYXllcnNBdEFuZ2xlT3ZlcmxhcCkKICAgICAvLyBDIGlzIGluIGZyb250IG9mIEEg
YW5kIGJlaGluZCBCIChub3Qgd2hhdCB5b3UnZCBleHBlY3QgYnkgY29tcGFyaW5nIGNlbnRlcnMp
LgogICAgIC8vIEEgYW5kIEIgZG9uJ3Qgb3ZlcmxhcCwgc28gdGhleSdyZSBpbmNvbXBhcmFibGUu
CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1BOworICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHRyYW5zZm9ybUE7CiAgICAgdHJhbnNmb3JtQS50cmFuc2xhdGUzZCgtNiwg
MCwgMSk7CiAgICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZSBsYXllckEoOCwgMjAsIHRyYW5z
Zm9ybUEpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtQjsKKyAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm1COwogICAgIHRyYW5zZm9ybUIudHJhbnNsYXRl
M2QoNiwgMCwgLTEpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgbGF5ZXJCKDgsIDIw
LCB0cmFuc2Zvcm1CKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybUM7Cisg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtQzsKICAgICB0cmFuc2Zvcm1DLnJv
dGF0ZTNkKDAsIDEsIDAsIDQwKTsKICAgICBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlIGxheWVy
Qyg4LCAyMCwgdHJhbnNmb3JtQyk7CiAKQEAgLTE2NywxMCArMTcxLDEwIEBAIFRFU1QoQ0NMYXll
clNvcnRlclRlc3QsIExheWVyc1VuZGVyUGF0aG9sb2dpY2FsUGVyc3BlY3RpdmVUcmFuc2Zvcm0p
CiAgICAgLy8gd2hlcmUgdyA8IDAuIElmIHRoZSBjb2RlIHVzZXMgdGhlIGludmFsaWQgdmFsdWUs
IGl0IHdpbGwgdGhpbmsgdGhhdCBhIGxheWVyIGhhcwogICAgIC8vIGRpZmZlcmVudCBib3VuZHMg
dGhhbiBpdCByZWFsbHkgZG9lcywgd2hpY2ggY2FuIGNhdXNlIHRoaW5ncyB0byBzb3J0IGluY29y
cmVjdGx5LgogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7Cisg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CiAgICAgcGVyc3Bl
Y3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZSgxKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybUE7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtQTsK
ICAgICB0cmFuc2Zvcm1BLnRyYW5zbGF0ZTNkKC0xNSwgMCwgLTIpOwogICAgIENDTGF5ZXJTb3J0
ZXI6OkxheWVyU2hhcGUgbGF5ZXJBKDEwLCAxMCwgcGVyc3BlY3RpdmVNYXRyaXggKiB0cmFuc2Zv
cm1BKTsKIApAQCAtMTc4LDcgKzE4Miw3IEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIExheWVy
c1VuZGVyUGF0aG9sb2dpY2FsUGVyc3BlY3RpdmVUcmFuc2Zvcm0pCiAgICAgLy8gdmlzaWJsZSBv
biB0aGUgbGVmdCBoYWxmIG9mIHRoZSBwcm9qZWN0aW9uIHBsYW5lLCBpbiBmcm9udCBvZiBsYXll
ckEuIFdoZW4gaXQgaXMKICAgICAvLyBub3QgY2xpcHBlZCwgaXRzIGJvdW5kcyB3aWxsIGFjdHVh
bGx5IGluY29ycmVjdGx5IGFwcGVhciBtdWNoIHNtYWxsZXIgYW5kIHRoZQogICAgIC8vIGNvcnJl
Y3Qgc29ydGluZyBkZXBlbmRlbmN5IHdpbGwgbm90IGJlIGZvdW5kLgotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybUI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNm
b3JtQjsKICAgICB0cmFuc2Zvcm1CLnRyYW5zbGF0ZTNkKDAsIDAsIDAuNyk7CiAgICAgdHJhbnNm
b3JtQi5yb3RhdGUzZCgwLCA0NSwgMCk7CiAgICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZSBs
YXllckIoMTAsIDEwLCBwZXJzcGVjdGl2ZU1hdHJpeCAqIHRyYW5zZm9ybUIpOwpAQCAtMjE2LDkg
KzIyMCw5IEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQ
cmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICBPd25QdHI8Q0NMYXllckltcGw+IGxheWVyNCA9IEND
TGF5ZXJJbXBsOjpjcmVhdGUoNCk7CiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcjUgPSBD
Q0xheWVySW1wbDo6Y3JlYXRlKDUpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggQmVoaW5k
TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IEJlaGluZE1hdHJpeDsKICAgICBC
ZWhpbmRNYXRyaXgudHJhbnNsYXRlM2QoMCwgMCwgMik7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggRnJvbnRNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggRnJvbnRNYXRyaXg7
CiAgICAgRnJvbnRNYXRyaXgudHJhbnNsYXRlM2QoMCwgMCwgMSk7CiAKICAgICBsYXllcjEtPnNl
dEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdC5jcHAKaW5kZXggMWMwMWEw
Y2Q0ODUzYTRhM2Q5NGNjMjEyOWQzN2FlZjY4MjcxN2QzZS4uZmNlOTA0NmM3ZWIwYzUzNjg4Nzli
NzI3OWVmY2RhYzZkNzhmZWFjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QuY3BwCkBAIC0yOSwyMCArMjks
MjEgQEAKICNpbmNsdWRlICJDQ0FuaW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ0xh
eWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNsdWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVk
ZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1P
cGVyYXRpb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgog
I2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAj
aW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0VGVzdHM7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBu
YW1lc3BhY2UgewogCi12b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoTGF5ZXJDaHJv
bWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgYW5jaG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91
bmRzLCBib29sIHByZXNlcnZlczNEKQordm9pZCBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0s
IGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvciwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNv
bnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBwcmVzZXJ2ZXMzRCkKIHsKICAgICBsYXllci0+c2V0
VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKHN1
YmxheWVyVHJhbnNmb3JtKTsKQEAgLTU0LDE2ICs1NSwxNiBAQCB2b2lkIHNldExheWVyUHJvcGVy
dGllc0ZvclRlc3RpbmcoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cgogCiB2b2lkIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHko
TGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiBkdW1teVJlbmRlclN1cmZhY2VM
YXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJM
aXN0OwogICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogICAgIENDTGF5ZXJUcmVl
SG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXll
ciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIGR1bW15UmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXllckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwog
fQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW1vdmUzRENvbXBvbmVudE9mTWF0cml4KGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQpCitXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW1v
dmUzRENvbXBvbmVudE9mTWF0cml4KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQp
CiB7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmV0ID0gbWF0OworICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHJldCA9IG1hdDsKICAgICByZXQuc2V0TTEzKDApOwogICAgIHJldC5zZXRN
MjMoMCk7CiAgICAgcmV0LnNldE0zMSgwKTsKQEAgLTk4LDcgKzk5LDcgQEAgVEVTVChDQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yTm9PcExheWVyKQogICAgIHBh
cmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAgIGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxkKTsK
IAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIHNldExheWVyUHJvcGVydGllc0Zv
clRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMC4wZiwgMC4wZiksIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEludFNpemUoMCwg
MCksIGZhbHNlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiks
IEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEludFNpemUoMCwgMCksIGZhbHNlKTsKICAgICBzZXRM
YXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGdyYW5kQ2hpbGQuZ2V0KCksIGlkZW50aXR5TWF0cml4
LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLjBmLCAwLjBmKSwgRmxvYXRQb2ludCgwLjBm
LCAwLjBmKSwgSW50U2l6ZSgwLCAwKSwgZmFsc2UpOwpAQCAtMTIwLDEyICsxMjEsMTIgQEAgVEVT
VChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlTGF5
ZXIpCiAgICAgLy8gdmFsdWUgb2YgTGF5ZXJDaHJvbWl1bTo6cG9zaXRpb24oKSBjaGFuZ2VzIGlm
IHRoZSBhbmNob3IgY2hhbmdlcywgZXZlbiB0aG91Z2ggdGhlIGxheWVyIGlzIG5vdCBhY3R1YWxs
eSBsb2NhdGVkIGluIGEKICAgICAvLyBkaWZmZXJlbnQgcG9zaXRpb24uIFdoZW4gd2UgaW5pdGlh
bGl6ZSBsYXllcnMgZm9yIHRlc3RpbmcgaGVyZSwgd2UgbmVlZCB0byBpbml0aWFsaXplIHRoYXQg
dW5pbnR1dGl2ZSBwb3NpdGlvbiB2YWx1ZS4KIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBsYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0
ZSgpOwogICAgIGxheWVyLT5jcmVhdGVSZW5kZXJTdXJmYWNlKCk7CiAKICAgICAvLyBDYXNlIDE6
IHNldHRpbmcgdGhlIHN1YmxheWVyIHRyYW5zZm9ybSBzaG91bGQgbm90IGFmZmVjdCB0aGlzIGxh
eWVyJ3MgZHJhdyB0cmFuc2Zvcm0gb3Igc2NyZWVuLXNwYWNlIHRyYW5zZm9ybS4KLSAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBhcmJpdHJhcnlUcmFuc2xhdGlvbjsKKyAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBhcmJpdHJhcnlUcmFuc2xhdGlvbjsKICAgICBhcmJpdHJhcnlUcmFuc2xhdGlv
bi50cmFuc2xhdGUoMTAuMCwgMjAuMCk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGFyYml0cmFyeVRyYW5zbGF0aW9uLCBGbG9h
dFBvaW50KDAuMGYsIDAuMGYpLCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBJbnRTaXplKDAsIDAp
LCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShsYXllci5nZXQoKSk7CkBAIC0xMzQsNyArMTM1LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlTGF5ZXIpCiAKICAgICAvLyBDYXNl
IDI6IHNldHRpbmcgdGhlIGJvdW5kcyBvZiB0aGUgbGF5ZXIgc2hvdWxkIHJlc3VsdCBpbiBhIGRy
YXcgdHJhbnNmb3JtIHRoYXQgdHJhbnNsYXRlcyB0byBoYWxmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0
LgogICAgIC8vICAgICAgICAgVGhlIHNjcmVlbi1zcGFjZSB0cmFuc2Zvcm0gc2hvdWxkIHJlbWFp
biBhcyB0aGUgaWRlbnRpdHksIGJlY2F1c2UgaXQgZG9lcyBub3QgZGVhbCB3aXRoIHRyYW5zZm9y
bWluZyB0by9mcm9tIHRoZSBjZW50ZXIgb2YgdGhlIGxheWVyLgotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zbGF0aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNsYXRpb25Ub0NlbnRlcjsKICAgICB0cmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg1
LjAsIDYuMCk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBG
bG9hdFBvaW50KDAuMGYsIDAuMGYpLCBJbnRTaXplKDEwLCAxMiksIGZhbHNlKTsKICAgICBleGVj
dXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KGxheWVyLmdldCgpKTsKQEAg
LTE0OCw3ICsxNDksNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRy
YW5zZm9ybXNGb3JTaW5nbGVMYXllcikKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklY
X0VRKGlkZW50aXR5TWF0cml4LCBsYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAg
ICAvLyBDYXNlIDQ6IEEgY2hhbmdlIGluICJhY3R1YWwiIHBvc2l0aW9uIGFmZmVjdHMgYm90aCB0
aGUgZHJhdyB0cmFuc2Zvcm0gYW5kIHNjcmVlbiBzcGFjZSB0cmFuc2Zvcm0uCi0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggcG9zaXRpb25UcmFuc2Zvcm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggcG9zaXRpb25UcmFuc2Zvcm07CiAgICAgcG9zaXRpb25UcmFuc2Zvcm0udHJhbnNsYXRl
KDAuMCwgMS4yKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgp
LCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMC4yNWYsIDAuMjVm
KSwgRmxvYXRQb2ludCgyLjVmLCA0LjJmKSwgSW50U2l6ZSgxMCwgMTIpLCBmYWxzZSk7CiAgICAg
ZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShsYXllci5nZXQoKSk7
CkBAIC0xNTcsNyArMTU4LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJp
ZnlUcmFuc2Zvcm1zRm9yU2luZ2xlTGF5ZXIpCiAKICAgICAvLyBDYXNlIDU6IEluIHRoZSBjb3Jy
ZWN0IHNlcXVlbmNlIG9mIHRyYW5zZm9ybXMsIHRoZSBsYXllciB0cmFuc2Zvcm0gc2hvdWxkIHBy
ZS1tdWx0aXBseSB0aGUgdHJhbnNsYXRpb25Ub0NlbnRlci4gVGhpcyBpcyBlYXNpbHkgdGVzdGVk
IGJ5CiAgICAgLy8gICAgICAgICB1c2luZyBhIHNjYWxlIHRyYW5zZm9ybSwgYmVjYXVzZSBzY2Fs
ZSBhbmQgdHJhbnNsYXRpb24gYXJlIG5vdCBjb21tdXRhdGl2ZS4KLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBsYXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybTsKICAgICBsYXllclRyYW5zZm9ybS5zY2FsZTNkKDIuMCwgMi4wLCAxLjApOwog
ICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNm
b3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLjBmLCAwLjBmKSwgRmxvYXRQb2ludCgw
LjBmLCAwLjBmKSwgSW50U2l6ZSgxMCwgMTIpLCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0
ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShsYXllci5nZXQoKSk7CkBAIC0xNjUsOSArMTY2
LDkgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9y
U2luZ2xlTGF5ZXIpCiAgICAgRVhQRUNUX1RSQU5TRk9STUFUSU9OX01BVFJJWF9FUShsYXllclRy
YW5zZm9ybSwgbGF5ZXItPnNjcmVlblNwYWNlVHJhbnNmb3JtKCkpOwogCiAgICAgLy8gQ2FzZSA2
OiBUaGUgbGF5ZXIgdHJhbnNmb3JtIHNob3VsZCBvY2N1ciB3aXRoIHJlc3BlY3QgdG8gdGhlIGFu
Y2hvciBwb2ludC4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2xhdGlvblRvQW5jaG9y
OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zbGF0aW9uVG9BbmNob3I7CiAgICAg
dHJhbnNsYXRpb25Ub0FuY2hvci50cmFuc2xhdGUoNS4wLCAwLjApOwotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGV4cGVjdGVkUmVzdWx0ID0gdHJhbnNsYXRpb25Ub0FuY2hvciAqIGxheWVyVHJh
bnNmb3JtICogdHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNlKCk7CisgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZXhwZWN0ZWRSZXN1bHQgPSB0cmFuc2xhdGlvblRvQW5jaG9yICogbGF5ZXJU
cmFuc2Zvcm0gKiB0cmFuc2xhdGlvblRvQW5jaG9yLmludmVyc2UoKTsKICAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBsYXllclRyYW5zZm9ybSwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMC41ZiwgMC4wZiksIEZsb2F0UG9pbnQoNS4wZiwgMC4wZiksIElu
dFNpemUoMTAsIDEyKSwgZmFsc2UpOwogICAgIGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkobGF5ZXIuZ2V0KCkpOwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9N
QVRSSVhfRVEoZXhwZWN0ZWRSZXN1bHQgKiB0cmFuc2xhdGlvblRvQ2VudGVyLCBsYXllci0+ZHJh
d1RyYW5zZm9ybSgpKTsKQEAgLTE4NSw3ICsxODYsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVMYXllcikKIAogVEVTVChDQ0xheWVy
VHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5KQog
ewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJv
bWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTk0LDcg
KzE5NSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jt
c0ZvclNpbXBsZUhpZXJhcmNoeSkKICAgICBjaGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CiAK
ICAgICAvLyBDYXNlIDE6IHBhcmVudCdzIGFuY2hvclBvaW50IHNob3VsZCBub3QgYWZmZWN0IGNo
aWxkIG9yIGdyYW5kQ2hpbGQuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2xh
dGlvblRvQ2VudGVyLCBncmFuZENoaWxkVHJhbnNsYXRpb25Ub0NlbnRlcjsKKyAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXIsIGdyYW5kQ2hpbGRUcmFu
c2xhdGlvblRvQ2VudGVyOwogICAgIGNoaWxkVHJhbnNsYXRpb25Ub0NlbnRlci50cmFuc2xhdGUo
OC4wLCA5LjApOwogICAgIGdyYW5kQ2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSgz
OC4wLCAzOS4wKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQo
KSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAuMjVmLCAwLjI1
ZiksIEZsb2F0UG9pbnQoMi41ZiwgMy4wZiksIEludFNpemUoMTAsIDEyKSwgZmFsc2UpOwpAQCAt
MjA3LDcgKzIwOCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJh
bnNmb3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKGlkZW50aXR5TWF0cml4LCBncmFuZENoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgp
KTsKIAogICAgIC8vIENhc2UgMjogcGFyZW50J3MgcG9zaXRpb24gYWZmZWN0cyBjaGlsZCBhbmQg
Z3JhbmRDaGlsZC4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRQb3NpdGlvblRyYW5z
Zm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRQb3NpdGlvblRyYW5zZm9y
bTsKICAgICBwYXJlbnRQb3NpdGlvblRyYW5zZm9ybS50cmFuc2xhdGUoMC4wLCAxLjIpOwogICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMC4yNWYsIDAuMjVmKSwgRmxvYXRQb2ludCgy
LjVmLCA0LjJmKSwgSW50U2l6ZSgxMCwgMTIpLCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBJbnRTaXpl
KDE2LCAxOCksIGZhbHNlKTsKQEAgLTIxOSwxMSArMjIwLDExIEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKICAgICBF
WFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKHBhcmVudFBvc2l0aW9uVHJhbnNmb3JtLCBn
cmFuZENoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIENhc2UgMzogcGFy
ZW50J3MgbG9jYWwgdHJhbnNmb3JtIGFmZmVjdHMgY2hpbGQgYW5kIGdyYW5kY2hpbGQKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRMYXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBwYXJlbnRMYXllclRyYW5zZm9ybTsKICAgICBwYXJlbnRMYXllclRyYW5z
Zm9ybS5zY2FsZTNkKDIuMCwgMi4wLCAxLjApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBh
cmVudFRyYW5zbGF0aW9uVG9BbmNob3I7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFy
ZW50VHJhbnNsYXRpb25Ub0FuY2hvcjsKICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yLnRy
YW5zbGF0ZSgyLjUsIDMuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50Q29tcG9z
aXRlVHJhbnNmb3JtID0gcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvciAqIHBhcmVudExheWVyVHJh
bnNmb3JtICogcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNlKCk7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggcGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtID0gcGFyZW50VHJhbnNs
YXRpb25Ub0FuY2hvciAqIHBhcmVudExheWVyVHJhbnNmb3JtICogcGFyZW50VHJhbnNsYXRpb25U
b0FuY2hvci5pbnZlcnNlKCk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJl
bnQuZ2V0KCksIHBhcmVudExheWVyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLjI1ZiwgMC4yNWYpLCBGbG9hdFBvaW50KDIuNWYsIDMuMGYpLCBJbnRTaXplKDEwLCAxMiks
IGZhbHNlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBp
ZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEZs
b2F0UG9pbnQoMC4wZiwgMC4wZiksIEludFNpemUoMTYsIDE4KSwgZmFsc2UpOwogICAgIHNldExh
eWVyUHJvcGVydGllc0ZvclRlc3RpbmcoZ3JhbmRDaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBGbG9hdFBvaW50KDAuMGYs
IDAuMGYpLCBJbnRTaXplKDc2LCA3OCksIGZhbHNlKTsKQEAgLTIzNywxNCArMjM4LDE0IEBAIFRF
U1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbXBsZUhp
ZXJhcmNoeSkKICAgICAvLyAgICAgICAgIHNjYWxpbmcgaXMgdXNlZCBoZXJlIGFnYWluIHNvIHRo
YXQgdGhlIGNvcnJlY3Qgc2VxdWVuY2Ugb2YgdHJhbnNmb3JtcyBpcyBwcm9wZXJseSB0ZXN0ZWQu
CiAgICAgLy8gICAgICAgICBOb3RlIHRoYXQgcHJlc2VydmVzM0QgaXMgZmFsc2UsIGJ1dCB0aGUg
c3VibGF5ZXIgbWF0cml4IHNob3VsZCByZXRhaW4gaXRzIDNEIHByb3BlcnRpZXMgd2hlbiBnaXZl
biB0byBjaGlsZC4KICAgICAvLyAgICAgICAgIEJ1dCB0aGVuLCB0aGUgY2hpbGQgYWxzbyBkb2Vz
IG5vdCBwcmVzZXJ2ZTNELiBXaGVuIGl0IGdpdmVzIGl0cyBoaWVyYXJjaHkgdG8gdGhlIGdyYW5k
Q2hpbGQsIGl0IHNob3VsZCBiZSBmbGF0dGVuZWQgdG8gMkQuCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
cGFyZW50U3VibGF5ZXJNYXRyaXg7CiAgICAgcGFyZW50U3VibGF5ZXJNYXRyaXguc2NhbGUzZCgx
MC4wLCAxMC4wLCAzLjMpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0
aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRp
b25Ub0NlbnRlcjsKICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg1LjAs
IDYuMCk7CiAgICAgLy8gU3VibGF5ZXIgbWF0cml4IGlzIGFwcGxpZWQgdG8gdGhlIGNlbnRlciBv
ZiB0aGUgcGFyZW50IGxheWVyLgogICAgIHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSA9IHBhcmVu
dFRyYW5zbGF0aW9uVG9BbmNob3IgKiBwYXJlbnRMYXllclRyYW5zZm9ybSAqIHBhcmVudFRyYW5z
bGF0aW9uVG9BbmNob3IuaW52ZXJzZSgpCiAgICAgICAgICAgICAqIHBhcmVudFRyYW5zbGF0aW9u
VG9DZW50ZXIgKiBwYXJlbnRTdWJsYXllck1hdHJpeCAqIHBhcmVudFRyYW5zbGF0aW9uVG9DZW50
ZXIuaW52ZXJzZSgpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZsYXR0ZW5lZENvbXBvc2l0
ZVRyYW5zZm9ybSA9IHJlbW92ZTNEQ29tcG9uZW50T2ZNYXRyaXgocGFyZW50Q29tcG9zaXRlVHJh
bnNmb3JtKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBmbGF0dGVuZWRDb21wb3NpdGVU
cmFuc2Zvcm0gPSByZW1vdmUzRENvbXBvbmVudE9mTWF0cml4KHBhcmVudENvbXBvc2l0ZVRyYW5z
Zm9ybSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIHBh
cmVudExheWVyVHJhbnNmb3JtLCBwYXJlbnRTdWJsYXllck1hdHJpeCwgRmxvYXRQb2ludCgwLjI1
ZiwgMC4yNWYpLCBGbG9hdFBvaW50KDIuNWYsIDMuMGYpLCBJbnRTaXplKDEwLCAxMiksIGZhbHNl
KTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEZsb2F0UG9p
bnQoMC4wZiwgMC4wZiksIEludFNpemUoMTYsIDE4KSwgZmFsc2UpOwogICAgIHNldExheWVyUHJv
cGVydGllc0ZvclRlc3RpbmcoZ3JhbmRDaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50
aXR5TWF0cml4LCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBGbG9hdFBvaW50KDAuMGYsIDAuMGYp
LCBJbnRTaXplKDc2LCA3OCksIGZhbHNlKTsKQEAgLTI3OCwxOCArMjc5LDE4IEBAIFRFU1QoQ0NM
YXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZVJlbmRlclN1
cmZhY2UpCiAgICAgLy8gQ2hpbGQgaXMgc2V0IHVwIHNvIHRoYXQgYSBuZXcgcmVuZGVyIHN1cmZh
Y2Ugc2hvdWxkIGJlIGNyZWF0ZWQuCiAgICAgY2hpbGQtPnNldE9wYWNpdHkoMC41Zik7CiAKLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBwYXJlbnRMYXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBpZGVudGl0eU1hdHJpeDsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRMYXll
clRyYW5zZm9ybTsKICAgICBwYXJlbnRMYXllclRyYW5zZm9ybS5zY2FsZTNkKDIuMCwgMi4wLCAx
LjApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3I7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvcjsK
ICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yLnRyYW5zbGF0ZSgyLjUsIDMuMCk7Ci0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7CisgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7CiAgICAgcGFyZW50U3VibGF5ZXJN
YXRyaXguc2NhbGUzZCgxMC4wLCAxMC4wLCAzLjMpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
cGFyZW50VHJhbnNsYXRpb25Ub0NlbnRlcjsKICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVy
LnRyYW5zbGF0ZSg1LjAsIDYuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50Q29t
cG9zaXRlVHJhbnNmb3JtID0gcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvciAqIHBhcmVudExheWVy
VHJhbnNmb3JtICogcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNlKCkKKyAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0gPSBwYXJlbnRUcmFu
c2xhdGlvblRvQW5jaG9yICogcGFyZW50TGF5ZXJUcmFuc2Zvcm0gKiBwYXJlbnRUcmFuc2xhdGlv
blRvQW5jaG9yLmludmVyc2UoKQogICAgICAgICAgICAgKiBwYXJlbnRUcmFuc2xhdGlvblRvQ2Vu
dGVyICogcGFyZW50U3VibGF5ZXJNYXRyaXggKiBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyLmlu
dmVyc2UoKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zbGF0aW9uVG9DZW50
ZXI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2xhdGlvblRvQ2VudGVy
OwogICAgIGNoaWxkVHJhbnNsYXRpb25Ub0NlbnRlci50cmFuc2xhdGUoOC4wLCA5LjApOwogCiAg
ICAgLy8gQ2hpbGQncyByZW5kZXIgc3VyZmFjZSBzaG91bGQgbm90IGV4aXN0IHlldC4KQEAgLTMz
MSwyMiArMzMyLDIyIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJh
bnNmb3Jtc0ZvclJlcGxpY2EpCiAgICAgLy8gQ2hpbGQgaXMgc2V0IHVwIHNvIHRoYXQgYSBuZXcg
cmVuZGVyIHN1cmZhY2Ugc2hvdWxkIGJlIGNyZWF0ZWQuCiAgICAgY2hpbGQtPnNldE9wYWNpdHko
MC41Zik7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRMYXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBwYXJlbnRMYXllclRyYW5zZm9ybTsKICAgICBwYXJlbnRMYXllclRyYW5zZm9ybS5zY2FsZTNk
KDIuMCwgMi4wLCAxLjApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0
aW9uVG9BbmNob3I7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRp
b25Ub0FuY2hvcjsKICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yLnRyYW5zbGF0ZSgyLjUs
IDMuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7Cisg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7CiAgICAgcGFy
ZW50U3VibGF5ZXJNYXRyaXguc2NhbGUzZCgxMC4wLCAxMC4wLCAzLjMpOwotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRpb25Ub0NlbnRlcjsKICAgICBwYXJlbnRUcmFuc2xh
dGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg1LjAsIDYuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtID0gcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvciAq
IHBhcmVudExheWVyVHJhbnNmb3JtICogcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNl
KCkKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0g
PSBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yICogcGFyZW50TGF5ZXJUcmFuc2Zvcm0gKiBwYXJl
bnRUcmFuc2xhdGlvblRvQW5jaG9yLmludmVyc2UoKQogICAgICAgICAgICAgKiBwYXJlbnRUcmFu
c2xhdGlvblRvQ2VudGVyICogcGFyZW50U3VibGF5ZXJNYXRyaXggKiBwYXJlbnRUcmFuc2xhdGlv
blRvQ2VudGVyLmludmVyc2UoKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5z
bGF0aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2xh
dGlvblRvQ2VudGVyOwogICAgIGNoaWxkVHJhbnNsYXRpb25Ub0NlbnRlci50cmFuc2xhdGUoOC4w
LCA5LjApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FMYXllclRyYW5zZm9ybTsK
KyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhTGF5ZXJUcmFuc2Zvcm07CiAgICAg
cmVwbGljYUxheWVyVHJhbnNmb3JtLnNjYWxlM2QoMy4wLCAzLjAsIDEuMCk7Ci0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggcmVwbGljYUNvbXBvc2l0ZVRyYW5zZm9ybSA9IHBhcmVudENvbXBvc2l0
ZVRyYW5zZm9ybSAqIHJlcGxpY2FMYXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCByZXBsaWNhQ29tcG9zaXRlVHJhbnNmb3JtID0gcGFyZW50Q29tcG9zaXRlVHJhbnNm
b3JtICogcmVwbGljYUxheWVyVHJhbnNmb3JtOwogCiAgICAgLy8gQ2hpbGQncyByZW5kZXIgc3Vy
ZmFjZSBzaG91bGQgbm90IGV4aXN0IHlldC4KICAgICBBU1NFUlRfRkFMU0UoY2hpbGQtPnJlbmRl
clN1cmZhY2UoKSk7CkBAIC00MDgsMjAgKzQwOSwyMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogICAg
IC8vCiAgICAgLy8geCBjb21wb25lbnQgdGVzdHMgdGhhdCBsYXllclRyYW5zZm9ybSBhbmQgc3Vi
bGF5ZXJUcmFuc2Zvcm0gYXJlIGRvbmUgaW4gdGhlIHJpZ2h0IG9yZGVyICh0cmFuc2xhdGlvbiBh
bmQgc2NhbGUgYXJlIG5vbmNvbW11dGF0aXZlKS4KICAgICAvLyB5IGNvbXBvbmVudCBoYXMgYSB0
cmFuc2xhdGlvbiBieSAxLjAgZm9yIGV2ZXJ5IGFuY2VzdG9yLCB3aGljaCBpbmRpY2F0ZXMgdGhl
ICJkZXB0aCIgb2YgdGhlIGxheWVyIGluIHRoZSBoaWVyYXJjaHkuCi0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNsYXRpb25Ub0FuY2hvcjsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0cmFuc2xhdGlvblRvQW5jaG9yOwogICAgIHRyYW5zbGF0aW9uVG9BbmNob3IudHJhbnNsYXRl
KDIuNSwgMC4wKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2xhdGlvblRvQ2VudGVy
OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zbGF0aW9uVG9DZW50ZXI7CiAgICAg
dHJhbnNsYXRpb25Ub0NlbnRlci50cmFuc2xhdGUoNS4wLCA1LjApOwotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxh
eWVyVHJhbnNmb3JtOwogICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgxLjAsIDEuMCk7Ci0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJUcmFuc2Zvcm07CisgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggc3VibGF5ZXJUcmFuc2Zvcm07CiAgICAgc3VibGF5ZXJUcmFuc2Zvcm0u
c2NhbGUzZCgxMC4wLCAxLjAsIDEuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGlj
YUxheWVyVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FMYXll
clRyYW5zZm9ybTsKICAgICByZXBsaWNhTGF5ZXJUcmFuc2Zvcm0uc2NhbGUzZCgtMi4wLCA1LjAs
IDEuMCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBBID0gdHJhbnNsYXRpb25Ub0FuY2hv
ciAqIGxheWVyVHJhbnNmb3JtICogdHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNlKCk7Ci0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggQiA9IHRyYW5zbGF0aW9uVG9DZW50ZXIgKiBzdWJsYXllclRy
YW5zZm9ybSAqIHRyYW5zbGF0aW9uVG9DZW50ZXIuaW52ZXJzZSgpOwotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IFIgPSBBICogdHJhbnNsYXRpb25Ub0FuY2hvciAqIHJlcGxpY2FMYXllclRyYW5z
Zm9ybSAqIHRyYW5zbGF0aW9uVG9BbmNob3IuaW52ZXJzZSgpOworICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IEEgPSB0cmFuc2xhdGlvblRvQW5jaG9yICogbGF5ZXJUcmFuc2Zvcm0gKiB0cmFu
c2xhdGlvblRvQW5jaG9yLmludmVyc2UoKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBC
ID0gdHJhbnNsYXRpb25Ub0NlbnRlciAqIHN1YmxheWVyVHJhbnNmb3JtICogdHJhbnNsYXRpb25U
b0NlbnRlci5pbnZlcnNlKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggUiA9IEEgKiB0
cmFuc2xhdGlvblRvQW5jaG9yICogcmVwbGljYUxheWVyVHJhbnNmb3JtICogdHJhbnNsYXRpb25U
b0FuY2hvci5pbnZlcnNlKCk7CiAKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBh
cmVudC5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIHN1YmxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50
KDAuMjVmLCAwLjBmKSwgRmxvYXRQb2ludCgyLjVmLCAwLjBmKSwgSW50U2l6ZSgxMCwgMTApLCBm
YWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhyZW5kZXJTdXJmYWNlMS5n
ZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIHN1YmxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDAuMjVm
LCAwLjBmKSwgRmxvYXRQb2ludCgyLjVmLCAwLjBmKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7
CkBAIC01MzEsNyArNTMyLDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJp
ZnlSZW5kZXJTdXJmYWNlTGlzdEZvckNsaXBMYXllcikKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAgIHJlbmRlclN1cmZhY2UxLT5zZXRPcGFj
aXR5KDAuOWYpOwogCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRy
aXg7CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhyZW5kZXJTdXJmYWNlMS5nZXQoKSwgaWRl
bnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50Ojp6ZXJvKCksIEZsb2F0UG9p
bnQ6Onplcm8oKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50Ojp6ZXJvKCksIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSgxMCwgMTAp
LCBmYWxzZSk7CiAKQEAgLTU2MCw3ICs1NjEsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1v
blRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VMaXN0Rm9yVHJhbnNwYXJlbnRDaGlsZCkKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNoaWxkID0gYWRvcHRS
ZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAgIHJlbmRl
clN1cmZhY2UxLT5zZXRPcGFjaXR5KDApOwogCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaWRl
bnRpdHlNYXRyaXg7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhyZW5kZXJTdXJm
YWNlMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50Ojp6
ZXJvKCksIEZsb2F0UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CiAgICAg
c2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50Ojp6ZXJvKCksIEZsb2F0UG9pbnQ6Onplcm8oKSwg
SW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CiAKQEAgLTU4OCw3ICs1ODksNyBAQCBURVNUKENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUZvcmNlUmVuZGVyU3VyZmFjZSkKICAgICBSZWZQ
dHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNoaWxkID0gYWRvcHRSZWYo
bmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkpOwogICAgIHJlbmRlclN1
cmZhY2UxLT5zZXRGb3JjZVJlbmRlclN1cmZhY2UodHJ1ZSk7CiAKLSAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5n
KHJlbmRlclN1cmZhY2UxLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQ6Onplcm8oKSwgRmxvYXRQb2ludDo6emVybygpLCBJbnRTaXplKDEwLCAxMCksIGZh
bHNlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQ6Onplcm8oKSwgRmxvYXRQb2lu
dDo6emVybygpLCBJbnRTaXplKDEwLCAxMCksIGZhbHNlKTsKIApAQCAtNjI4LDcgKzYyOSw3IEBA
IFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5Q2xpcFJlY3RDdWxsc1JlbmRl
clN1cmZhY2VzKQogICAgIC8vIGNsaXBSZWN0LCBhbmQgdGhleSBzaG91bGQgbmV2ZXIgZ2V0IHNj
aGVkdWxlZCBvbiB0aGUgbGlzdCBvZiByZW5kZXJTdXJmYWNlcy4KICAgICAvLwogCi0gICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgY29uc3QgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMYXllckNo
cm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC02Nzcs
NyArNjc4LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlDbGlwUmVj
dEN1bGxzUmVuZGVyU3VyZmFjZXNDcmFzaFJlcHJvKQogICAgIC8vIFRoaXMgaXMgYSBzaW1pbGFy
IHNpdHVhdGlvbiBhcyB2ZXJpZnlDbGlwUmVjdEN1bGxzUmVuZGVyU3VyZmFjZXMsIGV4Y2VwdCB0
aGF0CiAgICAgLy8gaXQgcmVwcm9kdWNlcyBhIGNyYXNoIGJ1ZyBodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0xMDY3MzQuCiAKLSAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFy
ZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21p
dW0+IGdyYW5kQ2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTc0OSw3ICs3NTAs
NyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUNsaXBSZWN0Q3VsbHNT
dXJmYWNlV2l0aG91dFZpc2libGVDb250ZW50KQogICAgIC8vIHRoaXMgY2xpcHBpbmcgc2hvdWxk
IGJlIGF2b2lkZWQgYW5kIHdlIHNob3VsZCBrZWVwIHRoZSBncmFuZENoaWxkCiAgICAgLy8gaW4g
dGhlIHJlbmRlclN1cmZhY2VMYXllckxpc3QuCiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBp
ZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJD
aHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hp
bGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTgxMyw3ICs4MTQsNyBAQCBURVNUKEND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUNsaXBSZWN0SXNQcm9wYWdhdGVkQ29ycmVj
dGx5VG9MYXllcnMpCiAgICAgLy8gICBncmFuZENoaWxkNCAtIG91dHNpZGUgcGFyZW50J3MgY2xp
cFJlY3QsIGFuZCBtYXNrc1RvQm91bmRzOyB0aGUgY2xpcFJlY3Qgc2hvdWxkIGJlIGVtcHR5Lgog
ICAgIC8vCiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
KyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6
Y3JlYXRlKCk7CkBAIC04NzEsNyArODcyLDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCB2ZXJpZnlDbGlwUmVjdElzUHJvcGFnYXRlZENvcnJlY3RseVRvU3VyZmFjZXMpCiAgICAg
Ly8gaGF2ZSBhIGNsaXBSZWN0IG9mIHRoZWlyIG93biBsYXllciBib3VuZHMsIGhvd2V2ZXIsIGlm
IG1hc2tzVG9Cb3VuZHMgd2FzIHRydWUuCiAgICAgLy8KIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBM
YXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQg
PSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3Jh
bmRDaGlsZDEgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKQEAgLTk3Miw5ICs5NzMsOSBAQCBU
RVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUFuaW1hdGlvbnNGb3JSZW5kZXJT
dXJmYWNlSGllcmFyY2h5KQogICAgIC8vIEFsc28gcHV0IGFuIGFuaW1hdGVkIG9wYWNpdHkgb24g
YSBsYXllciB3aXRob3V0IGRlc2NlbmRhbnRzLgogICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9D
b250cm9sbGVyKCpncmFuZENoaWxkT2ZSb290LT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSwg
MTAsIDEsIDAsIGZhbHNlKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNm
b3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwogICAgIGxh
eWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgxLjAsIDEuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggc3VibGF5ZXJUcmFuc2Zvcm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5
ZXJUcmFuc2Zvcm07CiAgICAgc3VibGF5ZXJUcmFuc2Zvcm0uc2NhbGUzZCgxMC4wLCAxLjAsIDEu
MCk7CiAKICAgICAvLyBJbiBjb21iaW5hdGlvbiB3aXRoIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQg
YW5kIG1hc2tzVG9Cb3VuZHMsIGFuIGFuaW1hdGVkIHRyYW5zZm9ybSBmb3JjZXMgdGhlIGxheWVy
IHRvIGhhdmUgYSBuZXcgcmVuZGVyU3VyZmFjZS4KQEAgLTEwODksNyArMTA5MCw3IEBAIFRFU1Qo
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3JJZGVudGl0eVRy
YW5zZm9ybSkKICAgICAvLyBUZXN0IHRoZSBjYWxjdWxhdGVWaXNpYmxlUmVjdCgpIGZ1bmN0aW9u
IHdvcmtzIGNvcnJlY3RseSBmb3IgaWRlbnRpdHkgdHJhbnNmb3Jtcy4KIAogICAgIEludFJlY3Qg
dGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm07
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm07CiAK
ICAgICAvLyBDYXNlIDE6IExheWVyIGlzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIHN1cmZhY2UuCiAg
ICAgSW50UmVjdCBsYXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgxMCwgMTApLCBJ
bnRTaXplKDMwLCAzMCkpOwpAQCAtMTExNSw3ICsxMTE2LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhv
c3RDb21tb25UZXN0LCB2ZXJpZnlWaXNpYmxlUmVjdEZvclRyYW5zbGF0aW9ucykKIAogICAgIElu
dFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXpl
KDEwMCwgMTAwKSk7CiAgICAgSW50UmVjdCBsYXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQ
b2ludCgwLCAwKSwgSW50U2l6ZSgzMCwgMzApKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBs
YXllclRvU3VyZmFjZVRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRvU3VyZmFjZVRyYW5zZm9ybTsKIAogICAgIC8vIENhc2UgMTogTGF5ZXIgaXMgY29udGFpbmVk
IHdpdGhpbiB0aGUgc3VyZmFjZS4KICAgICBsYXllclRvU3VyZmFjZVRyYW5zZm9ybS5tYWtlSWRl
bnRpdHkoKTsKQEAgLTExNDUsNyArMTE0Niw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3IyRFJvdGF0aW9ucykKIAogICAgIEludFJlY3QgdGFy
Z2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAw
KSk7CiAgICAgSW50UmVjdCBsYXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAw
KSwgSW50U2l6ZSgzMCwgMzApKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3Vy
ZmFjZVRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFj
ZVRyYW5zZm9ybTsKIAogICAgIC8vIENhc2UgMTogTGF5ZXIgaXMgY29udGFpbmVkIHdpdGhpbiB0
aGUgc3VyZmFjZS4KICAgICBsYXllclRvU3VyZmFjZVRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsK
QEAgLTExOTIsNyArMTE5Myw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5VmlzaWJsZVJlY3RGb3IzZE9ydGhvZ3JhcGhpY1RyYW5zZm9ybSkKIAogICAgIEludFJlY3Qg
dGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSk7CiAgICAgSW50UmVjdCBsYXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgw
LCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVy
VG9TdXJmYWNlVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVG9T
dXJmYWNlVHJhbnNmb3JtOwogCiAgICAgLy8gQ2FzZSAxOiBPcnRob2dyYXBoaWMgcHJvamVjdGlv
biBvZiBhIGxheWVyIHJvdGF0ZWQgYWJvdXQgeS1heGlzIGJ5IDQ1IGRlZ3JlZXMsIHNob3VsZCBi
ZSBmdWxseSBjb250YWluZWQgaW4gdGhlIHJlbmRlclN1cmZhY2UuCiAgICAgbGF5ZXJUb1N1cmZh
Y2VUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CkBAIC0xMjIwLDcgKzEyMjEsNyBAQCBURVNUKEND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVZpc2libGVSZWN0Rm9yM2RQZXJzcGVjdGl2
ZVRyYW5zZm9ybSkKIAogICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KElu
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgSW50UmVjdCBsYXllckNvbnRl
bnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgtNTAsIC01MCksIEludFNpemUoMjAwLCAyMDApKTsK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKKyAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKIAogICAgIC8v
IENhc2UgMTogRXZlbiB0aG91Z2ggdGhlIGxheWVyIGlzIHR3aWNlIGFzIGxhcmdlIGFzIHRoZSBz
dXJmYWNlLCBkdWUgdG8gcGVyc3BlY3RpdmUKICAgICAvLyAgICAgICAgIGZvcmVzaG9ydGVuaW5n
LCB0aGUgbGF5ZXIgd2lsbCBmaXQgZnVsbHkgaW4gdGhlIHN1cmZhY2Ugd2hlbiBpdHMgdHJhbnNs
YXRlZApAQCAtMTI2Miw3ICsxMjYzLDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0
LCB2ZXJpZnlWaXNpYmxlUmVjdEZvcjNkT3J0aG9ncmFwaGljSXNOb3RDbGlwcGVkQmUKIAogICAg
IEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRT
aXplKDEwMCwgMTAwKSk7CiAgICAgSW50UmVjdCBsYXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJ
bnRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IGxheWVyVG9TdXJmYWNlVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IGxheWVyVG9TdXJmYWNlVHJhbnNmb3JtOwogCiAgICAgLy8gVGhpcyBzZXF1ZW5jZSBvZiB0cmFu
c2Zvcm1zIGVmZmVjdGl2ZWx5IHJvdGF0ZXMgdGhlIGxheWVyIGFib3V0IHRoZSB5LWF4aXMgYXQg
dGhlCiAgICAgLy8gY2VudGVyIG9mIHRoZSBsYXllci4KQEAgLTEyODYsNyArMTI4Nyw3IEBAIFRF
U1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3IzZFBlcnNw
ZWN0aXZlV2hlbkNsaXBwZWRCeVcpCiAKICAgICBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0ID0g
SW50UmVjdChJbnRQb2ludCgtNTAsIC01MCksIEludFNpemUoMTAwLCAxMDApKTsKICAgICBJbnRS
ZWN0IGxheWVyQ29udGVudFJlY3QgPSBJbnRSZWN0KEludFBvaW50KC0xMCwgLTEpLCBJbnRTaXpl
KDIwLCAyKSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zv
cm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm07
CiAKICAgICAvLyBUaGUgbGF5ZXIgaXMgcG9zaXRpb25lZCBzbyB0aGF0IHRoZSByaWdodCBoYWxm
IG9mIHRoZSBsYXllciBzaG91bGQgYmUgaW4gZnJvbnQgb2YKICAgICAvLyB0aGUgY2FtZXJhLCB3
aGlsZSB0aGUgb3RoZXIgaGFsZiBpcyBiZWhpbmQgdGhlIHN1cmZhY2UncyBwcm9qZWN0aW9uIHBs
YW5lLiBUaGUKQEAgLTEzMjAsNyArMTMyMSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3JQZXJzcGVjdGl2ZVVucHJvamVjdGlvbikKICAgICAv
LyBUaGlzIHNlcXVlbmNlIG9mIHRyYW5zZm9ybXMgY2F1c2VzIG9uZSBjb3JuZXIgb2YgdGhlIGxh
eWVyIHRvIHByb3RydWRlIGFjcm9zcyB0aGUgdyA9IDAgcGxhbmUsIGFuZCBzaG91bGQgYmUgY2xp
cHBlZC4KICAgICBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0ID0gSW50UmVjdChJbnRQb2ludCgt
NTAsIC01MCksIEludFNpemUoMTAwLCAxMDApKTsKICAgICBJbnRSZWN0IGxheWVyQ29udGVudFJl
Y3QgPSBJbnRSZWN0KEludFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSgyMCwgMjApKTsKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKKyAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKICAgICBsYXllclRvU3Vy
ZmFjZVRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICBsYXllclRvU3VyZmFjZVRyYW5zZm9y
bS5hcHBseVBlcnNwZWN0aXZlKDEpOwogICAgIGxheWVyVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5z
bGF0ZTNkKDAsIDAsIC01KTsKQEAgLTEzNDgsNyArMTM0OSw3IEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFja0ZhY2VDdWxsaW5nV2l0aG91dFByZXNlcnZlczNkKQog
ICAgIC8vIHRoYXQgM2QgdHJhbnNmb3JtcyBzdGlsbCBhcHBseSBpbiB0aGlzIGNhc2UsIGJ1dCB0
aGV5IGFyZSAiZmxhdHRlbmVkIiB0byBlYWNoCiAgICAgLy8gcGFyZW50IGxheWVyIGFjY29yZGlu
ZyB0byBjdXJyZW50IFczQyBzcGVjLgogCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgg
aWRlbnRpdHlNYXRyaXg7CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRp
dHlNYXRyaXg7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29u
dGVudD4gZnJvbnRGYWNpbmdDaGlsZCA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGJhY2tGYWNpbmdDaGlsZCA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVt
V2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKQEAgLTEzNzksNyArMTM4MCw3IEBAIFRFU1QoQ0NM
YXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFja0ZhY2VDdWxsaW5nV2l0aG91dFByZXNl
cnZlczNkKQogICAgIGZyb250RmFjaW5nQ2hpbGRPZkJhY2tGYWNpbmdTdXJmYWNlLT5zZXREb3Vi
bGVTaWRlZChmYWxzZSk7CiAgICAgYmFja0ZhY2luZ0NoaWxkT2ZCYWNrRmFjaW5nU3VyZmFjZS0+
c2V0RG91YmxlU2lkZWQoZmFsc2UpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYmFja2Zh
Y2VNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggYmFja2ZhY2VNYXRyaXg7CiAg
ICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRlKDUwLCA1MCk7CiAgICAgYmFja2ZhY2VNYXRyaXgu
cm90YXRlM2QoMCwgMSwgMCwgMTgwKTsKICAgICBiYWNrZmFjZU1hdHJpeC50cmFuc2xhdGUoLTUw
LCAtNTApOwpAQCAtMTQ0Niw3ICsxNDQ3LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LCB2ZXJpZnlCYWNrRmFjZUN1bGxpbmdXaXRoUHJlc2VydmVzM2QpCiB7CiAgICAgLy8gVmVy
aWZ5IHRoZSBiZWhhdmlvciBvZiBiYWNrLWZhY2UgY3VsbGluZyB3aGVuIHByZXNlcnZlcy0zZCB0
cmFuc2Zvcm0gc3R5bGUgaXMgdXNlZC4KIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OworICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50
aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0Nv
bnRlbnQ+IGZyb250RmFjaW5nQ2hpbGQgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhG
b3JjZWREcmF3c0NvbnRlbnQoKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50PiBiYWNrRmFjaW5nQ2hpbGQgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CkBAIC0xNDc5LDcgKzE0ODAsNyBAQCBURVNUKEND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUJhY2tGYWNlQ3VsbGluZ1dpdGhQcmVzZXJ2
ZXMzZCkKICAgICBmcm9udEZhY2luZ0NoaWxkT2ZCYWNrRmFjaW5nU3VyZmFjZS0+c2V0RG91Ymxl
U2lkZWQoZmFsc2UpOwogICAgIGJhY2tGYWNpbmdDaGlsZE9mQmFja0ZhY2luZ1N1cmZhY2UtPnNl
dERvdWJsZVNpZGVkKGZhbHNlKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNl
TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OwogICAg
IGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0ZSg1MCwgNTApOwogICAgIGJhY2tmYWNlTWF0cml4LnJv
dGF0ZTNkKDAsIDEsIDAsIDE4MCk7CiAgICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRlKC01MCwg
LTUwKTsKQEAgLTE1NDksNyArMTU1MCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5QmFja0ZhY2VDdWxsaW5nV2l0aEFuaW1hdGluZ1RyYW5zZm9ybXMpCiAgICAgLy8g
dHJlYXRlZCBhcyAidW5rbm93biIgc28gd2UgY2FuIG5vdCBiZSBzdXJlIHRoYXQgdGhlaXIgYmFj
ayBmYWNlIGlzIHJlYWxseSBzaG93aW5nLgogICAgIC8vCiAKLSAgICBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0g
TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50PiBjaGlsZCA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGFuaW1hdGluZ1N1cmZhY2UgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1
bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CkBAIC0xNTcxLDcgKzE1NzIsNyBAQCBURVNUKEND
TGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeUJhY2tGYWNlQ3VsbGluZ1dpdGhBbmltYXRp
bmdUcmFuc2Zvcm1zKQogICAgIGNoaWxkT2ZBbmltYXRpbmdTdXJmYWNlLT5zZXREb3VibGVTaWRl
ZChmYWxzZSk7CiAgICAgYW5pbWF0aW5nQ2hpbGQtPnNldERvdWJsZVNpZGVkKGZhbHNlKTsKIAot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OworICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OwogICAgIGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0
ZSg1MCwgNTApOwogICAgIGJhY2tmYWNlTWF0cml4LnJvdGF0ZTNkKDAsIDEsIDAsIDE4MCk7CiAg
ICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRlKC01MCwgLTUwKTsKQEAgLTE2MzQsNyArMTYzNSw3
IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFja0ZhY2VDdWxsaW5n
V2l0aFByZXNlcnZlczNkRm9yRmxhdHRlbmluCiAgICAgLy8gVmVyaWZ5IHRoZSBiZWhhdmlvciBv
ZiBiYWNrLWZhY2UgY3VsbGluZyBmb3IgYSByZW5kZXJTdXJmYWNlIHRoYXQgaXMgY3JlYXRlZAog
ICAgIC8vIHdoZW4gaXQgZmxhdHRlbnMgaXRzIHN1YnRyZWUsIGFuZCBpdHMgcGFyZW50IGhhcyBw
cmVzZXJ2ZXMtM2QuCiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1h
dHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBmcm9u
dEZhY2luZ1N1cmZhY2UgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3
c0NvbnRlbnQoKSk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250
ZW50PiBiYWNrRmFjaW5nU3VyZmFjZSA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZv
cmNlZERyYXdzQ29udGVudCgpKTsKQEAgLTE2NTEsNyArMTY1Miw3IEBAIFRFU1QoQ0NMYXllclRy
ZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFja0ZhY2VDdWxsaW5nV2l0aFByZXNlcnZlczNkRm9y
RmxhdHRlbmluCiAgICAgZnJvbnRGYWNpbmdTdXJmYWNlLT5zZXREb3VibGVTaWRlZChmYWxzZSk7
CiAgICAgYmFja0ZhY2luZ1N1cmZhY2UtPnNldERvdWJsZVNpZGVkKGZhbHNlKTsKIAotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGJhY2tmYWNlTWF0cml4OwogICAgIGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0ZSg1MCwg
NTApOwogICAgIGJhY2tmYWNlTWF0cml4LnJvdGF0ZTNkKDAsIDEsIDAsIDE4MCk7CiAgICAgYmFj
a2ZhY2VNYXRyaXgudHJhbnNsYXRlKC01MCwgLTUwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IDEyNzVlYzg1NDI4
MTA5OGMzMWUxYjgwMzA2MWM5Y2NhNGRiZjVkOGMuLmQ4YzhlYTMwNTBlMDY0OWYwNTg3MWM2ODU5
MDQ1MDEzZDFjNmE0MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMTk4NSwyMSArMTk4NSwyMSBAQCBwdWJsaWM6
CiAgICAgICAgIC8vIFRoZSByb290IHJlbmRlciBzdXJmYWNlIGlzIHRoZSBzaXplIG9mIHRoZSB2
aWV3cG9ydC4KICAgICAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgwLCAwLCA2MCwgNjApLCBy
b290LT5yZW5kZXJTdXJmYWNlKCktPmNvbnRlbnRSZWN0KCkpOwogCi0gICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHNjYWxlVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBzY2FsZVRyYW5zZm9ybTsKICAgICAgICAgc2NhbGVUcmFuc2Zvcm0uc2NhbGUoaW1wbC0+
c2V0dGluZ3MoKS5kZXZpY2VTY2FsZUZhY3Rvcik7CiAKICAgICAgICAgLy8gVGhlIHJvb3QgbGF5
ZXIgaXMgc2NhbGVkIGJ5IDJ4LgotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb290U2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0gPSBzY2FsZVRyYW5zZm9ybTsKLSAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggcm9vdERyYXdUcmFuc2Zvcm0gPSBzY2FsZVRyYW5zZm9ybTsKKyAgICAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFNjcmVlblNwYWNlVHJhbnNmb3JtID0gc2NhbGVUcmFu
c2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJvb3REcmF3VHJhbnNmb3Jt
ID0gc2NhbGVUcmFuc2Zvcm07CiAgICAgICAgIHJvb3REcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZShy
b290LT5ib3VuZHMoKS53aWR0aCgpICogMC41LCByb290LT5ib3VuZHMoKS5oZWlnaHQoKSAqIDAu
NSk7CiAKICAgICAgICAgRVhQRUNUX0VRKHJvb3REcmF3VHJhbnNmb3JtLCByb290LT5kcmF3VHJh
bnNmb3JtKCkpOwogICAgICAgICBFWFBFQ1RfRVEocm9vdFNjcmVlblNwYWNlVHJhbnNmb3JtLCBy
b290LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgICAgICAvLyBUaGUgY2hpbGQgaXMg
YXQgcG9zaXRpb24gMiwyLCBzbyB0cmFuc2xhdGUgYnkgMiwyIGJlZm9yZSBhcHBseWluZyB0aGUg
c2NhbGUgYnkgMnguCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkU2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0gPSBzY2FsZVRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGRTY3JlZW5TcGFjZVRyYW5zZm9ybSA9IHNjYWxlVHJhbnNmb3JtOwogICAgICAg
ICBjaGlsZFNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZSgyLCAyKTsKLSAgICAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY2hpbGREcmF3VHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07Cisg
ICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkRHJhd1RyYW5zZm9ybSA9IHNjYWxl
VHJhbnNmb3JtOwogICAgICAgICBjaGlsZERyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKDIsIDIpOwog
ICAgICAgICBjaGlsZERyYXdUcmFuc2Zvcm0udHJhbnNsYXRlKGNoaWxkLT5ib3VuZHMoKS53aWR0
aCgpICogMC41LCBjaGlsZC0+Ym91bmRzKCkuaGVpZ2h0KCkgKiAwLjUpOwogCkBAIC0yMTEzLDcg
KzIxMTMsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0VGVzdEF0b21pY0NvbW1pdCwgcnVuTXVs
dGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVlKTsKIH0KIAotc3RhdGljIHZvaWQgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSog
cGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBhbmNob3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXpl
JiBib3VuZHMsIGJvb2wgb3BhcXVlKQorc3RhdGljIHZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9y
VGVzdGluZyhMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSogcGFyZW50LCBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBh
bmNob3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMs
IGJvb2wgb3BhcXVlKQogewogICAgIGxheWVyLT5yZW1vdmVBbGxDaGlsZHJlbigpOwogICAgIGlm
IChwYXJlbnQpCkBAIC0yMTQxLDcgKzIxNDEsNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+c2V0Um9vdExheWVyKG1fcGFyZW50KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0
LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgxMCwgMjApKTsKIAotICAgICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7CiAgICAgICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rpbmco
bV9wYXJlbnQuZ2V0KCksIDAsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9h
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwLCAyMCksIHRydWUpOwogICAgICAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKG1fY2hpbGQuZ2V0KCksIG1fcGFyZW50LmdldCgpLCBpZGVudGl0
eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgRmxvYXRQb2ludCgwLCAxMCksIEludFNpemUoMTAs
IDEwKSwgZmFsc2UpOwogCkBAIC0yMzAxLDcgKzIzMDEsNyBAQCBwcml2YXRlOgogICAgIFJlZ2lv
biBtX29jY2x1ZGVkU2NyZWVuU3BhY2U7CiB9OwogCi1zdGF0aWMgdm9pZCBzZXRUZXN0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhUZXN0TGF5ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyQ2hyb21p
dW0qIHBhcmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgYW5jaG9yLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50
U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkKK3N0YXRpYyB2b2lkIHNldFRlc3RMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKFRlc3RMYXllckNocm9taXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSog
cGFyZW50LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRT
aXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQogewogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIsIHBhcmVudCwgdHJhbnNmb3JtLCBhbmNob3IsIHBvc2l0aW9uLCBib3VuZHMs
IG9wYXF1ZSk7CiAgICAgbGF5ZXItPmNsZWFyT2NjbHVkZWRTY3JlZW5TcGFjZSgpOwpAQCAtMjMx
OSw4ICsyMzE5LDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+
IGdyYW5kQ2hpbGQgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgICAgIFJlZlB0
cjxUZXN0TGF5ZXJDaHJvbWl1bT4gbWFzayA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
IAotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICAgICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBjaGlsZFRyYW5zZm9ybTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1
MCwgMjUwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICAgICAgY2hp
bGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwpAQCAtMjUyMSw4ICsyNTIxLDggQEAg
cHVibGljOgogICAgICAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBU
ZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJv
bWl1bT4gbWFzayA9IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKIAotICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5z
Zm9ybTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKICAgICAg
ICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJh
bnNsYXRlKC0yNTAsIC0yNTApOwpAQCAtMjYwNyw3ICsyNjA3LDcgQEAgcHVibGljOgogICAgIHsK
ICAgICAgICAgLy8gV2UgY3JlYXRlIGVub3VnaCBSZW5kZXJTdXJmYWNlcyB0aGF0IGl0IHdpbGwg
dHJpZ2dlciBWZWN0b3IgcmVhbGxvY2F0aW9uIHdoaWxlIGNvbXB1dGluZyBvY2NsdXNpb24uCiAg
ICAgICAgIFJlZ2lvbiBvY2NsdWRlZDsKLSAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXggaWRlbnRpdHlNYXRyaXg7CisgICAgICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OwogICAgICAgICBWZWN0b3I8UmVmUHRyPFRlc3RMYXllckNocm9taXVt
PiA+IGxheWVyczsKICAgICAgICAgVmVjdG9yPFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gPiBj
aGlsZHJlbjsKICAgICAgICAgaW50IG51bVN1cmZhY2VzID0gMjA7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlVGVzdENvbW1vbi5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZVRlc3RDb21tb24uaAppbmRleCA3NWU0
ODdhNGE3ZWY0NmU3M2I2MjgzYzNmZjQ1MGE1ZTQ1Y2E4NjBjLi41YzAxYzgwNDkzY2EyZjcxZGNj
MGU1MTdjYTY1YTdjZDhiOGMzZDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJUcmVlVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllclRyZWVUZXN0Q29tbW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNw
YWNlIFdlYktpdFRlc3RzIHsKICAgICBFWFBFQ1RfRVEoKGV4cGVjdGVkKS5zaXplKCkuaGVpZ2h0
KCksIChhY3R1YWwpLnNpemUoKS5oZWlnaHQoKSkKIAogLy8gVGhpcyBpcyBhIG1hY3JvIGluc3Rl
YWQgb2YgYSBmdW5jdGlvbiBzbyB0aGF0IHdlIGdldCB1c2VmdWwgbGluZSBudW1iZXJzIHdoZXJl
IGEgdGVzdCBmYWlsZWQuCi0vLyBFdmVuIHRob3VnaCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2YWx1
ZXMgYXJlIGRvdWJsZSBwcmVjaXNpb24sIHRoZXJlIGFyZSBtYW55IG90aGVyIGZsb2F0aW5nLXBv
aW50IHZhbHVlcyB1c2VkIHRoYXQgYWZmZWN0CisvLyBFdmVuIHRob3VnaCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB2YWx1ZXMgYXJlIGRvdWJsZSBwcmVjaXNpb24sIHRoZXJlIGFyZSBtYW55IG90
aGVyIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB1c2VkIHRoYXQgYWZmZWN0CiAvLyB0aGUgdHJhbnNm
b3JtcywgYW5kIHNvIHdlIG9ubHkgZXhwZWN0IHRoZW0gdG8gYmUgYWNjdXJhdGUgdXAgdG8gZmxv
YXRpbmctcG9pbnQgcHJlY2lzaW9uLgogI2RlZmluZSBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFU
UklYX0VRKGV4cGVjdGVkLCBhY3R1YWwpICAgICAgIFwKICAgICBFWFBFQ1RfRkxPQVRfRVEoKGV4
cGVjdGVkKS5tMTEoKSwgKGFjdHVhbCkubTExKCkpOyAgICAgICAgICBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTWF0aFV0aWxUZXN0LmNwcCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NNYXRoVXRpbFRlc3QuY3BwCmluZGV4IDU4OGFmOWNjMjU0
MzhkYTE2OTgxM2MzNTkxMDFhMDA4NzZlYmQ2MzYuLjQ0YTY4YjllYjg5MzJhZjAxYTM1N2Q2YTBj
NjIxYjc3YzNjOTJkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NNYXRoVXRpbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NN
YXRoVXRpbFRlc3QuY3BwCkBAIC0yNywxOCArMjcsMTkgQEAKICNpbmNsdWRlICJjYy9DQ01hdGhV
dGlsLmgiCiAKICNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKLSNpbmNsdWRlICJU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVk
ZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1
YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29y
ZTsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFjZSB7
CiAKIFRFU1QoQ0NNYXRoVXRpbFRlc3QsIHZlcmlmeUJhY2tmYWNlVmlzaWJpbGl0eUJhc2ljQ2Fz
ZXMpCiB7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKIAogICAgIHRyYW5zZm9ybS5tYWtlSWRlbnRpdHko
KTsKICAgICBFWFBFQ1RfRkFMU0UodHJhbnNmb3JtLmlzQmFja0ZhY2VWaXNpYmxlKCkpOwpAQCAt
NTksNyArNjAsNyBAQCBURVNUKENDTWF0aFV0aWxUZXN0LCB2ZXJpZnlCYWNrZmFjZVZpc2liaWxp
dHlCYXNpY0Nhc2VzKQogCiBURVNUKENDTWF0aFV0aWxUZXN0LCB2ZXJpZnlCYWNrZmFjZVZpc2li
aWxpdHlGb3JQZXJzcGVjdGl2ZSkKIHsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclNw
YWNlVG9Qcm9qZWN0aW9uUGxhbmU7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJT
cGFjZVRvUHJvamVjdGlvblBsYW5lOwogCiAgICAgLy8gVGhpcyB0ZXN0cyBpZiBpc0JhY2tGYWNl
VmlzaWJsZSB3b3JrcyBwcm9wZXJseSB1bmRlciBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1zLgogICAg
IC8vIFNwZWNpZmljYWxseSwgbGF5ZXJzIHRoYXQgbWF5IGhhdmUgdGhlaXIgYmFjayBmYWNlIHZp
c2libGUgaW4gb3J0aG9ncmFwaGljCkBAIC0xMDUsNyArMTA2LDcgQEAgVEVTVChDQ01hdGhVdGls
VGVzdCwgdmVyaWZ5UHJvamVjdGlvbk9mUGVycGVuZGljdWxhclBsYW5lKQogICAgIC8vIEluIHRo
aXMgY2FzZSwgdGhlIG0zMygpIGVsZW1lbnQgb2YgdGhlIHRyYW5zZm9ybSBiZWNvbWVzIHplcm8s
IHdoaWNoIGNvdWxkIGNhdXNlIGEKICAgICAvLyBkaXZpZGUtYnktemVybyB3aGVuIHByb2plY3Rp
bmcgcG9pbnRzL3F1YWRzLgogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwor
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0ubWFr
ZUlkZW50aXR5KCk7CiAgICAgdHJhbnNmb3JtLnNldE0zMygwKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKaW5k
ZXggNGI5ZmE3NGZkZTM3NmZlNDE2OGMwN2ZjNDM2M2Q4OTU4MDYyM2I4Mi4uODAzMTdhMDA4MTdk
ZDU2NDgzNWQ5MDJhNTQ0OTkxZWE3NzRkOTI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVzaW9uVHJhY2tlclRlc3QuY3BwCkBAIC0zMSwxNiAr
MzEsMTcgQEAKICNpbmNsdWRlICJDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q29tbW9uLmgiCiAjaW5j
bHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgotI2luY2x1ZGUgIlRy
YW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0
aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oIgorI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRo
cmVhZFByb3h5LmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9n
dGVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJGaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNsdWRl
IDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CkBAIC0xNzIsNyArMTczLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBD
Q0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzRmlsdGVyQ29udGV4dChmYWxzZSk7CiAgICAgfQogCi0g
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGNyZWF0ZVJvb3QoY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24s
IGNvbnN0IEludFNpemUmIGJvdW5kcykKKyAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogY3JlYXRlUm9vdChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
LCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAg
IHsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclB0clR5cGUgbGF5ZXIoVHlw
ZXM6OmNyZWF0ZUNvbnRlbnRMYXllcigpKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclR5cGUqIGxheWVyUHRyID0gbGF5ZXIuZ2V0KCk7CkBAIC0xODMsNyArMTg0LDcgQEAg
cHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbGF5ZXJQdHI7CiAgICAgfQogCi0gICAgdHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSogY3JlYXRlTGF5ZXIodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlw
ZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBG
bG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorICAgIHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZUxheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUq
IHBhcmVudCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3Qg
RmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKICAgICB7CiAgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclB0clR5cGUgbGF5ZXIoVHlwZXM6OmNyZWF0ZUxheWVy
KCkpOwogICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllclB0ciA9IGxheWVy
LmdldCgpOwpAQCAtMTkyLDcgKzE5Myw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGxh
eWVyUHRyOwogICAgIH0KIAotICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZVN1
cmZhY2UodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
SW50U2l6ZSYgYm91bmRzKQorICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZVN1
cmZhY2UodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogcGFyZW50LCBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29u
c3QgSW50U2l6ZSYgYm91bmRzKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSogbGF5ZXIgPSBjcmVhdGVMYXllcihwYXJlbnQsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJv
dW5kcyk7CiAgICAgICAgIFdlYkZpbHRlck9wZXJhdGlvbnMgZmlsdGVyczsKQEAgLTIwMSw3ICsy
MDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHJldHVybiBsYXllcjsKICAgICB9CiAKLSAgICB0
eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogY3JlYXRlRHJhd2luZ0xheWVyKHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUqIHBhcmVudCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJv
dW5kcywgYm9vbCBvcGFxdWUpCisgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IGNyZWF0ZURyYXdpbmdMYXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBwYXJlbnQsIGNv
bnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQogICAgIHsKICAg
ICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclB0clR5cGUgbGF5ZXIoVHlwZXM6OmNy
ZWF0ZUNvbnRlbnRMYXllcigpKTsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIGxheWVyUHRyID0gbGF5ZXIuZ2V0KCk7CkBAIC0yMjEsNyArMjIyLDcgQEAgcHJvdGVj
dGVkOgogICAgICAgICByZXR1cm4gbGF5ZXJQdHI7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgVHlw
ZXM6OkxheWVyVHlwZSogY3JlYXRlUmVwbGljYUxheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5
cGUqIG93bmluZ0xheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorICAgIHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZVJlcGxpY2FMYXllcih0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlKiBvd25pbmdMYXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJv
dW5kcykKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJQdHJUeXBl
IGxheWVyKFR5cGVzOjpjcmVhdGVDb250ZW50TGF5ZXIoKSk7CiAgICAgICAgIHR5cGVuYW1lIFR5
cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllclB0ciA9IGxheWVyLmdldCgpOwpAQCAtMjM5LDcg
KzI0MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGxheWVyUHRyOwogICAgIH0KIAot
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBjcmVhdGVEcmF3aW5nU3VyZmFj
ZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRT
aXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQorICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5
ZXJUeXBlKiBjcmVhdGVEcmF3aW5nU3VyZmFjZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBw
YXJlbnQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQog
ICAgIHsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0g
Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzLCBv
cGFxdWUpOwogICAgICAgICBXZWJGaWx0ZXJPcGVyYXRpb25zIGZpbHRlcnM7CkBAIC0zMzEsMjQg
KzMzMiwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIG1fbGF5ZXJJdGVyYXRvciA9IG1fbGF5ZXJJ
dGVyYXRvckJlZ2luOwogICAgIH0KIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlk
ZW50aXR5TWF0cml4OworICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5
TWF0cml4OwogCiBwcml2YXRlOgotICAgIHZvaWQgc2V0QmFzZVByb3BlcnRpZXModHlwZW5hbWUg
VHlwZXM6OkxheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMp
CisgICAgdm9pZCBzZXRCYXNlUHJvcGVydGllcyh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBs
YXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxv
YXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKICAgICB7CiAgICAgICAg
IGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKLSAgICAgICAgbGF5ZXItPnNldFN1Ymxh
eWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgICAgICBsYXllci0+c2V0
U3VibGF5ZXJUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIGxh
eWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKICAgICAgICAgbGF5ZXItPnNl
dFBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAgICAgbGF5ZXItPnNldEJvdW5kcyhib3VuZHMpOwog
ICAgIH0KIAotICAgIHZvaWQgc2V0UHJvcGVydGllcyhMYXllckNocm9taXVtKiBsYXllciwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9z
aXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKKyAgICB2b2lkIHNldFByb3BlcnRpZXMoTGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAg
ICAgewogICAgICAgICBzZXRCYXNlUHJvcGVydGllcyhsYXllciwgdHJhbnNmb3JtLCBwb3NpdGlv
biwgYm91bmRzKTsKICAgICB9CiAKLSAgICB2b2lkIHNldFByb3BlcnRpZXMoQ0NMYXllckltcGwq
IGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9h
dFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorICAgIHZvaWQgc2V0UHJv
cGVydGllcyhDQ0xheWVySW1wbCogbGF5ZXIsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBi
b3VuZHMpCiAgICAgewogICAgICAgICBzZXRCYXNlUHJvcGVydGllcyhsYXllciwgdHJhbnNmb3Jt
LCBwb3NpdGlvbiwgYm91bmRzKTsKIApAQCAtNDgyLDcgKzQ4Myw3IEBAIGNsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQgOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVz
dDxUeXBlcywKIHByb3RlY3RlZDoKICAgICB2b2lkIHJ1bk15VGVzdCgpCiAgICAgewotICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CiAgICAgICAgIGxheWVyVHJhbnNmb3JtLnRy
YW5zbGF0ZSgyNTAsIDI1MCk7CiAgICAgICAgIGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CiAg
ICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKQEAgLTUzNSw3ICs1
MzYsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHJhbnNsYXRlZENoaWxkIDogcHVi
bGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZQogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVu
TXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNm
b3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKICAg
ICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDIwLCAyMCk7CiAKICAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhp
cy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsK
QEAgLTU5OCw3ICs1OTksNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q2hpbGRJblJv
dGF0ZWRDaGlsZCA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0PAogcHJvdGVjdGVkOgog
ICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRy
YW5zZm9ybTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKICAg
ICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0u
dHJhbnNsYXRlKC0yNTAsIC0yNTApOwpAQCAtNjkxLDcgKzY5Miw3IEBAIGNsYXNzIENDT2NjbHVz
aW9uVHJhY2tlclRlc3RWaXNpdFRhcmdldFR3b1RpbWVzIDogcHVibGljIENDT2NjbHVzaW9uVHJh
Y2tlclRlc3Q8CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwogICAgICAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoMjUwLCAyNTApOwogICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwog
ICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CkBAIC04MzcsMTIg
KzgzOCwxMiBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZB
eGlzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlcwogcHJvdGVjdGVkOgogICAgIHZvaWQg
cnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJh
bnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsK
ICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKICAgICAgICAgY2hp
bGRUcmFuc2Zvcm0ucm90YXRlKDk1KTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRl
KC0yNTAsIC0yNTApOwogCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNm
b3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKICAg
ICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNsYXRlKDEwLCAxMCk7CiAKICAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhp
cy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsK
QEAgLTg1NCw3ICs4NTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBl
czo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAx
MDAwLCAxMDAwKSk7CiAKLSAgICAgICAgSW50UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxkID0gbGF5
ZXJUcmFuc2Zvcm0ubWFwUmVjdChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICAgICAg
SW50UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxkID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3Qo
bGF5ZXJUcmFuc2Zvcm0sIGxheWVyLT52aXNpYmxlTGF5ZXJSZWN0KCkpOwogCiAgICAgICAgIHRo
aXMtPnZpc2l0TGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CiAgICAgICAgIHRoaXMtPmVudGVyQ29u
dHJpYnV0aW5nU3VyZmFjZShjaGlsZCwgb2NjbHVzaW9uKTsKQEAgLTkwMyw3ICs5MDQsNyBAQCBj
bGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbiA6
IHB1YmxpYyBDQ09jY2x1c2lvblRyYQogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkK
ICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAg
ICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKICAgICAgICAgY2hp
bGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0u
cm90YXRlKDkwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTAp
OwpAQCAtOTkxLDcgKzk5Miw3IEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFw
cGluZ1N1cmZhY2VTaWJsaW5ncyA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYWNrCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxk
VHJhbnNmb3JtOwogICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwog
ICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwogICAgICAgICBjaGlsZFRyYW5zZm9y
bS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CkBAIC0xMTAwLDEyICsxMTAxLDEyIEBAIGNsYXNzIEND
T2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nc1dpdGhUd29UcmFu
c2Zvcm1zIDogcHVibGljCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsK
LSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQxVHJhbnNmb3JtOworICAgICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDFUcmFuc2Zvcm07CiAgICAgICAgIGNoaWxkMVRy
YW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwogICAgICAgICBjaGlsZDFUcmFuc2Zvcm0ucm90
YXRlKC05MCk7CiAgICAgICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
CiAKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGQyVHJhbnNmb3JtOworICAgICAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZDJUcmFuc2Zvcm07CiAgICAgICAgIGNoaWxk
MlRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwogICAgICAgICBjaGlsZDJUcmFuc2Zvcm0u
cm90YXRlKDkwKTsKICAgICAgICAgY2hpbGQyVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUw
KTsKQEAgLTEyMDcsNyArMTIwOCw3IEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0
ZXJzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8VHlwZXMsIG9wYXF1CiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxh
eWVyVHJhbnNmb3JtOwogICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTAp
OwogICAgICAgICBsYXllclRyYW5zZm9ybS5yb3RhdGUoOTApOwogICAgICAgICBsYXllclRyYW5z
Zm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CkBAIC0xODQzLDcgKzE4NDQsNyBAQCBjbGFzcyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0M2RUcmFuc2Zvcm0gOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdDxUeXBlcywgbwogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7
Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlM2Qo
MCwgMzAsIDApOwogCiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBw
YXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7CkBAIC0xODY2LDcgKzE4NjcsNyBAQCBjbGFzcyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0UGVyc3BlY3RpdmVUcmFuc2Zvcm0gOiBwdWJsaWMgQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdAogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7
Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KDE1MCwgMTUwKTsKICAgICAgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUoNDAwKTsKICAg
ICAgICAgdHJhbnNmb3JtLnJvdGF0ZTNkKDEsIDAsIDAsIC0zMCk7CkBAIC0xODk0LDcgKzE4OTUs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKICAgICAgICAgLy8g
VGhpcyB0ZXN0IGlzIGJhc2VkIG9uIHRoZSBwbGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy8z
ZC1jb3JuZXJzLmh0bWwgbGF5b3V0IHRlc3QuCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwog
ICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgNTApOwogICAgICAgICB0cmFuc2Zvcm0u
YXBwbHlQZXJzcGVjdGl2ZSgxMCk7CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwg
LTUwKTsKQEAgLTE5MjUsNyArMTkyNiw3IEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RM
YXllckJlaGluZENhbWVyYURvZXNOb3RPY2NsdWRlIDogcHVibGljIENDT2NjbHVzaW9uCiBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFu
c2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDUwKTsKICAgICAgICAgdHJh
bnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUoMTAwKTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0
ZTNkKDAsIDAsIDExMCk7CkBAIC0xOTU0LDcgKzE5NTUsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0TGFyZ2VQaXhlbHNPY2NsdWRlSW5zaWRlQ2xpcFJlY3QgOiBwdWJsaWMgQ0NPY2Ns
dXNpbwogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAg
ICAgICAgIHRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZlKDEwMCk7CiAgICAgICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUzZCgwLCAwLCA5OSk7CkBAIC0yMTgyLDcgKzIxODMsNyBAQCBjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZU9jY2x1c2lvblRyYW5zbGF0ZXNUb1BhcmVudCA6IHB1
YmxpYyBDQ09jY2x1cwogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0g
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHN1cmZhY2VUcmFuc2Zvcm07CisgICAgICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHN1cmZhY2VUcmFuc2Zvcm07CiAgICAgICAgIHN1cmZhY2VU
cmFuc2Zvcm0udHJhbnNsYXRlKDMwMCwgMzAwKTsKICAgICAgICAgc3VyZmFjZVRyYW5zZm9ybS5z
Y2FsZSgyKTsKICAgICAgICAgc3VyZmFjZVRyYW5zZm9ybS50cmFuc2xhdGUoLTE1MCwgLTE1MCk7
CkBAIC0yNTE0LDcgKzI1MTUsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RG9udE9j
Y2x1ZGVQaXhlbHNOZWVkZWRGb3JCYWNrZ3JvdW5kRmlsdGVyIDogcHVibGljCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggc2NhbGVCeUhhbGY7CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlQnlI
YWxmOwogICAgICAgICBzY2FsZUJ5SGFsZi5zY2FsZSgwLjUpOwogCiAgICAgICAgIC8vIE1ha2Ug
YSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYSwgZWFjaCA1MHg1MCwgdGhhdCBhcmUgY29tcGxldGVs
eSBzdXJyb3VuZGVkIGJ5IG9wYXF1ZSBsYXllcnMgd2hpY2ggYXJlIGFib3ZlIHRoZW0gaW4gdGhl
IHotb3JkZXIuCkBAIC0yNjM5LDcgKzI2NDAsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0VHdvQmFja2dyb3VuZEZpbHRlcnNSZWR1Y2VPY2NsdXNpb25Ud2ljZSA6IHB1YmxpYyBDQwog
cHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHNjYWxlQnlIYWxmOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBzY2FsZUJ5SGFsZjsKICAgICAgICAgc2NhbGVCeUhhbGYuc2NhbGUoMC41KTsKIAogICAgICAg
ICAvLyBNYWtlcyB0d28gc3VyZmFjZXMgdGhhdCBjb21wbGV0ZWx5IGNvdmVyIHxwYXJlbnR8LiBU
aGUgb2NjbHVzaW9uIGJvdGggYWJvdmUgYW5kIGJlbG93IHRoZSBmaWx0ZXJzIHdpbGwgYmUgcmVk
dWNlZCBieSBlYWNoIG9mIHRoZW0uCkBAIC0yODI2LDcgKzI4MjcsNyBAQCBjbGFzcyBDQ09jY2x1
c2lvblRyYWNrZXJUZXN0RG9udFJlZHVjZU9jY2x1c2lvbkJlbG93QmFja2dyb3VuZEZpbHRlciA6
IHB1YmxpYyBDQwogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAg
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlQnlIYWxmOworICAgICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBzY2FsZUJ5SGFsZjsKICAgICAgICAgc2NhbGVCeUhhbGYuc2NhbGUoMC41
KTsKIAogICAgICAgICAvLyBNYWtlIGEgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EsIGVhY2ggNTB4
NTAsIHdpdGggYSBzbWFsbGVyIDMweDMwIGxheWVyIGNlbnRlcmVkIGJlbG93IGVhY2guCkBAIC0y
ODc1LDcgKzI4NzYsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RG9udFJlZHVjZU9j
Y2x1c2lvbklmQmFja2dyb3VuZEZpbHRlcklzT2NjbHVkZWQgOiBwdQogcHJvdGVjdGVkOgogICAg
IHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNj
YWxlQnlIYWxmOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY2FsZUJ5SGFsZjsK
ICAgICAgICAgc2NhbGVCeUhhbGYuc2NhbGUoMC41KTsKIAogICAgICAgICAvLyBNYWtlIGEgc3Vy
ZmFjZSBhbmQgaXRzIHJlcGxpY2EsIGVhY2ggNTB4NTAsIHRoYXQgYXJlIGNvbXBsZXRlbHkgb2Nj
bHVkZWQgYnkgb3BhcXVlIGxheWVycyB3aGljaCBhcmUgYWJvdmUgdGhlbSBpbiB0aGUgei1vcmRl
ci4KQEAgLTI5MjMsNyArMjkyNCw3IEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RSZWR1
Y2VPY2NsdXNpb25XaGVuQmFja2dyb3VuZEZpbHRlcklzUGFydGlhbGx5T2NjbHVkCiBwcm90ZWN0
ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggc2NhbGVCeUhhbGY7CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxl
QnlIYWxmOwogICAgICAgICBzY2FsZUJ5SGFsZi5zY2FsZSgwLjUpOwogCiAgICAgICAgIC8vIE1h
a2UgYSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYSwgZWFjaCA1MHg1MCwgdGhhdCBhcmUgcGFydGlh
bGx5IG9jY2x1ZGVkIGJ5IG9wYXF1ZSBsYXllcnMgd2hpY2ggYXJlIGFib3ZlIHRoZW0gaW4gdGhl
IHotb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVh
ZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxs
ZXJUZXN0LmNwcAppbmRleCA2MzRhMjVjN2E4M2FiZmI2ZWRiMDNlMjc1NGE0MTk0YWViMzU0NjVj
Li4xYTExOWQ3MDgzYTMzN2JjYWEzNWQ5NGE1ZTVhNTBlODMxYjZkYWMzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTMzLDgg
KzMzLDEwIEBACiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxnbW9j
ay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNp
bmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIApAQCAt
NTUsNyArNTcsNyBAQCBwcml2YXRlOgogCiB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVy
SW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJh
dG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKLXN0YXRpYyBQ
YXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBw
YXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBJ
bnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlLCBjb25zdCBJbnRS
ZWN0JiBsYXllck9wYXF1ZVJlY3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBzdXJmYWNlTGF5ZXJM
aXN0KQorc3RhdGljIFBhc3NPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGls
ZWRMYXllckltcGwqIHBhcmVudCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdU
cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBv
cGFxdWUsIGNvbnN0IEludFJlY3QmIGxheWVyT3BhcXVlUmVjdCwgVmVjdG9yPENDTGF5ZXJJbXBs
Kj4mIHN1cmZhY2VMYXllckxpc3QpCiB7CiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxh
eWVyID0gQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlKDApOwogICAgIE93blB0cjxDQ0xheWVyVGls
aW5nRGF0YT4gdGlsZXIgPSBDQ0xheWVyVGlsaW5nRGF0YTo6Y3JlYXRlKEludFNpemUoMTAwLCAx
MDApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9Cb3JkZXJUZXhlbHMpOwpAQCAtMTA1LDcgKzEwNyw3
IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFF1YWRzKENDUXVhZExpc3QmIHF1YWRMaXN0LCBWZWN0b3I8
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+CiAgICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICBWZWN0b3I8T3duUHRyPENDU2hhcmVk
UXVhZFN0YXRlPiA+IHNoYXJlZFN0YXRlTGlzdDsgXAogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+
IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7ICAgICAgICBcCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggY2hpbGRUcmFuc2Zvcm07ICAgICAgICAgICAgICAgIFwKKyAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsgICAgICAgICAgICAgICAgXAogICAgIEludFNpemUgcm9v
dFNpemUgPSBJbnRTaXplKDMwMCwgMzAwKTsgICAgICAgICAgICAgICBcCiAgICAgSW50UmVjdCBy
b290UmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgcm9vdFNpemUpOyAgIFwKICAgICBJbnRTaXpl
IGNoaWxkU2l6ZSA9IEludFNpemUoMjAwLCAyMDApOyAgICAgICAgICAgICAgXApAQCAtMTE1LDgg
KzExNyw4IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Tm9DdWxsaW5nKQogewogICAg
IERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRM
YXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJv
b3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIGZh
bHNlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VM
YXllcihyb290TGF5ZXIuZ2V0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVj
dCwgMS4wLCBmYWxzZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBU
ZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwg
LTEwMCwgMTAwMCwgMTAwMCkpOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVy
SXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKQEAgLTEzMiw4
ICsxMzQsOCBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBU
b3BMZWZ0KQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVy
ID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hp
bGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Cisg
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGls
ZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJ
bnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBl
IGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogCkBAIC0xNDksNyArMTUxLDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
V2hlbkNoaWxkT3BhY2l0eU5vdE9uZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RF
U1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtl
TGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEsIHRydWUsIEludFJl
Y3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllcklt
cGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBy
b290UmVjdCwgMSwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5
ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDAuOWYsIHRydWUsIEludFJlY3Qo
KSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcklt
cGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKICAg
ICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwpAQCAtMTY2LDcgKzE2OCw3IEBAIFRFU1QoQ0NRdWFkQ3Vs
bGVyVGVzdCwgdmVyaWZ5Q3VsbFdoZW5DaGlsZE9wYXF1ZUZsYWdGYWxzZSkKIHsKICAgICBERUNM
QVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9v
dFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxk
TGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRS
ZWN0LCAxLjAsIGZhbHNlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAw
LCAtMTAwLCAxMDAwLCAxMDAwKSk7CiAgICAgQ0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5
ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKQEAgLTE4NSw3
ICsxODcsNyBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxlT25s
eSkKIAogICAgIGNoaWxkVHJhbnNmb3JtLnRyYW5zbGF0ZSg1MCwgNTApOwogCi0gICAgT3duUHRy
PENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VM
YXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtl
TGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwg
SW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJh
bnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2Vy
KEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogICAgIENDTGF5ZXJJdGVyYXRvclR5
cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CkBAIC0yMjIsNyArMjI0LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxs
Q2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTEpCiAKICAgICAvLyBNYWtlIHRoZSByb290IGxheWVy
J3MgcXVhZCBoYXZlIGV4dGVudCAoOTkuMSwgOTkuMSkgLT4gKDIwMC45LCAyMDAuOSkgdG8gbWFr
ZQogICAgIC8vIHN1cmUgaXQgZG9lc24ndCBnZXQgY3VsbGVkIGR1ZSB0byB0cmFuc2Zvcm0gcm91
bmRpbmcuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFRyYW5zZm9ybTsKKyAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByb290VHJhbnNmb3JtOwogICAgIHJvb3RUcmFuc2Zvcm0udHJh
bnNsYXRlKDk5LjEsIDk5LjEpOwogICAgIHJvb3RUcmFuc2Zvcm0uc2NhbGUoMS4wMTgpOwogCkBA
IC0yNTEsNyArMjUzLDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVy
VGlsZU5vbkludGVncmFsU2l6ZTIpCiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMC4x
LCAxMDAuMSk7CiAgICAgY2hpbGRUcmFuc2Zvcm0uc2NhbGUoMC45ODIpOwogCi0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggcm9vdFRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByb290VHJhbnNmb3JtOwogICAgIHJvb3RUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMCwgMTAwKTsK
IAogICAgIHJvb3RSZWN0ID0gY2hpbGRSZWN0ID0gSW50UmVjdCgwLCAwLCAxMDAsIDEwMCk7CkBA
IC0yNzYsNyArMjc4LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hpbGRM
aW5lc1VwQm90dG9tUmlnaHQpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMTAwLCAx
MDApOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXll
cigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0
KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBs
PiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9v
dFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5
ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgp
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1w
bCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogICAg
IENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBAIC0yOTUsNyArMjk3LDcgQEAgVEVTVChDQ1F1YWRDdWxs
ZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9uKQogCiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNs
YXRlKDUwLCA1MCk7CiAKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0g
bWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRM
YXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogICAgIEludFJlY3QgY2hpbGRPcGFxdWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJl
Y3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVjdC55KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBj
aGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDIpOwogICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQo
KSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1w
bCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwpAQCAt
MzE1LDcgKzMxNyw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lv
bjIpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDEwKTsKIAotICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFr
ZUxheWVyKDAsIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9w
YXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0
LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hp
bGRSZWN0LmhlaWdodCgpICogMyAvIDQpOwogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNo
aWxkUmVjdCwgMS4wLCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0LCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKElu
dFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwpAQCAtMzM1LDcgKzMzNyw3IEBAIFRFU1Qo
Q0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbkNoZWNrT3ZlcmN1bGwpCiAKICAg
ICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoNTAsIDQ5KTsKIAotICAgIE93blB0cjxDQ1RpbGVk
TGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAs
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3Qo
KSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3Qo
Y2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNo
aWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0Lmhl
aWdodCgpIC8gMik7CiAgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBt
YWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAs
IGZhbHNlLCBjaGlsZE9wYXF1ZVJlY3QsIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAt
MTAwLCAxMDAwLCAxMDAwKSk7CkBAIC0zNTYsNyArMzU4LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1YWRzRG9udE9jY2x1ZGUpCiAgICAgLy8gVXNlIGEg
c21hbGwgcm90YXRpb24gc28gYXMgdG8gbm90IGRpc3R1cmIgdGhlIGdlb21ldHJ5IHNpZ25pZmlj
YW50bHkuCiAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDEpOwogCi0gICAgT3duUHRyPENDVGls
ZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIo
MCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVj
dCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1w
bD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3Jt
LCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJl
Y3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQg
PSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBA
IC0zNzksMTEgKzM4MSwxMSBAQCBURVNUKENDUXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNB
bGlnbmVkUXVhZHNTYWZlbHlDdWxsZWQpCiAgICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNU
X1FVQURTCiAKICAgICAvLyBVc2UgYSBzbWFsbCByb3RhdGlvbiBzbyBhcyB0byBub3QgZGlzdHVy
YiB0aGUgZ2VvbWV0cnkgc2lnbmlmaWNhbnRseS4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBw
YXJlbnRUcmFuc2Zvcm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNm
b3JtOwogICAgIHBhcmVudFRyYW5zZm9ybS5yb3RhdGUoMSk7CiAKICAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIHBhcmVudFRyYW5zZm9ybSwgcm9v
dFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAg
ICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5
ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVz
aW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKICAgICBDQ0xheWVy
SXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOwogCkBAIC0zOTksOCArNDAxLDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0
LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyVGlsZSkKIHsKICAgICBERUNMQVJFX0FORF9J
TklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290
TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCks
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCks
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBy
b290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJl
Y3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBP
d25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIu
Z2V0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsK
ICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4o
JnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCkBAIC00MTYsOCArNDE4LDggQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyQ3VsbGVkVGlsZSkKIHsK
ICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJM
aXN0KTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXll
cihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4w
LCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxD
Q1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1h
a2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxk
UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAg
IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgxMDAs
IDEwMCwgMTAwLCAxMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0
ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCkBAIC00MzMsOCAr
NDM1LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JP
dmVyUGFydGlhbFRpbGVzKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFE
UwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigw
LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCks
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBj
aGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVy
TGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXll
cigwLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRS
ZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9u
VHJhY2tlcihJbnRSZWN0KDUwLCA1MCwgMjAwLCAyMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JU
eXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxp
c3QpOwogCkBAIC00NTAsOCArNDUyLDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlD
dWxsT3V0c2lkZVNjaXNzb3JPdmVyTm9UaWxlcykKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFM
SVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIg
PSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5
ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCks
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0
KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKICAgICBD
Q0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRl
clN1cmZhY2VMYXllckxpc3QpOwogCkBAIC00NjcsOCArNDY5LDggQEAgVEVTVChDQ1F1YWRDdWxs
ZXJUZXN0LCB2ZXJpZnlXaXRob3V0TWV0cmljcykKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFM
SVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIg
PSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5z
Zm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5
ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEu
MCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCks
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0
KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSwgZmFsc2UpOwog
ICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigm
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRlc3QuY3BwCmluZGV4IDMwNzUxZDc0ODMyNjhiNDVm
NmQ3OTE4MGRhOTE4ZTNiNTNmMzdmZmIuLjVjYmU3ZmM1NGY1MmYwMzIyMDJmNjk4MjQ4ZDZlMWRh
Zjc3MGE3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5k
ZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1Jl
bmRlclN1cmZhY2VUZXN0LmNwcApAQCAtMjYsMTQgKzI2LDE1IEBACiAKICNpbmNsdWRlICJjYy9D
Q1JlbmRlclN1cmZhY2UuaCIKIAotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAj
aW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0
ZS5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xlVGhyZWFkUHJveHkuaCIKICNpbmNsdWRlIDxnbW9j
ay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNp
bmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIApAQCAt
NzcsNyArNzgsNyBAQCBURVNUKENDUmVuZGVyU3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFu
Z2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJ
RF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2UtPnNldENvbnRlbnRSZWN0KHRlc3RSZWN0KSk7CiAK
ICAgICBPd25QdHI8Q0NMYXllckltcGw+IGR1bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUo
MSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZHVtbXlNYXRyaXg7CisgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggZHVtbXlNYXRyaXg7CiAgICAgZHVtbXlNYXRyaXgudHJhbnNsYXRlKDEu
MCwgMi4wKTsKIAogICAgIC8vIFRoZSByZXN0IG9mIHRoZSBzdXJmYWNlIHByb3BlcnRpZXMgYXJl
IGVpdGhlciBpbnRlcm5hbCBhbmQgc2hvdWxkIG5vdCBjYXVzZSBjaGFuZ2UsCkBAIC0xMDEsOCAr
MTAyLDggQEAgVEVTVChDQ1JlbmRlclN1cmZhY2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVh
dGVzQ29ycmVjdFNoYXJlZFF1YWRTdGF0ZSkKIAogICAgIEludFJlY3QgY29udGVudFJlY3QgPSBJ
bnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUoNTAsIDUwKSk7CiAgICAgSW50UmVjdCBj
bGlwUmVjdCA9IEludFJlY3QoSW50UG9pbnQoNSwgNSksIEludFNpemUoNDAsIDQwKSk7Ci0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggZHJhdzsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcmln
aW47CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhdzsKKyAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBvcmlnaW47CiAKICAgICBkcmF3LnRyYW5zbGF0ZSgzMCwgNDApOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9GbG9hdFF1YWRUZXN0LmNwcAppbmRleCA2Yzcw
OTFjYTQ5ZDY2MzU4MmVjNGQzM2E0MmZiZTNlM2I5M2NjOTc3Li4zZTJmOWJjZTY3YjFmZDJhOWQx
YTYxOGEwOTlhOTllOTYxMzNjNjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvRmxvYXRRdWFkVGVzdC5jcHAKQEAgLTI1LDIwICsyNSwyMCBAQAogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCiAKKyNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFk
LmgiCi0KLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotCiAjaW5jbHVkZSA8Z3Rl
c3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4K
IAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgewogCiBURVNUKEZsb2F0UXVhZFRlc3QsIElzUmVjdGls
aW5lYXJUZXN0KQogewogICAgIGNvbnN0IGludCBudW1SZWN0aWxpbmVhciA9IDg7Ci0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggcmVjdGlsaW5lYXJUcmFuc1tudW1SZWN0aWxpbmVhcl07CisgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVjdGlsaW5lYXJUcmFuc1tudW1SZWN0aWxpbmVhcl07
CiAgICAgcmVjdGlsaW5lYXJUcmFuc1sxXS5yb3RhdGUoOTApOwogICAgIHJlY3RpbGluZWFyVHJh
bnNbMl0ucm90YXRlKDE4MCk7CiAgICAgcmVjdGlsaW5lYXJUcmFuc1szXS5yb3RhdGUoMjcwKTsK
QEAgLTUwLDEyICs1MCwxNCBAQCBURVNUKEZsb2F0UXVhZFRlc3QsIElzUmVjdGlsaW5lYXJUZXN0
KQogICAgIHJlY3RpbGluZWFyVHJhbnNbN10ucm90YXRlKDE4MCk7CiAKICAgICBmb3IgKGludCBp
ID0gMDsgaSA8IG51bVJlY3RpbGluZWFyOyArK2kpIHsKLSAgICAgICAgRmxvYXRRdWFkIHF1YWQg
PSByZWN0aWxpbmVhclRyYW5zW2ldLm1hcFF1YWQoRmxvYXRSZWN0KDAuMDEwMTAxMDFmLCAwLjAx
MDEwMTAxZiwgMTAwLjAxMDEwMTAxZiwgMTAwLjAxMDEwMTAxZikpOworICAgICAgICBib29sIGNs
aXBwZWQgPSBmYWxzZTsKKyAgICAgICAgRmxvYXRRdWFkIHF1YWQgPSBDQ01hdGhVdGlsOjptYXBR
dWFkKHJlY3RpbGluZWFyVHJhbnNbaV0sIEZsb2F0UmVjdCgwLjAxMDEwMTAxZiwgMC4wMTAxMDEw
MWYsIDEwMC4wMTAxMDEwMWYsIDEwMC4wMTAxMDEwMWYpLCBjbGlwcGVkKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUoIWNsaXBwZWQpOwogICAgICAgICBFWFBFQ1RfVFJVRShxdWFkLmlzUmVjdGlsaW5l
YXIoKSk7CiAgICAgfQogCiAgICAgY29uc3QgaW50IG51bU5vblJlY3RpbGluZWFyID0gMTA7Ci0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbm9uUmVjdGlsaW5lYXJUcmFuc1tudW1Ob25SZWN0aWxp
bmVhcl07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbm9uUmVjdGlsaW5lYXJUcmFuc1tu
dW1Ob25SZWN0aWxpbmVhcl07CiAgICAgbm9uUmVjdGlsaW5lYXJUcmFuc1swXS5yb3RhdGUoMzU5
Ljk5OSk7CiAgICAgbm9uUmVjdGlsaW5lYXJUcmFuc1sxXS5yb3RhdGUoMC4wMDAwMDAxKTsKICAg
ICBub25SZWN0aWxpbmVhclRyYW5zWzJdLnJvdGF0ZSg4OS45OTk5OTkpOwpAQCAtNjgsNyArNzAs
OSBAQCBURVNUKEZsb2F0UXVhZFRlc3QsIElzUmVjdGlsaW5lYXJUZXN0KQogICAgIG5vblJlY3Rp
bGluZWFyVHJhbnNbOV0uc2tld1koMC4wMDAwMSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8
IG51bU5vblJlY3RpbGluZWFyOyArK2kpIHsKLSAgICAgICAgRmxvYXRRdWFkIHF1YWQgPSBub25S
ZWN0aWxpbmVhclRyYW5zW2ldLm1hcFF1YWQoRmxvYXRSZWN0KDAuMDEwMTAxMDFmLCAwLjAxMDEw
MTAxZiwgMTAwLjAxMDEwMTAxZiwgMTAwLjAxMDEwMTAxZikpOworICAgICAgICBib29sIGNsaXBw
ZWQgPSBmYWxzZTsKKyAgICAgICAgRmxvYXRRdWFkIHF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFk
KG5vblJlY3RpbGluZWFyVHJhbnNbaV0sIEZsb2F0UmVjdCgwLjAxMDEwMTAxZiwgMC4wMTAxMDEw
MWYsIDEwMC4wMTAxMDEwMWYsIDEwMC4wMTAxMDEwMWYpLCBjbGlwcGVkKTsKKyAgICAgICAgQVNT
RVJUX1RSVUUoIWNsaXBwZWQpOwogICAgICAgICBFWFBFQ1RfRkFMU0UocXVhZC5pc1JlY3RpbGlu
ZWFyKCkpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9M
YXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggNDkxZDQ4ZGI1MzE0OTRhNGYxZDJmZmI4MWYzZmE0
YTFhNGY3MDdhMy4uODIxM2RkODEyMDcxZTVhMzUwYzJkNWYxNzYwZTBiYmZhOGQ0OGY1ZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5j
cHAKQEAgLTM2LDkgKzM2LDExIEBACiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5o
IgogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7Cit1c2luZyBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogdXNpbmcgOjp0ZXN0aW5nOjpNb2NrOwogdXNpbmcg
Ojp0ZXN0aW5nOjpfOwogdXNpbmcgOjp0ZXN0aW5nOjpBdExlYXN0OwpAQCAtNDk2LDggKzQ5OCw4
IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVzdCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNlc0Nv
cnJlY3RCZWhhdmlvcikKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9C
RUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldERyYXdPcGFjaXR5KDAuNWYpKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldENs
aXBSZWN0KEludFJlY3QoMywgMywgOCwgOCkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VU
X05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZh
Y2UoMCkpOwotICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9S
KDAsIHRlc3RMYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7
Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMCwgdGVz
dExheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7
CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMCwgdGVz
dExheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAg
ICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5
ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsK
ICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0
TGF5ZXItPnNldERyYXdhYmxlQ29udGVudFJlY3QoSW50UmVjdCg0LCA1LCA2LCA3KSkpOwogICAg
IEVYUEVDVF9GQUxTRSh0ZXN0TGF5ZXItPm5lZWRzRGlzcGxheSgpKTsKIApAQCAtNTEyLDEzICs1
MTQsMTMgQEAgVEVTVF9GKExheWVyQ2hyb21pdW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1
c2VzQ29ycmVjdEJlaGF2aW9yKQogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09N
TUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0T3BhcXVlKHRydWUpKTsKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFBv
c2l0aW9uKEZsb2F0UG9pbnQoNC4wZiwgOS4wZikpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllf
U0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFJlcGxpY2FMYXllcihk
dW1teUxheWVyLmdldCgpKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01N
SVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9T
RVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zv
cm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoMCwgMCwgMCwgMCwgMCwgMCkpKTsKICAgICBFWEVD
VVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNl
dFNjcm9sbGFibGUodHJ1ZSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09N
TUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHRy
dWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigx
LCB0ZXN0TGF5ZXItPnNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKFJlZ2lvbihJbnRSZWN0KDEs
IDEsIDIsIDIpKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JF
SEFWSU9SKDEsIHRlc3RMYXllci0+c2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyh0cnVlKSk7CiAg
ICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExh
eWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQb2ludCgxMCwgMTApKSk7Ci0gICAgRVhFQ1VURV9B
TkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRUcmFu
c2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMCwgMCwgMCwgMCwgMCwgMCkpKTsKKyAgICBFWEVD
VVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNl
dFRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwog
ICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RM
YXllci0+c2V0RG91YmxlU2lkZWQoZmFsc2UpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VU
X05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldERlYnVnTmFtZSgiVGVzdCBM
YXllciIpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklP
UigxLCB0ZXN0TGF5ZXItPnNldERyYXdDaGVja2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoIXRlc3RM
YXllci0+ZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxlcygpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0xpbmtIaWdobGlnaHRUZXN0LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlua0hpZ2hsaWdodFRlc3QuY3BwCmluZGV4IGVkY2Zk
NGE2Mzc4MTA4NjVlNzVjNDFhYjM5M2U3MTQ3OTM2NDIxNGYuLmJlNDY3YTBkNWFmMmY4YTUwODcy
MjAwZTJlY2MyMGUyYTFmNDkwOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGlua0hpZ2hsaWdodFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvTGlua0hpZ2hsaWdodFRlc3QuY3BwCkBAIC0zMSwxMSArMzEsMTIgQEAKICNpbmNsdWRl
ICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUg
IlBhdGguaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+
CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2Ugewog
CkBAIC02MywxMSArNjQsMTAgQEAgVEVTVChMaW5rSGlnaGxpZ2h0VGVzdCwgdmVyaWZ5TGlua0hp
Z2hsaWdodExheWVyKQogICAgIEVYUEVDVF9UUlVFKGNvbnRlbnRMYXllci0+dHJhbnNmb3JtKCku
aXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSk7CiAgICAgRVhQRUNUX1RSVUUoY29udGVudExheWVy
LT50cmFuc2Zvcm0oKS5pc0ludGVnZXJUcmFuc2xhdGlvbigpKTsKIAotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXBvc2l0aW9uOwotICAgIEVYUEVDVF9UUlVF
KGNvbnRlbnRMYXllci0+dHJhbnNmb3JtKCkuZGVjb21wb3NlKGRlY29tcG9zaXRpb24pKTsKLQot
ICAgIEZsb2F0UG9pbnQgZXhwZWN0ZWRUcmFuc2xhdGlvbihwYXRoQm91bmRpbmdSZWN0LngoKSAr
IHBhdGhCb3VuZGluZ1JlY3Qud2lkdGgoKSAvIDIsIHBhdGhCb3VuZGluZ1JlY3QueSgpICsgcGF0
aEJvdW5kaW5nUmVjdC5oZWlnaHQoKSAvIDIpOwotICAgIEVYUEVDVF9FUShGbG9hdFBvaW50KGRl
Y29tcG9zaXRpb24udHJhbnNsYXRlWCwgZGVjb21wb3NpdGlvbi50cmFuc2xhdGVZKSwgZXhwZWN0
ZWRUcmFuc2xhdGlvbik7CisgICAgZmxvYXQgZXhwZWN0ZWRYVHJhbnNsYXRpb24gPSBwYXRoQm91
bmRpbmdSZWN0LngoKSArIHBhdGhCb3VuZGluZ1JlY3Qud2lkdGgoKSAvIDI7CisgICAgZmxvYXQg
ZXhwZWN0ZWRZVHJhbnNsYXRpb24gPSBwYXRoQm91bmRpbmdSZWN0LnkoKSArIHBhdGhCb3VuZGlu
Z1JlY3QuaGVpZ2h0KCkgLyAyOworICAgIEVYUEVDVF9GTE9BVF9FUShleHBlY3RlZFhUcmFuc2xh
dGlvbiwgY29udGVudExheWVyLT50cmFuc2Zvcm0oKS5tNDEoKSk7CisgICAgRVhQRUNUX0ZMT0FU
X0VRKGV4cGVjdGVkWVRyYW5zbGF0aW9uLCBjb250ZW50TGF5ZXItPnRyYW5zZm9ybSgpLm00Migp
KTsKIH0KIAogVEVTVChMaW5rSGlnaGxpZ2h0VGVzdCwgdmVyaWZ5R3JhcGhpY3NMYXllckNocm9t
aXVtRW1iZWRkaW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9U
aWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
VGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXggYzkxMjVhODUyOWIxMTE4ZDhmYWYzMjUy
ZDIxZDczMDNiMjk5MzYyMi4uODBiMDk5ZjE5ZmJmMzUzZjJhNTI2MDcyYTZmMTY0YmQ2NjM1MjU5
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hy
b21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0zMywxMCArMzMsMTIgQEAKICNpbmNsdWRlICJXZWJDb21w
b3NpdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVi
dWdTY29wZWRTZXRJbXBsVGhyZWFkCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiB1c2luZyBuYW1lc3BhY2UgV1RG
OwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogI2RlZmluZSBFWFBF
Q1RfRVFfUkVDVChhLCBiKSBcCiAgICAgRVhQRUNUX0VRKGEueCgpLCBiLngoKSk7IFwKQEAgLTEw
OSw3ICsxMTEsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERp
cnR5VGlsZXMpCiAKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52
YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRz
KEludFNpemUoMTAwLCAyMDApKTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwg
bGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFu
c2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygp
LndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxh
eWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBs
YXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVy
LT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2Ns
dWRlZCk7CkBAIC0zMjcsNyArMzI5LDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBw
dXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVzKQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUo
MTAwLCAxMDApKTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJv
dW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkg
LyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRW
aXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwgMCwgMTAwLCAxMDApKTsKICAgICBsYXllci0+aW52
YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOwogICAgIGxheWVyLT51cGRhdGVM
YXllclJlY3QodXBkYXRlciwgSW50UmVjdCgwLCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CkBA
IC0xMDE4LDcgKzEwMjAsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFp
bnRlZFdpdGhPY2NsdXNpb24pCiAgICAgLy8gVGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgogCiAg
ICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldERy
YXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5k
cygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOworICAg
IGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAs
IDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0
KCkgLyAyLjApKTsKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAw
LCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50
UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CkBAIC0xMDYzLDcgKzEwNjUsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxp
dHlDb25zdHJhaW50cykKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKICAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0RHJhd1Ry
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCku
d2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5
ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwg
bGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAv
IDIuMCkpOwogCiAgICAgLy8gVGhlIHBhcnRpYWxseSBvY2NsdWRlZCB0aWxlcyAoYnkgdGhlIDE1
MCBvY2NsdXNpb24gaGVpZ2h0KSBhcmUgdmlzaWJsZSBiZXlvbmQgdGhlIG9jY2x1c2lvbiwgc28g
bm90IGN1bGxlZC4KICAgICBvY2NsdWRlZC5zZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwg
MzAwLCAxNTApKTsKQEAgLTExMTQsNyArMTExNiw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVt
VGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91dEludmFsaWRhdGlvbikKICAgICAvLyBUaGUgdGls
ZSBzaXplIGlzIDEwMHgxMDAuCiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2
MDApKTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgx
LCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygp
LmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAs
IGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCiAgICAgb2NjbHVkZWQuc2V0T2Nj
bHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMwMCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2li
bGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2MDAsIDYwMCkpOwpAQCAtMTE0OSwxMCArMTE1MSwx
MCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNp
b25BbmRUcmFuc2Zvcm1zKQogICAgIC8vIFRoaXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29y
a3Mgd2hlbiB0aGUgb2NjbHVkZWQgcmVnaW9uIChpbiBzY3JlZW4gc3BhY2UpCiAgICAgLy8gaXMg
dHJhbnNmb3JtZWQgZGlmZmVyZW50bHkgdGhhbiB0aGUgbGF5ZXIuCiAgICAgbGF5ZXItPnNldEJv
dW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVu
VHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsK
ICAgICBzY3JlZW5UcmFuc2Zvcm0uc2NhbGUoMC41KTsKICAgICBsYXllci0+c2V0U2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3JtKTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9y
bShzY3JlZW5UcmFuc2Zvcm0gKiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXll
ci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4w
KSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3JtICogV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAy
LjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCiAgICAgb2NjbHVkZWQuc2V0
T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDE1MCwgNTApKTsKICAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBvaW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwpAQCAt
MTE3OSw3ICsxMTgxLDcgQEAgVEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50
ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykKICAgICAvLyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5v
bmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAgIGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDAuNSk7
CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNl
dERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJv
dW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwor
ICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAs
IDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVp
Z2h0KCkgLyAyLjApKTsKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwg
MjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CkBAIC0xMjEyLDEwICsxMjE0LDEwIEBAIFRF
U1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNj
YWxpbmcpCiAgICAgbGF5ZXItPmZha2VMYXllclRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFy
ZVJlY3RDb3VudCgpOwogCiAgICAgLy8gVGhpcyBtYWtlcyBzdXJlIGNvbnRlbnQgc2NhbGluZyBh
bmQgdHJhbnNmb3JtcyB3b3JrIHRvZ2V0aGVyLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNj
cmVlblRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFuc2Zv
cm07CiAgICAgc2NyZWVuVHJhbnNmb3JtLnNjYWxlKDAuNSk7CiAgICAgbGF5ZXItPnNldFNjcmVl
blNwYWNlVHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSk7Ci0gICAgbGF5ZXItPnNldERyYXdUcmFu
c2Zvcm0oc2NyZWVuVHJhbnNmb3JtICogVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwg
bGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAv
IDIuMCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSAqIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgp
IC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAogICAgIG9jY2x1ZGVk
LnNldE9jY2x1c2lvbihJbnRSZWN0KDEwMCwgMTAwLCAxNTAsIDEwMCkpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7
CkBAIC0xMjQ0LDcgKzEyNDYsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2li
bGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAgIEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IEludFJl
Y3QoMCwgMCwgMTAwLCAxNTApOwogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRz
LnNpemUoKSk7Ci0gICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRy
aXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3Vu
ZHMoKS5oZWlnaHQoKSAvIDIuMCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8g
Mi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKICAgICBsYXllci0+c2V0Vmlz
aWJsZUxheWVyUmVjdCh2aXNpYmxlQm91bmRzKTsKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHko
MSk7CiAKQEAgLTEzMzgsNyArMTM0MCw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
cGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAgSW50UmVjdCB2aXNpYmxlQm91bmRzID0gSW50UmVj
dCgwLCAwLCAxMDAsIDMwMCk7CiAKICAgICBsYXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMu
c2l6ZSgpKTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5k
cygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAy
LjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNp
YmxlTGF5ZXJSZWN0KHZpc2libGVCb3VuZHMpOwogICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgx
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3QuY3BwCmluZGV4IDRlYmU0ODYyNmI5OWRhNmI1M2U0MGI1
MzNhZjAwYmMzYmY4MjQ0NDUuLjkzN2NlZTIwMmE2Y2M1YTZjNjQwMDhjNzJiNGMwNjE0ODVjOTVk
ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXhUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dl
YlRyYW5zZm9ybWF0aW9uTWF0cml4VGVzdC5jcHAKQEAgLTE1Myw2ICsxNTMsMTUgQEAgVEVTVChX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3QsIHZlcmlmeUNvbnN0cnVjdG9yRm9yMmRFbGVtZW50
cykKICAgICBFWFBFQ1RfUk9XNF9FUSgwLCAwLCAwLCAxLCBBKTsKIH0KIAorVEVTVChXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeFRlc3QsIHZlcmlmeUNvbnN0cnVjdG9yRm9yQWxsRWxlbWVudHMpCit7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggQSgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5
LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNik7CisgICAgRVhQRUNUX1JPVzFfRVEoMSwgNSwg
IDksIDEzLCBBKTsKKyAgICBFWFBFQ1RfUk9XMl9FUSgyLCA2LCAxMCwgMTQsIEEpOworICAgIEVY
UEVDVF9ST1czX0VRKDMsIDcsIDExLCAxNSwgQSk7CisgICAgRVhQRUNUX1JPVzRfRVEoNCwgOCwg
MTIsIDE2LCBBKTsKK30KKwogVEVTVChXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3QsIHZlcmlm
eUNvcHlDb25zdHJ1Y3RvcikKIHsKICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBBOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145177</attachid>
            <date>2012-05-31 17:08:20 -0700</date>
            <delta_ts>2012-05-31 17:16:10 -0700</delta_ts>
            <desc>Same patch with changelogs</desc>
            <filename>bug-87788-20120531170819.patch</filename>
            <type>text/plain</type>
            <size>224321</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0v
Q2hhbmdlTG9nIGIvU291cmNlL1BsYXRmb3JtL0NoYW5nZUxvZwppbmRleCBhZGYxMTljNTZhYjFi
MDdkNTY4MzJmYTcwNGJmYzkyN2U1MTZhNGE0Li5hODU2NTU0YjkzNGUxMjVjYWY0Y2Y3ZGY2NjZl
YzUyNTU3MTNhMDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9QbGF0Zm9ybS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAxMi0wNS0zMSAg
U2hhd24gU2luZ2ggIDxzaGF3bnNpbmdoQGNocm9taXVtLm9yZz4KKworICAgICAgICBbY2hyb21p
dW1dIE1pZ3JhdGUgdG8gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg3Nzg4CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBjaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXguaDoKKyAgICAgICAgKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KToKKwog
MjAxMi0wNS0zMSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNocm9taXVtLm9yZz4KIAogICAgICAg
ICBbY2hyb21pdW1dIEFkZCBjb3B5IGNvbnN0cnVjdG9yIHRvIFdlYkZpbHRlck9wZXJhdGlvbnMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA3NjhhODk3ODc1NGZhNGVmMzAwYWMxN2E4YTIzY2IzMzIzZDFmODdiLi41
ZjVjN2Q3YTUwMzQ4NGE1ZGM1N2FmMGM1NDY2NTgwM2I2Y2E2NGViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTgwIEBACisyMDEyLTA1LTMxICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gTWlncmF0ZSB0byBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
ODc3ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBD
b3ZlcmVkIGJ5IGFsbCBleGlzdGluZyBsYXlvdXQgdGVzdHMgYW5kIHVuaXQgdGVzdHMuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCByZXBsYWNlcyBhbGwgb2NjdXJyZW5jZXMgb2YgV2ViQ29yZTo6VHJh
bnNmb3JtYXRpb25NYXRyaXgKKyAgICAgICAgd2l0aCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGluIHRoZSBjaHJvbWl1bSBjb21wb3NpdG9yIGNvZGUuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4KToKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpzZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVt
OjpzZXRUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJDaHJvbWl1bTo6c2V0VHJh
bnNmb3JtRnJvbUFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllckNocm9taXVtOjpzdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJD
b3JlOjpMYXllckNocm9taXVtOjpkcmF3VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6Okxh
eWVyQ2hyb21pdW06OnNldERyYXdUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aHJvbWl1bTo6c2NyZWVuU3BhY2VUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJD
aHJvbWl1bTo6c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdDaGVja2VyYm9hcmRRdWFkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9yZGVyUXVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNrZ3JvdW5k
RmlsdGVycyk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdS
ZW5kZXJTdXJmYWNlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21p
dW06OmRyYXdTb2xpZENvbG9yUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdUaWxlUXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheSk6CisgICAgICAgIChXZWJDb3JlOjpMYXllclJl
bmRlcmVyQ2hyb21pdW06OnRvR0xNYXRyaXgpOgorICAgICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5k
ZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
UmVuZGVyZXJDaHJvbWl1bTo6Y29weVRleHR1cmVUb0ZyYW1lYnVmZmVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6cHJvamVjdGlvbk1hdHJpeCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXllclJlbmRlcmVyQ2hyb21pdW06OndpbmRvd01hdHJpeCk6Cisg
ICAgICAgIChMYXllclJlbmRlcmVyQ2hyb21pdW0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xpbmtIaWdobGlnaHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGlua0hp
Z2hsaWdodDo6TGlua0hpZ2hsaWdodCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vUmVuZGVyU3VyZmFjZUNocm9taXVtLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
dXJmYWNlQ2hyb21pdW06OmRyYXdUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3VyZmFjZUNocm9taXVtOjpzZXREcmF3VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN1cmZhY2VDaHJvbWl1bTo6b3JpZ2luVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6c2V0T3JpZ2luVHJhbnNmb3JtKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6c2NyZWVuU3BhY2VUcmFuc2Zvcm0pOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFjZUNocm9taXVtOjpzZXRTY3JlZW5TcGFjZVRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnJlcGxpY2FE
cmF3VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN1cmZhY2VDaHJvbWl1bTo6
c2V0UmVwbGljYURyYXdUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3VyZmFj
ZUNocm9taXVtOjpyZXBsaWNhT3JpZ2luVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclN1cmZhY2VDaHJvbWl1bTo6c2V0UmVwbGljYU9yaWdpblRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnJlcGxpY2FTY3JlZW5TcGFjZVRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdXJmYWNlQ2hyb21pdW06OnNldFJlcGxp
Y2FTY3JlZW5TcGFjZVRyYW5zZm9ybSk6CisgICAgICAgIChSZW5kZXJTdXJmYWNlQ2hyb21pdW0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUaWxlZExheWVyQ2hyb21pdW06OnVwZGF0ZVRpbGVz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1
cnZlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDVHJhbnNmb3JtQW5pbWF0aW9u
Q3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGFtYWdl
VHJhY2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RhbWFnZVRyYWNrZXI6OmV4dGVuZERh
bWFnZUZvckxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGFtYWdlVHJhY2tlcjo6ZXh0ZW5k
RGFtYWdlRm9yUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEcmF3UXVhZC5oOgorICAgICAgICAoV2ViQ29yZTo6Q0NEcmF3UXVhZDo6cXVh
ZFRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RyYXdRdWFkOjpsYXllclRyYW5zZm9y
bSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRB
bmltYXRpb25DdXJ2ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1RyYW5zZm9ybUtleWZyYW1l
OjpjbG9uZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlv
bkN1cnZlOjpnZXRWYWx1ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oOgorICAgICAgICAoQ0NLZXlmcmFtZWRUcmFu
c2Zvcm1BbmltYXRpb25DdXJ2ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnRpY2tBbmltYXRpb25zKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5o
OgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpxdWFkVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRU
cmFuc2Zvcm1Gcm9tQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpz
ZXRTdWJsYXllclRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0
VHJhbnNmb3JtKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVySW1wbC5oOgorICAgICAgICAoQ0NMYXllckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6Q0NM
YXllckltcGw6OnN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJ
bXBsOjpkcmF3VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzZXRE
cmF3VHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJJbXBsOjpzY3JlZW5TcGFj
ZVRyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVySW1wbDo6c2V0U2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
TGF5ZXJTb3J0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclNvcnRlcjo6TGF5ZXJT
aGFwZTo6TGF5ZXJTaGFwZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyU29ydGVyOjpjcmVh
dGVHcmFwaE5vZGVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyU29ydGVyLmg6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoTGF5ZXJTaGFwZSk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3Qu
aDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RDb21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0Q29tbW9uOjpj
YWxjdWxhdGVWaXNpYmxlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjppc1N1cmZhY2VCYWNrRmFj
ZVZpc2libGUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FsY3VsYXRlVmlzaWJsZUxheWVyUmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjppc1NjYWxlT3JUcmFuc2xhdGlvbik6CisgICAgICAgIChXZWJD
b3JlOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0Q29tbW9uLmg6CisgICAgICAgIChDQ0xheWVyVHJlZUhvc3RDb21t
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZGFtYWdlSW5TdXJmYWNlU3BhY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpwcm9qZWN0UG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6bWFwUG9pbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6Q0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6Q0NNYXRoVXRpbDo6cHJvamVjdENsaXBwZWRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkND
TWF0aFV0aWw6Om1hcENsaXBwZWRRdWFkKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTWF0aFV0aWw6
Om1hcFF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NNYXRoVXRpbDo6cHJvamVjdFF1YWQpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuaDoKKyAg
ICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDTWF0aFV0aWwp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJh
Y2tlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0cmFuc2Zvcm1TdXJmYWNlT3BhcXVlUmVnaW9u
KToKKyAgICAgICAgKFdlYkNvcmU6OnJlZHVjZU9jY2x1c2lvbkJlbG93U3VyZmFjZSk6CisgICAg
ICAgIChXZWJDb3JlOjpjb250ZW50VG9TY3JlZW5TcGFjZVRyYW5zZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OmFkZE9jY2x1c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09j
Y2x1ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6dGVzdENvbnRlbnRSZWN0T2Nj
bHVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcHV0ZVVub2NjbHVkZWRDb250ZW50UmVjdCk6
CisgICAgICAgIChXZWJDb3JlOjo6OnVub2NjbHVkZWRDb250cmlidXRpbmdTdXJmYWNlQ29udGVu
dFJlY3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVz
aW9uVHJhY2tlci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
T3ZlcmRyYXdNZXRyaWNzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNz
OjpkaWRVcGxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPdmVyZHJhd01ldHJpY3M6OmRpZEN1
bGxGb3JEcmF3aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNDT3ZlcmRyYXdNZXRyaWNzOjpkaWRE
cmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3
TWV0cmljcy5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKENDT3ZlcmRyYXdNZXRyaWNz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIu
Y3BwOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyUGFz
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclBhc3M6OmFwcGVuZFF1YWRzVG9GaWxs
U2NyZWVuKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1JlbmRl
clN1cmZhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6c2V0RHJhd1Ry
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OmRyYXdUcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpzZXRPcmlnaW5UcmFuc2Zv
cm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpvcmlnaW5UcmFuc2Zvcm0p
OgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpzZXRTY3JlZW5TcGFjZVRyYW5z
Zm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnNjcmVlblNwYWNlVHJh
bnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3VyZmFjZTo6c2V0UmVwbGljYURy
YXdUcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNlOjpyZXBsaWNh
RHJhd1RyYW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1JlbmRlclN1cmZhY2U6OnNldFJl
cGxpY2FPcmlnaW5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6Q0NSZW5kZXJTdXJmYWNl
OjpyZXBsaWNhT3JpZ2luVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkNDUmVuZGVyU3Vy
ZmFjZTo6c2V0UmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDUmVuZGVyU3VyZmFjZTo6cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKToKKyAgICAgICAg
KENDUmVuZGVyU3VyZmFjZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NTaGFyZWRRdWFk
U3RhdGU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1NoYXJlZFF1YWRTdGF0ZTo6Q0NT
aGFyZWRRdWFkU3RhdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDU2hhcmVkUXVhZFN0YXRlLmg6CisgICAgICAgIChDQ1NoYXJlZFF1YWRTdGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDQ1NoYXJlZFF1YWRTdGF0ZTo6cXVhZFRyYW5zZm9ybSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ1NoYXJlZFF1YWRTdGF0ZTo6bGF5ZXJUcmFuc2Zvcm0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDQ1NvbGlkQ29sb3JMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0p
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxh
eWVySW1wbC5oOgorICAgICAgICAoQ0NTb2xpZENvbG9yTGF5ZXJJbXBsKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNDVGlsZWRMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaDoKKyAgICAg
ICAgKENDVGlsZWRMYXllckltcGwpOgorCiAyMDEyLTA1LTMxICBEYW5hIEphbnNlbnMgIDxkYW5h
a2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBkcmF3aW5nIGNvZGUg
Zm9yIFJlbmRlclN1cmZhY2VzIGludG8gTGF5ZXJSZW5kZXJlckNocm9taXVtCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCmluZGV4IDZiYTA1NmFkY2U1ODEyOTY1NTViMDdjMGVjNzM0OTlmZTk0Nzc3
ZGQuLjljMjdhYjkwMjA1NmUwZGM4ZjQwMmY3M2NkNjA3Y2ZiY2I2OTkxNGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMTItMDUtMzEgIFNoYXduIFNpbmdo
ICA8c2hhd25zaW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNaWdyYXRl
IHRvIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD04Nzc4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogc3JjL1dlYkxheWVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTGF5ZXI6OnNldFN1YmxheWVyVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdDo6V2ViTGF5
ZXI6OnNldFRyYW5zZm9ybSk6CisgICAgICAgICogdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9u
LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVHJhbnNmb3JtVHJhbnNpdGlvbjo6Z2V0
VmFsdWUpOgorICAgICAgICAqIHRlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oOgorICAgICAg
ICAqIHRlc3RzL0NDRGFtYWdlVHJhY2tlclRlc3QuY3BwOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OmV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvQ0NLZXlmcmFtZWRBbmltYXRp
b25DdXJ2ZVRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRFU1QpOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJJdGVyYXRvclRlc3Qu
Y3BwOgorICAgICAgICAqIHRlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcDoKKyAgICAgICAgKiB0
ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xh
eWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdERl
dmljZVNjYWxlRmFjdG9yU2NhbGVzVmlld3BvcnRBbmRMYXllcnM6OmNvbW1pdENvbXBsZXRlT25D
Q1RocmVhZCk6CisgICAgICAgIChXVEY6OnNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcpOgor
ICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0QXRvbWljQ29tbWl0V2l0aFBhcnRpYWxV
cGRhdGU6OmJlZ2luVGVzdCk6CisgICAgICAgIChXVEY6OnNldFRlc3RMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKToKKyAgICAgICAgKFdURjo6Q0NMYXllclRyZWVIb3N0VGVzdExheWVyT2NjbHVz
aW9uOjpiZWdpblRlc3QpOgorICAgICAgICAoV1RGOjpDQ0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJP
Y2NsdXNpb25XaXRoRmlsdGVyczo6YmVnaW5UZXN0KToKKyAgICAgICAgKFdURjo6Q0NMYXllclRy
ZWVIb3N0VGVzdE1hbnlTdXJmYWNlczo6YmVnaW5UZXN0KToKKyAgICAgICAgKiB0ZXN0cy9DQ0xh
eWVyVHJlZVRlc3RDb21tb24uaDoKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAgICAgKiB0
ZXN0cy9DQ01hdGhVdGlsVGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFj
a2VyVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVz
dDo6Y3JlYXRlUm9vdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdDo6Y3JlYXRlTGF5ZXIpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJh
Y2tlclRlc3Q6OmNyZWF0ZVN1cmZhY2UpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3Q6OmNyZWF0ZURyYXdpbmdMYXllcik6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6Y3JlYXRlUmVwbGljYUxheWVyKToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpjcmVhdGVEcmF3aW5nU3VyZmFj
ZSk6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJUZXN0KToKKyAgICAgICAgKFdlYktpdFRl
c3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0OjpzZXRCYXNlUHJvcGVydGllcyk6CisgICAgICAg
IChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdDo6c2V0UHJvcGVydGllcyk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFJvdGF0ZWRDaGlsZDo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
VHJhbnNsYXRlZENoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RDaGlsZEluUm90YXRlZENoaWxkOjpydW5NeVRlc3QpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RWaXNpdFRhcmdldFR3b1RpbWVz
OjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3RTdXJmYWNlUm90YXRlZE9mZkF4aXM6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0
czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VXaXRoVHdvT3BhcXVlQ2hpbGRyZW46OnJ1
bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdE92
ZXJsYXBwaW5nU3VyZmFjZVNpYmxpbmdzOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVz
dHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nc1dpdGhU
d29UcmFuc2Zvcm1zOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVz
aW9uVHJhY2tlclRlc3RGaWx0ZXJzOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3QzZFRyYW5zZm9ybTo6cnVuTXlUZXN0KToKKyAgICAgICAg
KFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UGVyc3BlY3RpdmVUcmFuc2Zvcm06
OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVz
dFBlcnNwZWN0aXZlVHJhbnNmb3JtQmVoaW5kQ2FtZXJhOjpydW5NeVRlc3QpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllckJlaGluZENhbWVyYURvZXNO
b3RPY2NsdWRlOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9u
VHJhY2tlclRlc3RMYXJnZVBpeGVsc09jY2x1ZGVJbnNpZGVDbGlwUmVjdDo6cnVuTXlUZXN0KToK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZU9jY2x1
c2lvblRyYW5zbGF0ZXNUb1BhcmVudDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3Rz
OjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RG9udE9jY2x1ZGVQaXhlbHNOZWVkZWRGb3JCYWNrZ3Jv
dW5kRmlsdGVyOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9u
VHJhY2tlclRlc3RUd29CYWNrZ3JvdW5kRmlsdGVyc1JlZHVjZU9jY2x1c2lvblR3aWNlOjpydW5N
eVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3REb250
UmVkdWNlT2NjbHVzaW9uQmVsb3dCYWNrZ3JvdW5kRmlsdGVyOjpydW5NeVRlc3QpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3REb250UmVkdWNlT2NjbHVzaW9u
SWZCYWNrZ3JvdW5kRmlsdGVySXNPY2NsdWRlZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UmVkdWNlT2NjbHVzaW9uV2hlbkJhY2tncm91
bmRGaWx0ZXJJc1BhcnRpYWxseU9jY2x1ZGVkOjpydW5NeVRlc3QpOgorICAgICAgICAqIHRlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwOgorICAgICAgICAqIHRlc3RzL0NDUmVuZGVyU3VyZmFjZVRl
c3QuY3BwOgorICAgICAgICAqIHRlc3RzL0Zsb2F0UXVhZFRlc3QuY3BwOgorICAgICAgICAqIHRl
c3RzL0xheWVyQ2hyb21pdW1UZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9MaW5rSGlnaGxpZ2h0
VGVzdC5jcHA6CisgICAgICAgICogdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHA6Cisg
ICAgICAgICogdGVzdHMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXhUZXN0LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6VEVTVCk6CisgICAgICAgIChXZWJLaXQpOgorCiAyMDEyLTA1LTMxICBEYW5hIEph
bnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gTW92ZSBk
cmF3aW5nIGNvZGUgZm9yIFJlbmRlclN1cmZhY2VzIGludG8gTGF5ZXJSZW5kZXJlckNocm9taXVt
CmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4LmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4LmgKaW5kZXggNTIzNjQ2ZWI3Y2IwYjU0OGEyMTI1MThiNTZkN2VkOTg0
MzE2NmU0Mi4uMzEzNWI0ZTY4MDFmMWUwOThjNzZiZjQ3NTJlMDUyMmRmYjgwZDRhYiAxMDA2NDQK
LS0tIGEvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeC5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXguaApAQCAtNDcsNiArNDcsMTAgQEAgY2xhc3MgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggewogcHVibGljOgogICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgoZG91YmxlIGEsIGRvdWJsZSBiLCBkb3VibGUgYywgZG91Ymxl
IGQsIGRvdWJsZSBlLCBkb3VibGUgZik7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoZG91
YmxlIG0xMSwgZG91YmxlIG0xMiwgZG91YmxlIG0xMywgZG91YmxlIG0xNCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb3VibGUgbTIxLCBkb3VibGUgbTIyLCBkb3VibGUgbTIzLCBkb3Vi
bGUgbTI0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtMzEsIGRvdWJsZSBt
MzIsIGRvdWJsZSBtMzMsIGRvdWJsZSBtMzQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZG91YmxlIG00MSwgZG91YmxlIG00MiwgZG91YmxlIG00MywgZG91YmxlIG00NCk7CiAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKICAg
ICB+V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAppbmRleCA2MDkyNzU3OGQ5ZTk2YTk5MzgxMGRmNjEzYjhhZTBiN2Fl
OGZmZGM0Li5lZWZkMTU0ZThhOTM1ZmJlM2YwYTcyMDdjNGU0MDNmNmRiNzU4MGMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L1dlYlRyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9z
dXBwb3J0L1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtNDIsNiArNDIsMTQgQEAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXg6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KGRvdWJsZSBhLCBk
b3VibGUgYiwgZG91YmxlIGMsIGQKIHsKIH0KIAorV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KGRvdWJsZSBtMTEsIGRvdWJsZSBtMTIsIGRvdWJsZSBtMTMs
IGRvdWJsZSBtMTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG91YmxlIG0yMSwgZG91YmxlIG0yMiwgZG91YmxlIG0yMywgZG91YmxlIG0yNCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgbTMx
LCBkb3VibGUgbTMyLCBkb3VibGUgbTMzLCBkb3VibGUgbTM0LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBtNDEsIGRvdWJsZSBtNDIsIGRv
dWJsZSBtNDMsIGRvdWJsZSBtNDQpCisgICAgOiBtX3ByaXZhdGUobTExLCBtMTIsIG0xMywgbTE0
LCBtMjEsIG0yMiwgbTIzLCBtMjQsIG0zMSwgbTMyLCBtMzMsIG0zNCwgbTQxLCBtNDIsIG00Mywg
bTQ0KQoreworfQorCiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHQpCiAgICAgOiBtX3ByaXZhdGUo
dC5tX3ByaXZhdGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCmluZGV4IDc0NDU5YTg1MWQxYWMy
NmFlZWE4NDIxYTQzZTE1ZjgzY2Y0MWQwMzAuLmY2MWZkMzVkNTMwMDE0MWYyYjJmZjI2Yjg3NjRi
OGY2MmUwM2UyM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw5ICs0NCwxMCBAQAog
I2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgogI2luY2x1ZGUgInNraWEvZXh0L3BsYXRm
b3JtX2NhbnZhcy5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KIHVzaW5nIG5hbWVzcGFjZSBz
dGQ7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OworCituYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBpbnQgc19uZXh0TGF5ZXJJZCA9IDE7CiAKQEAgLTM2MSw3ICsz
NjIsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
IHBvc2l0aW9uKQogICAgIHNldE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1
bTo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1Ymxh
eWVyVHJhbnNmb3JtKQordm9pZCBMYXllckNocm9taXVtOjpzZXRTdWJsYXllclRyYW5zZm9ybShj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0pCiB7CiAgICAg
aWYgKG1fc3VibGF5ZXJUcmFuc2Zvcm0gPT0gc3VibGF5ZXJUcmFuc2Zvcm0pCiAgICAgICAgIHJl
dHVybjsKQEAgLTM2OSw3ICszNzAsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldFN1YmxheWVy
VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYQogICAgIHNl
dE5lZWRzQ29tbWl0KCk7CiB9CiAKLXZvaWQgTGF5ZXJDaHJvbWl1bTo6c2V0VHJhbnNmb3JtKGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIExheWVyQ2hyb21pdW06
OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQog
ewogICAgIGlmIChtX3RyYW5zZm9ybSA9PSB0cmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsKQEAg
LTU5MCw3ICs1OTEsNyBAQCB2b2lkIExheWVyQ2hyb21pdW06OnNldE9wYWNpdHlGcm9tQW5pbWF0
aW9uKGZsb2F0IG9wYWNpdHkpCiAgICAgbV9vcGFjaXR5ID0gb3BhY2l0eTsKIH0KIAotdm9pZCBM
YXllckNocm9taXVtOjpzZXRUcmFuc2Zvcm1Gcm9tQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIExheWVyQ2hyb21pdW06OnNldFRyYW5zZm9ybUZy
b21BbmltYXRpb24oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKIHsK
ICAgICAvLyBUaGlzIGlzIGNhbGxlZCBkdWUgdG8gYW4gb25nb2luZyBhY2NlbGVyYXRlZCBhbmlt
YXRpb24uIFNpbmNlIHRoaXMgYW5pbWF0aW9uIGlzCiAgICAgLy8gYWxzbyBiZWluZyBydW4gb24g
dGhlIGltcGwgdGhyZWFkLCB0aGVyZSBpcyBubyBuZWVkIHRvIHJlcXVlc3QgYSBjb21taXQgdG8g
cHVzaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vTGF5ZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oCmluZGV4IDliZTAyNzllMmFlYmNkN2NkYzdjNjhiZDAyNWVi
ZTA4NDFjMTc1ZDMuLmE5M2QxNzYwZmNhZDAwZTIxMjcwZDUwNjFhMDI0N2UyZjYyMWJkY2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVy
Q2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9MYXllckNocm9taXVtLmgKQEAgLTQxLDExICs0MSwxMSBAQAogI2luY2x1ZGUgIlJlZ2lvbi5o
IgogI2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlNoYWRlckNo
cm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDT2NjbHVzaW9u
VHJhY2tlci5oIgogCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFz
c1JlZlB0ci5oPgpAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBpbnQgaWQo
KSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2xheWVySWQ7IH0KICAgICB2aXJ0dWFsIHZvaWQg
c2V0T3BhY2l0eUZyb21BbmltYXRpb24oZmxvYXQpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgZmxv
YXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fb3BhY2l0eTsgfQotICAgIHZp
cnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1Gcm9tQW5pbWF0aW9uKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JikgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KKyAg
ICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtRnJvbUFuaW1hdGlvbihjb25zdCBXZWJLaXQ6Oldl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3RyYW5zZm9ybTsgfQogICAgIHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgYm91bmRz
KCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3VuZHM7IH0KIAogICAgIGNvbnN0IExheWVy
Q2hyb21pdW0qIHJvb3RMYXllcigpIGNvbnN0OwpAQCAtMTMwLDEwICsxMzAsMTAgQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0UG9zaXRpb24oY29uc3QgRmxvYXRQb2ludCYpOwogICAgIEZsb2F0UG9p
bnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CiAKLSAgICB2b2lkIHNl
dFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1
cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0U3VibGF5ZXJUcmFuc2Zvcm0o
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworICAgIGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdWJsYXllclRyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICB2b2lkIHNldFRyYW5zZm9ybShjb25zdCBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CiAgICAgYm9vbCB0cmFuc2Zvcm1Jc0Fu
aW1hdGluZygpIGNvbnN0OwogCiAgICAgY29uc3QgSW50UmVjdCYgdmlzaWJsZUxheWVyUmVjdCgp
IGNvbnN0IHsgcmV0dXJuIG1fdmlzaWJsZUxheWVyUmVjdDsgfQpAQCAtMjEzLDExICsyMTMsMTEg
QEAgcHVibGljOgogICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm1Jc0FuaW1hdGluZyhi
b29sIGFuaW1hdGluZykgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtSXNBbmltYXRpbmcgPSBhbmlt
YXRpbmc7IH0KIAogICAgIC8vIFRoaXMgbW92ZXMgZnJvbSBsYXllciBzcGFjZSwgd2l0aCBvcmln
aW4gaW4gdGhlIGNlbnRlciB0byB0YXJnZXQgc3BhY2Ugd2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBs
ZWZ0Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KLSAgICB2b2lkIHNldERyYXdUcmFuc2Zvcm0o
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX2RyYXdUcmFuc2Zvcm0gPSBt
YXRyaXg7IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3
VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9CisgICAgdm9pZCBz
ZXREcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCkgeyBtX2RyYXdUcmFuc2Zvcm0gPSBtYXRyaXg7IH0KICAgICAvLyBUaGlzIG1vdmVzIGZy
b20gbGF5ZXIgc3BhY2UsIHdpdGggb3JpZ2luIHRoZSB0b3AgbGVmdCB0byBzY3JlZW4gc3BhY2Ug
d2l0aCBvcmlnaW4gaW4gdGhlIHRvcCBsZWZ0Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5TcGFjZVRy
YW5zZm9ybTsgfQotICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtID0gbWF0cml4
OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2NyZWVuU3Bh
Y2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOyB9Cisg
ICAgdm9pZCBzZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybSA9IG1hdHJpeDsg
fQogICAgIGNvbnN0IEludFJlY3QmIGRyYXdhYmxlQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVy
biBtX2RyYXdhYmxlQ29udGVudFJlY3Q7IH0KICAgICB2b2lkIHNldERyYXdhYmxlQ29udGVudFJl
Y3QoY29uc3QgSW50UmVjdCYgcmVjdCkgeyBtX2RyYXdhYmxlQ29udGVudFJlY3QgPSByZWN0OyB9
CiAgICAgZmxvYXQgY29udGVudHNTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudHNTY2Fs
ZTsgfQpAQCAtMzM0LDggKzMzNCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2RyYXdDaGVja2Vy
Ym9hcmRGb3JNaXNzaW5nVGlsZXM7CiAgICAgYm9vbCBtX2ZvcmNlUmVuZGVyU3VyZmFjZTsKIAot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG1fc3VibGF5ZXJUcmFuc2Zvcm07CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3RyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IG1fc3VibGF5ZXJUcmFuc2Zvcm07CiAKICAgICAvLyBSZXBsaWNhIGxheWVyIHVzZWQgZm9yIHJl
ZmxlY3Rpb25zLgogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBtX3JlcGxpY2FMYXllcjsKQEAg
LTM0Niw4ICszNDYsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kcmF3T3BhY2l0eUlzQW5pbWF0
aW5nOwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKICAgICBSZW5kZXJTdXJmYWNlQ2hyb21pdW0q
IG1fdGFyZ2V0UmVuZGVyU3VyZmFjZTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdU
cmFuc2Zvcm07Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9y
bTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsK
KyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fc2NyZWVuU3BhY2VUcmFuc2Zv
cm07CiAgICAgYm9vbCBtX2RyYXdUcmFuc2Zvcm1Jc0FuaW1hdGluZzsKICAgICBib29sIG1fc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm1Jc0FuaW1hdGluZzsKICAgICBJbnRSZWN0IG1fZHJhd2FibGVDb250
ZW50UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDk3ZDZl
NzdlY2UxNmVlMmNjZGMxNDQ2MjE4YmI2MGI1ZDc4YThkODEuLmFjYWNjMzUzYmEzZmU3MzMyOGEx
MjNmYmY4MmVjZWEwYzkxOWY5OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmNwcApAQCAtNzQsMTYgKzc0LDE3IEBACiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KIAog
dXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKIAotc3RhdGljIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IG9ydGhvTWF0cml4KGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0LCBmbG9h
dCBib3R0b20sIGZsb2F0IHRvcCkKK3N0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRo
b01hdHJpeChmbG9hdCBsZWZ0LCBmbG9hdCByaWdodCwgZmxvYXQgYm90dG9tLCBmbG9hdCB0b3Ap
CiB7CiAgICAgZmxvYXQgZGVsdGFYID0gcmlnaHQgLSBsZWZ0OwogICAgIGZsb2F0IGRlbHRhWSA9
IHRvcCAtIGJvdHRvbTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKKyAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBvcnRobzsKICAgICBpZiAoIWRlbHRhWCB8fCAhZGVsdGFZKQog
ICAgICAgICByZXR1cm4gb3J0aG87CiAgICAgb3J0aG8uc2V0TTExKDIuMGYgLyBkZWx0YVgpOwpA
QCAtOTgsOSArOTksOSBAQCBzdGF0aWMgVHJhbnNmb3JtYXRpb25NYXRyaXggb3J0aG9NYXRyaXgo
ZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQsIGZsb2F0IGJvdHRvbSwgZgogICAgIHJldHVybiBvcnRo
bzsKIH0KIAotc3RhdGljIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlbk1hdHJpeChpbnQgeCwg
aW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkKK3N0YXRpYyBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBzY3JlZW5NYXRyaXgoaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiB7
Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuOworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IHNjcmVlbjsKIAogICAgIC8vIE1hcCB0byB2aWV3cG9ydC4KICAgICBzY3JlZW4udHJh
bnNsYXRlM2QoeCwgeSwgMCk7CkBAIC01MjYsNyArNTI3LDcgQEAgdm9pZCBMYXllclJlbmRlcmVy
Q2hyb21pdW06OmRyYXdDaGVja2VyYm9hcmRRdWFkKGNvbnN0IENDQ2hlY2tlcmJvYXJkRHJhd1F1
YWQqIHEKICAgICBHTEMoY29udGV4dCgpLCBjb250ZXh0KCktPnVzZVByb2dyYW0ocHJvZ3JhbS0+
cHJvZ3JhbSgpKSk7CiAKICAgICBJbnRSZWN0IHRpbGVSZWN0ID0gcXVhZC0+cXVhZFJlY3QoKTsK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0aWxlVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5z
Zm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRpbGVUcmFuc2Zvcm0gPSBxdWFk
LT5xdWFkVHJhbnNmb3JtKCk7CiAgICAgdGlsZVRyYW5zZm9ybS50cmFuc2xhdGUodGlsZVJlY3Qu
eCgpICsgdGlsZVJlY3Qud2lkdGgoKSAvIDIuMCwgdGlsZVJlY3QueSgpICsgdGlsZVJlY3QuaGVp
Z2h0KCkgLyAyLjApOwogCiAgICAgZmxvYXQgdGV4T2Zmc2V0WCA9IHRpbGVSZWN0LngoKTsKQEAg
LTU1NSw3ICs1NTYsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6ZHJhd0RlYnVnQm9y
ZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqIHF1YQogICAgIEdMQyhjb250ZXh0
KCksIGNvbnRleHQoKS0+dXNlUHJvZ3JhbShwcm9ncmFtLT5wcm9ncmFtKCkpKTsKIAogICAgIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCA9IHF1YWQtPnF1YWRSZWN0KCk7Ci0gICAgVHJhbnNmb3Jt
YXRpb25NYXRyaXggcmVuZGVyTWF0cml4ID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOworICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRlck1hdHJpeCA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0o
KTsKICAgICByZW5kZXJNYXRyaXgudHJhbnNsYXRlKDAuNSAqIGxheWVyUmVjdC53aWR0aCgpICsg
bGF5ZXJSZWN0LngoKSwgMC41ICogbGF5ZXJSZWN0LmhlaWdodCgpICsgbGF5ZXJSZWN0LnkoKSk7
CiAgICAgcmVuZGVyTWF0cml4LnNjYWxlTm9uVW5pZm9ybShsYXllclJlY3Qud2lkdGgoKSwgbGF5
ZXJSZWN0LmhlaWdodCgpKTsKICAgICBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRvR0xNYXRyaXgo
JmdsTWF0cml4WzBdLCBwcm9qZWN0aW9uTWF0cml4KCkgKiByZW5kZXJNYXRyaXgpOwpAQCAtNTg2
LDcgKzU4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgU2tCaXRtYXAgYXBwbHlGaWx0ZXJzKExheWVyUmVu
ZGVyZXJDaHJvbWl1bSogbGF5ZXJSZW5kZXJlciwgY29uc3QKICAgICByZXR1cm4gQ0NSZW5kZXJT
dXJmYWNlRmlsdGVyczo6YXBwbHkoZmlsdGVycywgc291cmNlVGV4dHVyZS0+dGV4dHVyZUlkKCks
IHNvdXJjZVRleHR1cmUtPnNpemUoKSwgZmlsdGVyQ29udGV4dC5nZXQoKSk7CiB9CiAKLXZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFja2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQqIHF1YWQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250
ZW50c0RldmljZVRyYW5zZm9ybSkKK3ZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3QmFj
a2dyb3VuZEZpbHRlcnMoY29uc3QgQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQqIHF1YWQsIGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50c0RldmljZVRyYW5zZm9ybSkKIHsKICAg
ICAvLyBUaGlzIG1ldGhvZCBkcmF3cyBhIGJhY2tncm91bmQgZmlsdGVyLCB3aGljaCBhcHBsaWVz
IGEgZmlsdGVyIHRvIGFueSBwaXhlbHMgYmVoaW5kIHRoZSBxdWFkIGFuZCBzZWVuIHRocm91Z2gg
aXRzIGJhY2tncm91bmQuCiAgICAgLy8gVGhlIGFsZ29yaXRobSB3b3JrcyBhcyBmb2xsb3dzOgpA
QCAtNjM4LDEwICs2MzksMTAgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdCYWNr
Z3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVhZCoKICAgICBDQ1JlbmRl
clN1cmZhY2UqIHRhcmdldFJlbmRlclN1cmZhY2UgPSBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlOwog
ICAgIGlmICh1c2VNYW5hZ2VkVGV4dHVyZShkcmF3aW5nU3VyZmFjZS0+YmFja2dyb3VuZFRleHR1
cmUoKSwgcXVhZC0+cXVhZFJlY3QoKSkpIHsKICAgICAgICAgLy8gQ29weSB0aGUgcmVhZGJhY2sg
cGl4ZWxzIGZyb20gZGV2aWNlIHRvIHRoZSBiYWNrZ3JvdW5kIHRleHR1cmUgZm9yIHRoZSBzdXJm
YWNlLgotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zv
cm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZVRvU3VyZmFjZVRyYW5z
Zm9ybTsKICAgICAgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZShxdWFkLT5x
dWFkUmVjdCgpLndpZHRoKCkgLyAyLjAsIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCkgLyAyLjAp
OwogICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0uc2NhbGUzZChxdWFkLT5xdWFkUmVj
dCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCksIDEpOwotICAgICAgICBkZXZp
Y2VUb1N1cmZhY2VUcmFuc2Zvcm0gKj0gY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaW52ZXJzZSgp
OworICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0ubXVsdGlwbHkoY29udGVudHNEZXZp
Y2VUcmFuc2Zvcm0uaW52ZXJzZSgpKTsKICAgICAgICAgZGV2aWNlVG9TdXJmYWNlVHJhbnNmb3Jt
LnRyYW5zbGF0ZShkZXZpY2VSZWN0LndpZHRoKCkgLyAyLjAsIGRldmljZVJlY3QuaGVpZ2h0KCkg
LyAyLjApOwogICAgICAgICBkZXZpY2VUb1N1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKGRldmlj
ZVJlY3QueCgpLCBkZXZpY2VSZWN0LnkoKSk7CiAKQEAgLTY1OCwxMCArNjU5LDEwIEBAIHZvaWQg
TGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3UmVuZGVyU3VyZmFjZVF1YWQoY29uc3QgQ0NSZW5k
ZXJTdXJmYWNlRHJhd1F1YWQqCiAKICAgICBDQ1JlbmRlclN1cmZhY2UqIGRyYXdpbmdTdXJmYWNl
ID0gcXVhZC0+bGF5ZXIoKS0+cmVuZGVyU3VyZmFjZSgpOwogCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcmVuZGVyVHJhbnNmb3JtID0gcXVhZC0+bGF5ZXJUcmFuc2Zvcm0oKTsKKyAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByZW5kZXJUcmFuc2Zvcm0gPSBxdWFkLT5sYXllclRyYW5zZm9y
bSgpOwogICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3IgdG8gc2l6ZSB0aGUgcXVhZCBmcm9t
IDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KICAgICByZW5kZXJUcmFuc2Zvcm0uc2NhbGUzZChx
dWFkLT5xdWFkUmVjdCgpLndpZHRoKCksIHF1YWQtPnF1YWRSZWN0KCkuaGVpZ2h0KCksIDEpOwot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRzRGV2aWNlVHJhbnNmb3JtID0gVHJhbnNm
b3JtYXRpb25NYXRyaXgod2luZG93TWF0cml4KCkgKiBwcm9qZWN0aW9uTWF0cml4KCkgKiByZW5k
ZXJUcmFuc2Zvcm0pLnRvMmRUcmFuc2Zvcm0oKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjb250ZW50c0RldmljZVRyYW5zZm9ybSA9IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KHdpbmRv
d01hdHJpeCgpICogcHJvamVjdGlvbk1hdHJpeCgpICogcmVuZGVyVHJhbnNmb3JtKS50bzJkVHJh
bnNmb3JtKCk7CiAKICAgICAvLyBDYW4gb25seSBkcmF3IHN1cmZhY2UgaWYgZGV2aWNlIG1hdHJp
eCBpcyBpbnZlcnRpYmxlLgogICAgIGlmICghY29udGVudHNEZXZpY2VUcmFuc2Zvcm0uaXNJbnZl
cnRpYmxlKCkgfHwgIWRyYXdpbmdTdXJmYWNlLT5oYXNWYWxpZENvbnRlbnRzVGV4dHVyZSgpKSB7
CkBAIC03ODIsNyArNzgzLDcgQEAgdm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdTb2xp
ZENvbG9yUXVhZChjb25zdCBDQ1NvbGlkQ29sb3JEcmF3UXVhZCogcXVhZCkKIAogICAgIEludFJl
Y3QgdGlsZVJlY3QgPSBxdWFkLT5xdWFkUmVjdCgpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdGlsZVRyYW5zZm9ybSA9IHF1YWQtPnF1YWRUcmFuc2Zvcm0oKTsKKyAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCB0aWxlVHJhbnNmb3JtID0gcXVhZC0+cXVhZFRyYW5zZm9ybSgpOwogICAg
IHRpbGVUcmFuc2Zvcm0udHJhbnNsYXRlKHRpbGVSZWN0LngoKSArIHRpbGVSZWN0LndpZHRoKCkg
LyAyLjAsIHRpbGVSZWN0LnkoKSArIHRpbGVSZWN0LmhlaWdodCgpIC8gMi4wKTsKIAogICAgIGNv
bnN0IENvbG9yJiBjb2xvciA9IHF1YWQtPmNvbG9yKCk7CkBAIC04NTgsNyArODU5LDcgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUaWxlUXVhZChjb25zdCBDQ1RpbGVEcmF3UXVh
ZCogcXVhZCkKIAogCiAgICAgRmxvYXRRdWFkIGxvY2FsUXVhZDsKLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBkZXZpY2VUcmFuc2Zvcm0gPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCh3aW5kb3dNYXRy
aXgoKSAqIHByb2plY3Rpb25NYXRyaXgoKSAqIHF1YWQtPnF1YWRUcmFuc2Zvcm0oKSkudG8yZFRy
YW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGRldmljZVRyYW5zZm9ybSA9
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KHdpbmRvd01hdHJpeCgpICogcHJvamVjdGlvbk1hdHJp
eCgpICogcXVhZC0+cXVhZFRyYW5zZm9ybSgpKS50bzJkVHJhbnNmb3JtKCk7CiAgICAgaWYgKCFk
ZXZpY2VUcmFuc2Zvcm0uaXNJbnZlcnRpYmxlKCkpCiAgICAgICAgIHJldHVybjsKIApAQCAtOTQ3
LDcgKzk0OCw3IEBAIHZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGlsZVF1YWQoY29u
c3QgQ0NUaWxlRHJhd1F1YWQqIHF1YWQpCiAgICAgICAgIENDTGF5ZXJRdWFkIGRldmljZVF1YWQo
bGVmdEVkZ2UsIHRvcEVkZ2UsIHJpZ2h0RWRnZSwgYm90dG9tRWRnZSk7CiAKICAgICAgICAgLy8g
TWFwIHF1YWQgdG8gbGF5ZXIgc3BhY2UuCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlu
dmVyc2VEZXZpY2VUcmFuc2Zvcm0gPSBkZXZpY2VUcmFuc2Zvcm0uaW52ZXJzZSgpOworICAgICAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpbnZlcnNlRGV2aWNlVHJhbnNmb3JtID0gZGV2aWNl
VHJhbnNmb3JtLmludmVyc2UoKTsKICAgICAgICAgbG9jYWxRdWFkID0gaW52ZXJzZURldmljZVRy
YW5zZm9ybS5tYXBRdWFkKGRldmljZVF1YWQuZmxvYXRRdWFkKCkpOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIE1vdmUgZnJhZ21lbnQgc2hhZGVyIHRyYW5zZm9ybSB0byB2ZXJ0ZXggc2hhZGVy
LiBXZSBjYW4gZG8gdGhpcyB3aGlsZQpAQCAtMTIyMCw3ICsxMjIxLDcgQEAgdm9pZCBMYXllclJl
bmRlcmVyQ2hyb21pdW06OmRyYXdIZWFkc1VwRGlzcGxheShNYW5hZ2VkVGV4dHVyZSogaHVkVGV4
dHVyZSwgY29uc3QKICAgICBHTEMobV9jb250ZXh0LCBtX2NvbnRleHQtPnVzZVByb2dyYW0ocHJv
Z3JhbS0+cHJvZ3JhbSgpKSk7CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT51bmlmb3Jt
MWkocHJvZ3JhbS0+ZnJhZ21lbnRTaGFkZXIoKS5zYW1wbGVyTG9jYXRpb24oKSwgMCkpOwogCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IG1hdHJpeDsKICAgICBtYXRyaXgudHJhbnNsYXRlM2QoaHVkU2l6ZS53aWR0aCgpICogMC41
LCBodWRTaXplLmhlaWdodCgpICogMC41LCAwKTsKICAgICBkcmF3VGV4dHVyZWRRdWFkKG1hdHJp
eCwgaHVkU2l6ZS53aWR0aCgpLCBodWRTaXplLmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAg
ICAgMSwgc2hhcmVkR2VvbWV0cnlRdWFkKCksIHByb2dyYW0tPnZlcnRleFNoYWRlcigpLm1hdHJp
eExvY2F0aW9uKCksCkBAIC0xMjQzLDcgKzEyNDQsNyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJv
bWl1bTo6ZmluaXNoRHJhd2luZ0ZyYW1lKCkKICAgICBtX3JlbmRlclN1cmZhY2VUZXh0dXJlTWFu
YWdlci0+ZGVsZXRlRXZpY3RlZFRleHR1cmVzKG1fcmVuZGVyU3VyZmFjZVRleHR1cmVBbGxvY2F0
b3IuZ2V0KCkpOwogfQogCi12b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6dG9HTE1hdHJpeChm
bG9hdCogZmxhdHRlbmVkLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbSkKK3ZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjp0b0dMTWF0cml4KGZsb2F0KiBmbGF0dGVuZWQsIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtKQogewogICAgIGZsYXR0ZW5lZFswXSA9IG0ubTExKCk7
CiAgICAgZmxhdHRlbmVkWzFdID0gbS5tMTIoKTsKQEAgLTEyNjMsMTMgKzEyNjQsMTMgQEAgdm9p
ZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OnRvR0xNYXRyaXgoZmxvYXQqIGZsYXR0ZW5lZCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXQKICAgICBmbGF0dGVuZWRbMTVdID0gbS5tNDQoKTsKIH0KIAot
dm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06OmRyYXdUZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGRyYXdNYXRyaXgsCit2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1bTo6
ZHJhd1RleHR1cmVkUXVhZChjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJp
eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0IHdp
ZHRoLCBmbG9hdCBoZWlnaHQsIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UXVhZCYgcXVhZCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtYXRyaXhM
b2NhdGlvbiwgaW50IGFscGhhTG9jYXRpb24sIGludCBxdWFkTG9jYXRpb24pCiB7CiAgICAgc3Rh
dGljIGZsb2F0IGdsTWF0cml4WzE2XTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlbmRl
ck1hdHJpeCA9IGRyYXdNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVuZGVy
TWF0cml4ID0gZHJhd01hdHJpeDsKIAogICAgIC8vIEFwcGx5IGEgc2NhbGluZyBmYWN0b3IgdG8g
c2l6ZSB0aGUgcXVhZCBmcm9tIDF4MSB0byBpdHMgaW50ZW5kZWQgc2l6ZS4KICAgICByZW5kZXJN
YXRyaXguc2NhbGUzZCh3aWR0aCwgaGVpZ2h0LCAxKTsKQEAgLTEyOTgsNyArMTI5OSw3IEBAIHZv
aWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpkcmF3VGV4dHVyZWRRdWFkKGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3TWF0CiAgICAgR0xDKG1fY29udGV4dCwgbV9jb250ZXh0LT5kcmF3
RWxlbWVudHMoR3JhcGhpY3NDb250ZXh0M0Q6OlRSSUFOR0xFUywgNiwgR3JhcGhpY3NDb250ZXh0
M0Q6OlVOU0lHTkVEX1NIT1JULCAwKSk7CiB9CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVt
Ojpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJZCwgY29uc3QgSW50U2l6ZSYg
Ym91bmRzLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd01hdHJpeCkKK3ZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpjb3B5VGV4dHVyZVRvRnJhbWVidWZmZXIoaW50IHRleHR1cmVJ
ZCwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd01hdHJpeCkKIHsKICAgICBjb25zdCBSZW5kZXJTdXJmYWNlUHJvZ3JhbSogcHJvZ3JhbSA9
IHJlbmRlclN1cmZhY2VQcm9ncmFtKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVt
LmgKaW5kZXggODFlZTFhN2I1MWI3NTBkNTMyNDI3OGRhYzEyY2IyODU2ZjZjMzViOS4uMGY5NjVh
OGI0ZmFkNTNjZWExZWZkMDk4M2VlOTViZjk3NzY3MjNhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKQEAgLTEwNyw4ICsxMDcsOCBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMg
dm9pZCBkZWJ1Z0dMQ2FsbChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IGNoYXIqIGNvbW1hbmQs
IGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsKIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBwcm9qZWN0aW9uTWF0cml4KCkgY29uc3QgeyByZXR1cm4gbV9wcm9qZWN0aW9uTWF0
cml4OyB9Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHdpbmRvd01hdHJpeCgpIGNv
bnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcHJvamVjdGlvbk1hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
amVjdGlvbk1hdHJpeDsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHdpbmRvd01hdHJpeCgpIGNvbnN0IHsgcmV0dXJuIG1fd2luZG93TWF0cml4OyB9CiAKICAg
ICBjb25zdCBHZW9tZXRyeUJpbmRpbmcqIHNoYXJlZEdlb21ldHJ5KCkgY29uc3QgeyByZXR1cm4g
bV9zaGFyZWRHZW9tZXRyeS5nZXQoKTsgfQogICAgIGNvbnN0IEZsb2F0UXVhZCYgc2hhcmVkR2Vv
bWV0cnlRdWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRHZW9tZXRyeVF1YWQ7IH0KQEAgLTEz
MSwxMSArMTMxLDExIEBAIHB1YmxpYzoKIAogICAgIEdDM0RlbnVtIGJlc3RUZXh0dXJlRm9ybWF0
KCk7CiAKLSAgICBzdGF0aWMgdm9pZCB0b0dMTWF0cml4KGZsb2F0KiwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmKTsKLSAgICB2b2lkIGRyYXdUZXh0dXJlZFF1YWQoY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIGxheWVyTWF0cml4LAorICAgIHN0YXRpYyB2b2lkIHRvR0xNYXRyaXgoZmxv
YXQqLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBk
cmF3VGV4dHVyZWRRdWFkKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxh
eWVyTWF0cml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdCB3aWR0aCwgZmxvYXQg
aGVpZ2h0LCBmbG9hdCBvcGFjaXR5LCBjb25zdCBGbG9hdFF1YWQmLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbWF0cml4TG9jYXRpb24sIGludCBhbHBoYUxvY2F0aW9uLCBpbnQgcXVh
ZExvY2F0aW9uKTsKLSAgICB2b2lkIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVy
ZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBk
cmF3TWF0cml4KTsKKyAgICB2b2lkIGNvcHlUZXh0dXJlVG9GcmFtZWJ1ZmZlcihpbnQgdGV4dHVy
ZUlkLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGRyYXdNYXRyaXgpOwogCiBwcm90ZWN0ZWQ6CiAgICAgZnJpZW5kIGNsYXNzIExh
eWVyUmVuZGVyZXJHcHVNZW1vcnlBbGxvY2F0aW9uQ2hhbmdlZENhbGxiYWNrQWRhcHRlcjsKQEAg
LTE1NCw3ICsxNTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZHJhd1F1YWQoY29uc3QgQ0NEcmF3
UXVhZCosIGNvbnN0IEZsb2F0UmVjdCYgc3VyZmFjZURhbWFnZVJlY3QpOwogICAgIHZvaWQgZHJh
d0NoZWNrZXJib2FyZFF1YWQoY29uc3QgQ0NDaGVja2VyYm9hcmREcmF3UXVhZCopOwogICAgIHZv
aWQgZHJhd0RlYnVnQm9yZGVyUXVhZChjb25zdCBDQ0RlYnVnQm9yZGVyRHJhd1F1YWQqKTsKLSAg
ICB2b2lkIGRyYXdCYWNrZ3JvdW5kRmlsdGVycyhjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3UXVh
ZCosIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkZXZpY2VUcmFuc2Zvcm0pOworICAgIHZv
aWQgZHJhd0JhY2tncm91bmRGaWx0ZXJzKGNvbnN0IENDUmVuZGVyU3VyZmFjZURyYXdRdWFkKiwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZGV2aWNlVHJhbnNmb3JtKTsK
ICAgICB2b2lkIGRyYXdSZW5kZXJTdXJmYWNlUXVhZChjb25zdCBDQ1JlbmRlclN1cmZhY2VEcmF3
UXVhZCopOwogICAgIHZvaWQgZHJhd1NvbGlkQ29sb3JRdWFkKGNvbnN0IENDU29saWRDb2xvckRy
YXdRdWFkKik7CiAgICAgdm9pZCBkcmF3VGV4dHVyZVF1YWQoY29uc3QgQ0NUZXh0dXJlRHJhd1F1
YWQqKTsKQEAgLTE5NSw4ICsxOTUsOCBAQCBwcml2YXRlOgogCiAgICAgTGF5ZXJSZW5kZXJlckNh
cGFiaWxpdGllcyBtX2NhcGFiaWxpdGllczsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
cHJvamVjdGlvbk1hdHJpeDsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3dpbmRvd01hdHJp
eDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcHJvamVjdGlvbk1hdHJp
eDsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fd2luZG93TWF0cml4Owog
CiAgICAgQ0NSZW5kZXJTdXJmYWNlKiBtX2N1cnJlbnRSZW5kZXJTdXJmYWNlOwogICAgIE1hbmFn
ZWRUZXh0dXJlKiBtX2N1cnJlbnRNYW5hZ2VkVGV4dHVyZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xpbmtIaWdobGlnaHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGlua0hpZ2hsaWdodC5jcHAK
aW5kZXggNTM1MzZiMzJjZTBhZDcwNzI2MTMyNTQzMmEwYTE1MTVhMTZlMDQ4Ny4uYmNiN2IzYzM2
YzdiOGUxODRjZDIwNjdkZmE1YTBhNDUwYzViODY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGlua0hpZ2hsaWdodC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGlua0hpZ2hsaWdodC5jcHAK
QEAgLTM0LDYgKzM0LDggQEAKIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAor
dXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKKwogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBQYXNzUmVmUHRyPExpbmtIaWdobGlnaHQ+IExpbmtIaWdobGlnaHQ6OmNyZWF0ZShH
cmFwaGljc0xheWVyQ2hyb21pdW0qIHBhcmVudCwgY29uc3QgUGF0aCYgcGF0aCwgaW50IGFuaW1h
dGlvbklkLCBpbnQgZ3JvdXBJZCkKQEAgLTUyLDcgKzU0LDcgQEAgTGlua0hpZ2hsaWdodDo6TGlu
a0hpZ2hsaWdodChHcmFwaGljc0xheWVyQ2hyb21pdW0qIHBhcmVudCwgY29uc3QgUGF0aCYgcGF0
aCwgaW4KIAogICAgIG1fY29udGVudExheWVyLT5zZXRCb3VuZHMocmVjdC5zaXplKCkpOwogCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKHJlY3QueCgpICsgcmVj
dC53aWR0aCgpIC8gMiwgcmVjdC55KCkgKyByZWN0LmhlaWdodCgpIC8gMik7CiAgICAgbV9jb250
ZW50TGF5ZXItPnNldFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9SZW5kZXJTdXJmYWNlQ2hyb21pdW0u
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZh
Y2VDaHJvbWl1bS5oCmluZGV4IDBlYTQ4YWQxMzk5ZWRhODVhNzVhYzcxNDM1ZTBlNDExYWNlZDc1
NTAuLmU2NzExZWYyYTVjNTBmMTRiZmQwZjkwN2ZkZTc0NmI1ODQzODM2ZDQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL1JlbmRlclN1cmZhY2VD
aHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L1JlbmRlclN1cmZhY2VDaHJvbWl1bS5oCkBAIC0zNCw4ICszNCw4IEBACiAjaW5jbHVkZSAiUHJv
Z3JhbUJpbmRpbmcuaCIKICNpbmNsdWRlICJTaGFkZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRl
eHR1cmVNYW5hZ2VyLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNs
dWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02NSwyMyArNjUsMjMgQEAgcHVibGljOgogCiAgICAgLy8g
VGhpcyBnb2VzIGZyb20gY29udGVudCBzcGFjZSB3aXRoIHRoZSBvcmlnaW4gaW4gdGhlIGNlbnRl
ciBvZiB0aGUgcmVjdCBiZWluZyB0cmFuc2Zvcm1lZCB0byB0aGUgdGFyZ2V0IHNwYWNlIHdpdGgg
dGhlIG9yaWdpbiBpbiB0aGUgdG9wIGxlZnQgb2YgdGhlCiAgICAgLy8gcmVjdCBiZWluZyB0cmFu
c2Zvcm1lZC4gUG9zaXRpb24gdGhlIHJlY3Qgc28gdGhhdCB0aGUgb3JpZ2luIGlzIGluIHRoZSBj
ZW50ZXIgb2YgaXQgYmVmb3JlIGFwcGx5aW5nIHRoaXMgdHJhbnNmb3JtLgotICAgIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3
VHJhbnNmb3JtOyB9Ci0gICAgdm9pZCBzZXREcmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKSB7IG1fZHJhd1RyYW5zZm9ybSA9IGRyYXdUcmFuc2Zv
cm07IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJh
bnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRE
cmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdU
cmFuc2Zvcm0pIHsgbV9kcmF3VHJhbnNmb3JtID0gZHJhd1RyYW5zZm9ybTsgfQogCi0gICAgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fb3JpZ2luVHJhbnNmb3JtOyB9Ci0gICAgdm9pZCBzZXRPcmlnaW5UcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSkgeyBtX29yaWdpblRyYW5zZm9y
bSA9IG9yaWdpblRyYW5zZm9ybTsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVHJhbnNm
b3JtOyB9CisgICAgdm9pZCBzZXRPcmlnaW5UcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtKSB7IG1fb3JpZ2luVHJhbnNmb3JtID0g
b3JpZ2luVHJhbnNmb3JtOyB9CiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJhbnNmb3Jt
OyB9Ci0gICAgdm9pZCBzZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0pIHsgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybSA9
IHNjcmVlblNwYWNlVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NjcmVl
blNwYWNlVHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSkg
eyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KIAotICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVwbGljYURyYXdUcmFuc2Zvcm07IH0KLSAgICB2b2lkIHNldFJlcGxpY2FE
cmF3VHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5z
Zm9ybSkgeyBtX3JlcGxpY2FEcmF3VHJhbnNmb3JtID0gcmVwbGljYURyYXdUcmFuc2Zvcm07IH0K
KyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1Ry
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURyYXdUcmFuc2Zvcm07IH0KKyAgICB2
b2lkIHNldFJlcGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0g
PSByZXBsaWNhRHJhd1RyYW5zZm9ybTsgfQogCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3JlcGxpY2FPcmln
aW5UcmFuc2Zvcm07IH0KLSAgICB2b2lkIHNldFJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0pIHsgbV9yZXBsaWNh
T3JpZ2luVHJhbnNmb3JtID0gcmVwbGljYU9yaWdpblRyYW5zZm9ybTsgfQorICAgIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFJl
cGxpY2FPcmlnaW5UcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcmVwbGljYU9yaWdpblRyYW5zZm9ybSkgeyBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSBy
ZXBsaWNhT3JpZ2luVHJhbnNmb3JtOyB9CiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNh
U2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KLSAgICB2b2lkIHNldFJlcGxpY2FTY3JlZW5TcGFjZVRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJh
bnNmb3JtKSB7IG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtID0gcmVwbGljYVNjcmVlblNw
YWNlVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNh
U2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFJlcGxpY2FTY3JlZW5TcGFjZVRy
YW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhU2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0pIHsgbV9yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSByZXBs
aWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KIAogICAgIGJvb2wgdGFyZ2V0U3VyZmFjZVRyYW5z
Zm9ybXNBcmVBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2VUcmFuc2Zv
cm1zQXJlQW5pbWF0aW5nOyB9CiAgICAgdm9pZCBzZXRUYXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0Fy
ZUFuaW1hdGluZyhib29sIGFuaW1hdGluZykgeyBtX3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJl
QW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9CkBAIC0xMjQsMTIgKzEyNCwxMiBAQCBwcml2YXRlOgog
CiAgICAgZmxvYXQgbV9kcmF3T3BhY2l0eTsKICAgICBib29sIG1fZHJhd09wYWNpdHlJc0FuaW1h
dGluZzsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07Ci0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggbV9vcmlnaW5UcmFuc2Zvcm07Ci0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBt
X3JlcGxpY2FEcmF3VHJhbnNmb3JtOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGlj
YU9yaWdpblRyYW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FTY3Jl
ZW5TcGFjZVRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
ZHJhd1RyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fb3Jp
Z2luVHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY3Jl
ZW5TcGFjZVRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1f
cmVwbGljYURyYXdUcmFuc2Zvcm07CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBtX3JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3JlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBib29sIG1fdGFyZ2V0
U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRpbmc7CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJh
bnNmb3Jtc0FyZUFuaW1hdGluZzsKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9m
aWx0ZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL1RpbGVkTGF5ZXJDaHJvbWl1bS5jcHAKaW5kZXggMTdjMzUxZjZkN2Rm
YmRiYWMxYzlkODVlYmE3NGU4Njk3MWNjOWNjNi4uMTJlMzcxN2NhNmRmZjFjMzhhYzk0ZGJiMTdl
ZTZjNjdmZDBjZDUxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vVGlsZWRMYXllckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9UaWxlZExheWVyQ2hyb21pdW0uY3BwCkBAIC00NCw2
ICs0NCw3IEBACiAjaW5jbHVkZSA8d3RmL01hdGhFeHRyYXMuaD4KIAogdXNpbmcgbmFtZXNwYWNl
IHN0ZDsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDg5LDcgKzQ5MCw3IEBAIHZvaWQgVGlsZWRMYXllckNocm9taXVt
Ojp1cGRhdGVUaWxlcyhib29sIGlkbGUsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGlu
CiAKICAgICAgICAgICAgIHRpbGUtPnRleHR1cmUoKS0+cHJlcGFyZVJlY3Qoc291cmNlUmVjdCk7
CiAgICAgICAgICAgICBpZiAob2NjbHVzaW9uKQotICAgICAgICAgICAgICAgIG9jY2x1c2lvbi0+
b3ZlcmRyYXdNZXRyaWNzKCkuZGlkVXBsb2FkKFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHNvdXJj
ZVJlY3QsIHRpbGUtPm9wYXF1ZVJlY3QoKSk7CisgICAgICAgICAgICAgICAgb2NjbHVzaW9uLT5v
dmVyZHJhd01ldHJpY3MoKS5kaWRVcGxvYWQoV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgc291
cmNlUmVjdCwgdGlsZS0+b3BhcXVlUmVjdCgpKTsKIAogICAgICAgICAgICAgY29uc3QgSW50UG9p
bnQgYW5jaG9yID0gbV90aWxlci0+dGlsZVJlY3QodGlsZSkubG9jYXRpb24oKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmlt
YXRpb25DdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NBbmltYXRpb25DdXJ2ZS5oCmluZGV4IDdmNTA2YTcwNmYyYTQzYWU2ZDM4YTVhZjYzYmQ3
NWNmOGNiM2U3ZDUuLmUyMWRlODk2NDc1NzViZmU2OWJlY2VlMzk4MmIyOTUyZDVlMjJjMGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
QW5pbWF0aW9uQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmgKQEAgLTI1LDE0ICsyNSwxNCBAQAogI2lmbmRl
ZiBDQ0FuaW1hdGlvbkN1cnZlX2gKICNkZWZpbmUgQ0NBbmltYXRpb25DdXJ2ZV9oCiAKLSNpbmNs
dWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotCisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBDQ0Zsb2F0QW5pbWF0aW9uQ3VydmU7CiBjbGFzcyBDQ1Ry
YW5zZm9ybUFuaW1hdGlvbkN1cnZlOworY2xhc3MgSW50U2l6ZTsKIGNsYXNzIFRyYW5zZm9ybU9w
ZXJhdGlvbnM7CiAKIC8vIEFuIGFuaW1hdGlvbiBjdXJ2ZSBpcyBhIGZ1bmN0aW9uIHRoYXQgcmV0
dXJucyBhIHZhbHVlIGdpdmVuIGEgdGltZS4KQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgQ0NUcmFu
c2Zvcm1BbmltYXRpb25DdXJ2ZSA6IHB1YmxpYyBDQ0FuaW1hdGlvbkN1cnZlIHsKIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIH5DQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCkgeyB9CiAKLSAgICB2aXJ0
dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IGdldFZhbHVlKGRvdWJsZSB0LCBjb25zdCBJbnRTaXpl
JiBsYXllclNpemUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggZ2V0VmFsdWUoZG91YmxlIHQsIGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSkg
Y29uc3QgPSAwOwogCiAgICAgLy8gUGFydGlhbCBDQ0FuaW1hdGlvbiBpbXBsZW1lbnRhdGlvbi4K
ICAgICB2aXJ0dWFsIFR5cGUgdHlwZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIFRyYW5zZm9y
bTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDRGFtYWdlVHJhY2tlci5jcHAKaW5kZXggNTY3YmQxZjFmZWEyMDAy
ZTU0Yjc1NWM3NmVmYTkxZWU1NjU0YWVmNC4uOGZkM2VkMTI0YjIzMDNiNzdhMGIwZjQ5Mjg5ODNk
OWM4OTUxYmVkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NEYW1hZ2VUcmFja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RhbWFnZVRyYWNrZXIuY3BwCkBAIC00MCw2ICs0
MCw4IEBACiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlLmgiCiAjaW5jbHVkZSA8cHVibGlj
L1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KIAordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzT3duUHRyPENDRGFtYWdlVHJh
Y2tlcj4gQ0NEYW1hZ2VUcmFja2VyOjpjcmVhdGUoKQpAQCAtMjQ0LDcgKzI0Niw3IEBAIHZvaWQg
Q0NEYW1hZ2VUcmFja2VyOjpleHRlbmREYW1hZ2VGb3JMYXllcihDQ0xheWVySW1wbCogbGF5ZXIs
IEZsb2F0UmVjdCYgdGFyZ2V0CiAgICAgLy8gUHJvcGVydHkgY2hhbmdlcyB0YWtlIHByaW9yaXR5
IG92ZXIgdXBkYXRlIHJlY3RzLgogCiAgICAgLy8gQ29tcHV0ZSB0aGUgbGF5ZXIncyAib3JpZ2lu
VHJhbnNmb3JtIiBieSB0cmFuc2xhdGluZyB0aGUgZHJhd1RyYW5zZm9ybS4KLSAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBvcmlnaW5UcmFuc2Zvcm0gPSBsYXllci0+ZHJhd1RyYW5zZm9ybSgpOwor
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG9yaWdpblRyYW5zZm9ybSA9IGxheWVyLT5kcmF3
VHJhbnNmb3JtKCk7CiAgICAgb3JpZ2luVHJhbnNmb3JtLnRyYW5zbGF0ZSgtMC41ICogbGF5ZXIt
PmJvdW5kcygpLndpZHRoKCksIC0wLjUgKiBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkpOwogCiAg
ICAgYm9vbCBsYXllcklzTmV3ID0gZmFsc2U7CkBAIC0zMDQsMTIgKzMwNiwxMiBAQCB2b2lkIEND
RGFtYWdlVHJhY2tlcjo6ZXh0ZW5kRGFtYWdlRm9yUmVuZGVyU3VyZmFjZShDQ0xheWVySW1wbCog
bGF5ZXIsIEZsb2F0UmVjdAogCiAgICAgLy8gSWYgdGhlcmUgd2FzIGRhbWFnZSwgdHJhbnNmb3Jt
IGl0IHRvIHRhcmdldCBzcGFjZSwgYW5kIHBvc3NpYmx5IGNvbnRyaWJ1dGUgaXRzIHJlZmxlY3Rp
b24gaWYgbmVlZGVkLgogICAgIGlmICghZGFtYWdlUmVjdEluTG9jYWxTcGFjZS5pc0VtcHR5KCkp
IHsKLSAgICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSA9
IHJlbmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpOworICAgICAgICBjb25zdCBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgb3JpZ2luVHJhbnNmb3JtID0gcmVuZGVyU3VyZmFjZS0+b3JpZ2lu
VHJhbnNmb3JtKCk7CiAgICAgICAgIEZsb2F0UmVjdCBkYW1hZ2VSZWN0SW5UYXJnZXRTcGFjZSA9
IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KG9yaWdpblRyYW5zZm9ybSwgZGFtYWdlUmVjdElu
TG9jYWxTcGFjZSk7CiAgICAgICAgIHRhcmdldERhbWFnZVJlY3QudW5pdGVJZk5vblplcm8oZGFt
YWdlUmVjdEluVGFyZ2V0U3BhY2UpOwogCiAgICAgICAgIGlmIChsYXllci0+cmVwbGljYUxheWVy
KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3Jp
Z2luVHJhbnNmb3JtID0gcmVuZGVyU3VyZmFjZS0+cmVwbGljYU9yaWdpblRyYW5zZm9ybSgpOwor
ICAgICAgICAgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5yZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCk7CiAgICAg
ICAgICAgICB0YXJnZXREYW1hZ2VSZWN0LnVuaXRlSWZOb25aZXJvKENDTWF0aFV0aWw6Om1hcENs
aXBwZWRSZWN0KHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0sIGRhbWFnZVJlY3RJbkxvY2FsU3BhY2Up
KTsKICAgICAgICAgfQogICAgIH0KQEAgLTMyMiw3ICszMjQsNyBAQCB2b2lkIENDRGFtYWdlVHJh
Y2tlcjo6ZXh0ZW5kRGFtYWdlRm9yUmVuZGVyU3VyZmFjZShDQ0xheWVySW1wbCogbGF5ZXIsIEZs
b2F0UmVjdAogICAgICAgICByZW1vdmVSZWN0RnJvbUN1cnJlbnRGcmFtZShyZXBsaWNhTWFza0xh
eWVyLT5pZCgpLCByZXBsaWNhSXNOZXcpOwogCiAgICAgICAgIC8vIENvbXB1dGUgdGhlIHJlcGxp
Y2EncyAib3JpZ2luVHJhbnNmb3JtIiB0aGF0IG1hcHMgZnJvbSB0aGUgcmVwbGljYSdzIG9yaWdp
biBzcGFjZSB0byB0aGUgdGFyZ2V0IHN1cmZhY2Ugb3JpZ2luIHNwYWNlLgotICAgICAgICBjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYU9yaWdpblRyYW5zZm9ybSA9IHJlbmRlclN1
cmZhY2UtPnJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0oKTsKKyAgICAgICAgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5y
ZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCk7CiAgICAgICAgIEZsb2F0UmVjdCByZXBsaWNhTWFza0xh
eWVyUmVjdCA9IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHJlcGxpY2FPcmlnaW5UcmFuc2Zv
cm0sIEZsb2F0UmVjdChGbG9hdFBvaW50Ojp6ZXJvKCksIEZsb2F0U2l6ZShyZXBsaWNhTWFza0xh
eWVyLT5ib3VuZHMoKS53aWR0aCgpLCByZXBsaWNhTWFza0xheWVyLT5ib3VuZHMoKS5oZWlnaHQo
KSkpKTsKICAgICAgICAgc2F2ZVJlY3RGb3JOZXh0RnJhbWUocmVwbGljYU1hc2tMYXllci0+aWQo
KSwgcmVwbGljYU1hc2tMYXllclJlY3QpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RyYXdRdWFkLmgKaW5kZXggZjRlZjJk
M2YyMWMxZmFlNTc2NjYzY2QzMjJmY2IxMjdiODdjYmZlYi4uMzgxY2JhZWFjZjNmMjUyMTc0ZDU3
ZmRkMzNmMjA5YjE1OGExZDU5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEcmF3UXVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRHJhd1F1YWQuaApAQCAtNDcsOCArNDcsOCBA
QCBjbGFzcyBDQ0RyYXdRdWFkIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDQ0RyYXdRdWFk
KTsKIHB1YmxpYzoKICAgICBjb25zdCBJbnRSZWN0JiBxdWFkUmVjdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcXVhZFJlY3Q7IH0KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5z
Zm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRlLT5xdWFkVHJhbnNmb3JtKCk7
IH0KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJUcmFuc2Zvcm0oKTsgfQorICAgIGNv
bnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+cXVhZFRyYW5zZm9ybSgpOyB9CisgICAgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25z
dCB7IHJldHVybiBtX3NoYXJlZFF1YWRTdGF0ZS0+bGF5ZXJUcmFuc2Zvcm0oKTsgfQogICAgIGNv
bnN0IEludFJlY3QmIGxheWVyUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc2hhcmVkUXVhZFN0YXRl
LT5sYXllclJlY3QoKTsgfQogICAgIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPmNsaXBSZWN0KCk7IH0KICAgICBmbG9hdCBvcGFjaXR5
KCkgY29uc3QgeyByZXR1cm4gbV9zaGFyZWRRdWFkU3RhdGUtPm9wYWNpdHkoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlm
cmFtZWRBbmltYXRpb25DdXJ2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcAppbmRleCBhZTQxZmUw
Njk1YjMwZDZhMjk0Nzc1NTBlZjZmMTk5YjEzMTRjZmQ5Li40ZGIzOWI2OWEwMDFmYzg3M2YyNTQ1
MzRiZDc3MmNhMDQ0NDFhZWZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFu
aW1hdGlvbkN1cnZlLmNwcApAQCAtMzcsNiArMzcsOCBAQAogCiAjaW5jbHVkZSA8d3RmL093blB0
ci5oPgogCit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIG5hbWVzcGFjZSB7CkBAIC0xNzYsNyArMTc4LDcgQEAgUGFzc093blB0
cjxDQ1RyYW5zZm9ybUtleWZyYW1lPiBDQ1RyYW5zZm9ybUtleWZyYW1lOjpjbG9uZSgpIGNvbnN0
CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDogewog
ICAgICAgICAgICAgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNf
Y2FzdDxNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qPihtX3ZhbHVlLm9wZXJhdGlvbnMoKVtqXS5n
ZXQoKSk7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtID0gdHJhbnNmb3JtLT5t
YXRyaXgoKTsKKyAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG0gPSBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm0tPm1hdHJpeCgpKTsKICAgICAgICAgICAgIG9wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShtLmEoKSwgbS5iKCksIG0uYygpLCBtLmQoKSwgbS5lKCksIG0uZigpKSk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQpAQCAtMjg3LDE4ICsyODksMTkgQEAgUGFzc093blB0cjxDQ0Fu
aW1hdGlvbkN1cnZlPiBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpjbG9uZSgp
IGNvbnN0CiAgICAgcmV0dXJuIHRvUmV0dXJuLnJlbGVhc2UoKTsKIH0KIAotVHJhbnNmb3JtYXRp
b25NYXRyaXggQ0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZTo6Z2V0VmFsdWUoZG91
YmxlIHQsIGNvbnN0IEludFNpemUmIGxheWVyU2l6ZSkgY29uc3QKK1dlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmdldFZhbHVlKGRvdWJs
ZSB0LCBjb25zdCBJbnRTaXplJiBsYXllclNpemUpIGNvbnN0CiB7CisgICAgLy8gTm90ZTogV2Vi
Q29yZSBkYXRhIHR5cGUgdXNlZCBoZXJlLCBqdXN0IGZvciBub3cuCiAgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtTWF0cml4OwogCiAgICAgaWYgKHQgPD0gbV9rZXlmcmFtZXMuZmly
c3QoKS0+dGltZSgpKSB7CiAgICAgICAgIG1fa2V5ZnJhbWVzLmZpcnN0KCktPnZhbHVlKCkuYXBw
bHkobGF5ZXJTaXplLCB0cmFuc2Zvcm1NYXRyaXgpOwotICAgICAgICByZXR1cm4gdHJhbnNmb3Jt
TWF0cml4OworICAgICAgICByZXR1cm4gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3Jt
TWF0cml4KTsKICAgICB9CiAKICAgICBpZiAodCA+PSBtX2tleWZyYW1lcy5sYXN0KCktPnRpbWUo
KSkgewogICAgICAgICBtX2tleWZyYW1lcy5sYXN0KCktPnZhbHVlKCkuYXBwbHkobGF5ZXJTaXpl
LCB0cmFuc2Zvcm1NYXRyaXgpOwotICAgICAgICByZXR1cm4gdHJhbnNmb3JtTWF0cml4OworICAg
ICAgICByZXR1cm4gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtTWF0cml4KTsKICAg
ICB9CiAKICAgICBzaXplX3QgaSA9IDA7CkBAIC0zMTYsNiArMzE5LDcgQEAgVHJhbnNmb3JtYXRp
b25NYXRyaXggQ0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZTo6Z2V0VmFsdWUoZG91
YmxlIHQsIGNvbnMKICAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBtX2tleWZyYW1lc1tp
KzFdLT52YWx1ZSgpLnNpemUoKTsgKytqKQogICAgICAgICAgICAgbV9rZXlmcmFtZXNbaSsxXS0+
dmFsdWUoKS5vcGVyYXRpb25zKClbal0tPmJsZW5kKG1fa2V5ZnJhbWVzW2ldLT52YWx1ZSgpLmF0
KGopLCBwcm9ncmVzcyktPmFwcGx5KHRyYW5zZm9ybU1hdHJpeCwgbGF5ZXJTaXplKTsKICAgICB9
IGVsc2UgeworICAgICAgICAvLyBOb3RlOiBXZWJDb3JlIGRhdGEgdHlwZSB1c2VkIGhlcmUsIGp1
c3QgZm9yIG5vdy4KICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc291cmNlOwogCiAgICAg
ICAgIG1fa2V5ZnJhbWVzW2ldLT52YWx1ZSgpLmFwcGx5KGxheWVyU2l6ZSwgc291cmNlKTsKQEAg
LTMyNCw3ICszMjgsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBDQ0tleWZyYW1lZFRyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlOjpnZXRWYWx1ZShkb3VibGUgdCwgY29ucwogICAgICAgICB0cmFuc2Zv
cm1NYXRyaXguYmxlbmQoc291cmNlLCBwcm9ncmVzcyk7CiAgICAgfQogCi0gICAgcmV0dXJuIHRy
YW5zZm9ybU1hdHJpeDsKKyAgICByZXR1cm4gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNm
b3JtTWF0cml4KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmlt
YXRpb25DdXJ2ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oCmluZGV4IDhkMWYwZTA1NWY0Mjk3ZDQzNjM3
Nzc5OGRjNDI1ZGE4ZDk0ZjUwMWYuLmU3MGNkYWZiNzViMjk4MDliMGVkYmUzOTBjN2FiYWM5OTBh
NWNiZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmgK
QEAgLTExNiw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBQYXNzT3duUHRyPENDQW5p
bWF0aW9uQ3VydmU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBDQ1RyYW5zZm9y
bUFuaW1hdGlvbkN1cnZlIGltcGxlbWVudGF0aW9uCi0gICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdCwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShk
b3VibGUgdCwgY29uc3QgSW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOwogCiBwcml2YXRlOgogICAg
IENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCAxNGZiNzhhNjVjMjU4MDI3
NGVhZjY4OTAxZjUyZTRiZjc3YzU4YmJjLi4wOTY5Nzk1NDQ4M2E1NzkyZjJlNDI4ZDMwZjBhMmU0
ZmNjY2RhZmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXIuY3BwCkBAIC0yNywxMiArMjcsMTQgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlci5oIgogCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5oIiAvLyBmb3IgS2V5
ZnJhbWVWYWx1ZUxpc3QKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1
ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NLZXlmcmFtZWRBbmlt
YXRpb25DdXJ2ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
PgogI2luY2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+
CiAKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CisKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogbmFtZXNwYWNlIHsKQEAgLTQ3OCw3ICs0ODAsNyBAQCB2b2lkIENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyOjp0aWNrQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSkK
IAogICAgICAgICAgICAgY2FzZSBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtOiB7CiAgICAg
ICAgICAgICAgICAgY29uc3QgQ0NUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSogdHJhbnNmb3JtQW5p
bWF0aW9uQ3VydmUgPSBtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmN1cnZlKCktPnRvVHJhbnNmb3Jt
QW5pbWF0aW9uQ3VydmUoKTsKLSAgICAgICAgICAgICAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtYXRyaXggPSB0cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZS0+Z2V0VmFsdWUodHJpbW1lZCwg
bV9jbGllbnQtPmJvdW5kcygpKTsKKyAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtYXRyaXggPSB0cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZS0+Z2V0VmFsdWUodHJp
bW1lZCwgbV9jbGllbnQtPmJvdW5kcygpKTsKICAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVB
bmltYXRpb25zW2ldLT5pc0ZpbmlzaGVkQXQobW9ub3RvbmljVGltZSkpCiAgICAgICAgICAgICAg
ICAgICAgIG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRp
b246OkZpbmlzaGVkLCBtb25vdG9uaWNUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyLmgKaW5kZXggYWM3Mjg3ZjcxMWUyMzAzYWEwOTNhNzEyYzVj
NTkxYTEwZTMxYzNlNC4uYzRjOTE1OGIyYzg3Y2ZlNDZkZmMxNjJkMDg3YTExZmRmZmI4OTI0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC0z
NCwxMiArMzQsMTYgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJLaXQg
eworY2xhc3MgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7Cit9CisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQW5pbWF0aW9uOwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEtleWZyYW1lVmFs
dWVMaXN0OwotY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGNsYXNzIENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQ4LDggKzUyLDggQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgaW50IGlkKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRP
cGFjaXR5RnJvbUFuaW1hdGlvbihmbG9hdCkgPSAwOwogICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0
eSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtRnJvbUFuaW1hdGlv
bihjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKLSAgICB2aXJ0dWFsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldFRyYW5zZm9ybUZyb21BbmltYXRpb24oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYpID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IElu
dFNpemUmIGJvdW5kcygpIGNvbnN0ID0gMDsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmNwcApp
bmRleCA2OWRlOTA0NzI0OGY4M2M4OTgzMGM4MGIwZmI5MTI0Y2FiY2U0OTEyLi4xZjA4YjliOTk3
Mzg0MjVkNDFhNGM0ZGZiYzdiMGUzMGI3ZDBmZTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuY3Bw
CkBAIC0zOCw2ICszOCw4IEBACiAjaW5jbHVkZSAiY2MvQ0NTb2xpZENvbG9yRHJhd1F1YWQuaCIK
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAordXNpbmcgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBDQ0xheWVySW1wbDo6
Q0NMYXllckltcGwoaW50IGlkKQpAQCAtMTk0LDkgKzE5Niw5IEBAIGNvbnN0IEludFJlY3QgQ0NM
YXllckltcGw6OmdldERyYXdSZWN0KCkgY29uc3QKICAgICByZXR1cm4gbWFwcGVkUmVjdDsKIH0K
IAotVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25z
dAorV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBj
b25zdAogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm1hdGlvbiA9IGRy
YXdUcmFuc2Zvcm0oKTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3Jt
YXRpb24gPSBkcmF3VHJhbnNmb3JtKCk7CiAKICAgICBmbG9hdCBvZmZzZXRYID0gLTAuNSAqIGJv
dW5kcygpLndpZHRoKCk7CiAgICAgZmxvYXQgb2Zmc2V0WSA9IC0wLjUgKiBib3VuZHMoKS5oZWln
aHQoKTsKQEAgLTMwOSw3ICszMTEsNyBAQCB2b2lkIENDTGF5ZXJJbXBsOjpzZXRPcGFjaXR5RnJv
bUFuaW1hdGlvbihmbG9hdCBvcGFjaXR5KQogICAgIHNldE9wYWNpdHkob3BhY2l0eSk7CiB9CiAK
LXZvaWQgQ0NMYXllckltcGw6OnNldFRyYW5zZm9ybUZyb21BbmltYXRpb24oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3ZvaWQgQ0NMYXllckltcGw6OnNldFRyYW5zZm9y
bUZyb21BbmltYXRpb24oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkK
IHsKICAgICBzZXRUcmFuc2Zvcm0odHJhbnNmb3JtKTsKIH0KQEAgLTQ1NSw3ICs0NTcsNyBAQCB2
b2lkIENDTGF5ZXJJbXBsOjpzZXRQcmVzZXJ2ZXMzRChib29sIHByZXNlcnZlczNEKQogICAgIG5v
dGVMYXllclByb3BlcnR5Q2hhbmdlZEZvclN1YnRyZWUoKTsKIH0KIAotdm9pZCBDQ0xheWVySW1w
bDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1Ymxh
eWVyVHJhbnNmb3JtKQordm9pZCBDQ0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFuc2Zvcm0oY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnNmb3JtKQogewogICAgIGlm
IChtX3N1YmxheWVyVHJhbnNmb3JtID09IHN1YmxheWVyVHJhbnNmb3JtKQogICAgICAgICByZXR1
cm47CkBAIC00NjUsNyArNDY3LDcgQEAgdm9pZCBDQ0xheWVySW1wbDo6c2V0U3VibGF5ZXJUcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHN1YmxheWVyVHJhbnMKICAgICBub3Rl
TGF5ZXJQcm9wZXJ0eUNoYW5nZWRGb3JEZXNjZW5kYW50cygpOwogfQogCi12b2lkIENDTGF5ZXJJ
bXBsOjpzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkK
K3ZvaWQgQ0NMYXllckltcGw6OnNldFRyYW5zZm9ybShjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtKQogewogICAgIGlmIChtX3RyYW5zZm9ybSA9PSB0cmFuc2Zvcm0pCiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCmluZGV4IDg4NGMxMjlhZGFhMDhmMDVj
YmQ0NDM4Yzc5NzFiNGUwN2Q1Zjc3ZDguLjJjNDFkMDZlYThiMDBiZGQyZWNmNDM3OWZhOGQ1ZmI5
ZGZjMjljYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaApAQCAtMzEsMTEgKzMxLDExIEBACiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRleHRTdHJl
YW0uaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNl
LmgiCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlIDxwdWJsaWMv
V2ViRmlsdGVyT3BlcmF0aW9ucy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1Jl
ZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CkBAIC02MSw4ICs2MSw4IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGludCBpZCgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fbGF5
ZXJJZDsgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRPcGFjaXR5RnJvbUFuaW1hdGlvbihmbG9hdCkg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3QgT1ZFUlJJREUgeyBy
ZXR1cm4gbV9vcGFjaXR5OyB9Ci0gICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybUZyb21Bbmlt
YXRpb24oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1Gcm9t
QW5pbWF0aW9uKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAgICAgdmly
dHVhbCBjb25zdCBJbnRTaXplJiBib3VuZHMoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2Jv
dW5kczsgfQogCiAgICAgLy8gVHJlZSBzdHJ1Y3R1cmUuCkBAIC0xMzYsOCArMTM2LDggQEAgcHVi
bGljOgogICAgIHZvaWQgc2V0SXNOb25Db21wb3NpdGVkQ29udGVudChib29sIGlzTm9uQ29tcG9z
aXRlZENvbnRlbnQpIHsgbV9pc05vbkNvbXBvc2l0ZWRDb250ZW50ID0gaXNOb25Db21wb3NpdGVk
Q29udGVudDsgfQogICAgIGJvb2wgaXNOb25Db21wb3NpdGVkQ29udGVudCgpIGNvbnN0IHsgcmV0
dXJuIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsgfQogCi0gICAgdm9pZCBzZXRTdWJsYXllclRy
YW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3VibGF5
ZXJUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFN1YmxheWVyVHJhbnNmb3JtKGNvbnN0IFdlYktp
dDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fc3Vi
bGF5ZXJUcmFuc2Zvcm07IH0KIAogICAgIC8vIERlYnVnIGxheWVyIGJvcmRlciAtIHZpc3VhbCBl
ZmZlY3Qgb25seSwgZG8gbm90IGNoYW5nZSBnZW9tZXRyeS9jbGlwcGluZy9ldGMuCiAgICAgdm9p
ZCBzZXREZWJ1Z0JvcmRlckNvbG9yKENvbG9yKTsKQEAgLTIxMiwxMyArMjEyLDEzIEBAIHB1Ymxp
YzoKICAgICAvLyBSZXR1cm5zIHRoZSByZWN0IGNvbnRhaW50YWluaW5nIHRoaXMgbGF5ZXIgaW4g
dGhlIGN1cnJlbnQgdmlldydzIGNvb3JkaW5hdGUgc3lzdGVtLgogICAgIGNvbnN0IEludFJlY3Qg
Z2V0RHJhd1JlY3QoKSBjb25zdDsKIAotICAgIHZvaWQgc2V0VHJhbnNmb3JtKGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Jik7CisgICAgdm9pZCBzZXRUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogICAgIGJvb2wgdHJhbnNmb3JtSXNBbmltYXRpbmco
KSBjb25zdDsKIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3Jt
KCkgY29uc3QgeyByZXR1cm4gbV9kcmF3VHJhbnNmb3JtOyB9Ci0gICAgdm9pZCBzZXREcmF3VHJh
bnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9kcmF3VHJhbnNm
b3JtID0gbWF0cml4OyB9Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHNjcmVlblNw
YWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsgfQot
ICAgIHZvaWQgc2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1hdHJpeCkgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3JtID0gbWF0cml4OyB9CisgICAgY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fZHJhd1RyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShj
b25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9kcmF3VHJh
bnNmb3JtID0gbWF0cml4OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblNwYWNl
VHJhbnNmb3JtOyB9CisgICAgdm9pZCBzZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpIHsgbV9zY3JlZW5TcGFjZVRyYW5z
Zm9ybSA9IG1hdHJpeDsgfQogCiAgICAgYm9vbCBkcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKSBj
b25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm1Jc0FuaW1hdGluZzsgfQogICAgIHZvaWQgc2V0
RHJhd1RyYW5zZm9ybUlzQW5pbWF0aW5nKGJvb2wgYW5pbWF0aW5nKSB7IG1fZHJhd1RyYW5zZm9y
bUlzQW5pbWF0aW5nID0gYW5pbWF0aW5nOyB9CkBAIC0yNTMsNyArMjUzLDcgQEAgcHJvdGVjdGVk
OgogICAgIHN0YXRpYyB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KTsK
IAogICAgIC8vIFRyYW5zZm9ybWF0aW9uIHVzZWQgdG8gdHJhbnNmb3JtIHF1YWRzIHByb3ZpZGVk
IGluIGFwcGVuZFF1YWRzLgotICAgIHZpcnR1YWwgVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRy
YW5zZm9ybSgpIGNvbnN0OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBxdWFkVHJhbnNmb3JtKCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRQYXJl
bnQoQ0NMYXllckltcGwqIHBhcmVudCkgeyBtX3BhcmVudCA9IHBhcmVudDsgfQpAQCAtMzA0LDgg
KzMwNCw4IEBAIHByaXZhdGU6CiAgICAgRmxvYXRQb2ludCBtX3Bvc2l0aW9uOwogICAgIGJvb2wg
bV9wcmVzZXJ2ZXMzRDsKICAgICBib29sIG1fZHJhd0NoZWNrZXJib2FyZEZvck1pc3NpbmdUaWxl
czsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3N1YmxheWVyVHJhbnNmb3JtOwotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggbV9zdWJsYXllclRyYW5zZm9ybTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOwogICAgIGJvb2wgbV91c2VzTGF5ZXJDbGlwcGluZzsK
ICAgICBib29sIG1faXNOb25Db21wb3NpdGVkQ29udGVudDsKIApAQCAtMzM5LDggKzMzOSw4IEBA
IHByaXZhdGU6CiAgICAgV2ViS2l0OjpXZWJGaWx0ZXJPcGVyYXRpb25zIG1fZmlsdGVyczsKICAg
ICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9iYWNrZ3JvdW5kRmlsdGVyczsKIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtX3NjcmVlblNwYWNlVHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggbV9kcmF3VHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBib29sIG1fZHJhd1RyYW5zZm9y
bUlzQW5pbWF0aW5nOwogICAgIGJvb2wgbV9zY3JlZW5TcGFjZVRyYW5zZm9ybUlzQW5pbWF0aW5n
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyU29ydGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCmluZGV4IDFhZjYzOWM4YjA5NmI0NDkwOTU4
MTExMGVlYWMwMmVlMWYzNjc1NWEuLmZkZjNjN2JiMjc1YzE2NzEzM2ZhMTA4ZDExYTMwZDFmODMy
YWUwZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuY3BwCkBAIC0yNiwxMyArMjYsMTQgQEAK
IAogI2luY2x1ZGUgImNjL0NDTGF5ZXJTb3J0ZXIuaCIKIAotI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0ND
UmVuZGVyU3VyZmFjZS5oIgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9X
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCiB1c2lu
ZyBuYW1lc3BhY2Ugc3RkOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsK
IAogI2RlZmluZSBMT0dfQ0hBTk5FTF9QUkVGSVggTG9nCiAjZGVmaW5lIFNIT1dfREVCVUdfTE9H
IDAKQEAgLTE1MSw3ICsxNTIsNyBAQCBDQ0xheWVyU29ydGVyOjpBQkNvbXBhcmVSZXN1bHQgQ0NM
YXllclNvcnRlcjo6Y2hlY2tPdmVybGFwKExheWVyU2hhcGUqIGEsIExheWVyUwogICAgIHJldHVy
biBCQmVmb3JlQTsKIH0KIAotQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZTo6TGF5ZXJTaGFwZShm
bG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJh
d1RyYW5zZm9ybSkKK0NDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGU6OkxheWVyU2hhcGUoZmxvYXQg
d2lkdGgsIGZsb2F0IGhlaWdodCwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdU
cmFuc2Zvcm0pCiB7CiAgICAgRmxvYXRRdWFkIGxheWVyUXVhZChGbG9hdFBvaW50KC13aWR0aCAq
IDAuNSwgaGVpZ2h0ICogMC41KSwKICAgICAgICAgICAgICAgICAgICAgICAgIEZsb2F0UG9pbnQo
d2lkdGggKiAwLjUsIGhlaWdodCAqIDAuNSksCkBAIC0yMzYsNyArMjM3LDcgQEAgdm9pZCBDQ0xh
eWVyU29ydGVyOjpjcmVhdGVHcmFwaE5vZGVzKExheWVyTGlzdDo6aXRlcmF0b3IgZmlyc3QsIExh
eWVyTGlzdDo6aXRlcmEKICAgICAgICAgTE9HKENDTGF5ZXJTb3J0ZXIsICJMYXllciAlZCAoJWQg
eCAlZClcbiIsIG5vZGUubGF5ZXItPmlkKCksIG5vZGUubGF5ZXItPmJvdW5kcygpLndpZHRoKCks
IG5vZGUubGF5ZXItPmJvdW5kcygpLmhlaWdodCgpKTsKICNlbmRpZgogCi0gICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGRyYXdUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGRyYXdUcmFuc2Zvcm07CiAgICAgICAgIGZsb2F0IGxheWVyV2lkdGgsIGxheWVySGVp
Z2h0OwogICAgICAgICBpZiAocmVuZGVyU3VyZmFjZSkgewogICAgICAgICAgICAgZHJhd1RyYW5z
Zm9ybSA9IHJlbmRlclN1cmZhY2UtPmRyYXdUcmFuc2Zvcm0oKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJTb3J0
ZXIuaAppbmRleCAzZTJhODhjOTIxOTNiYjcwMTA0NDMxNDdlMGZmZmI3NTNhNzRiMjk5Li5jYjg4
ZTg1ZGI1NGIyOTk3ZGEzZGNlZmI4NDVjNWZjY2E0MDk4MmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyU29ydGVyLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclNv
cnRlci5oCkBAIC0zMyw2ICszMywxMCBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBD
Q0xheWVyU29ydGVyIHsKQEAgLTQ3LDcgKzUxLDcgQEAgcHVibGljOgogICAgIC8vIEhvbGRzIHZh
cmlvdXMgdXNlZnVsIHByb3BlcnRpZXMgZGVyaXZlZCBmcm9tIGEgbGF5ZXIncyAzRCBvdXRsaW5l
LgogICAgIHN0cnVjdCBMYXllclNoYXBlIHsKICAgICAgICAgTGF5ZXJTaGFwZSgpIHsgfQotICAg
ICAgICBMYXllclNoYXBlKGZsb2F0IHdpZHRoLCBmbG9hdCBoZWlnaHQsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiBkcmF3VHJhbnNmb3JtKTsKKyAgICAgICAgTGF5ZXJTaGFwZShmbG9hdCB3
aWR0aCwgZmxvYXQgaGVpZ2h0LCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiBkcmF3VHJhbnNmb3JtKTsKIAogICAgICAgICBmbG9hdCBsYXllclpGcm9tUHJvamVjdGVkUG9p
bnQoY29uc3QgRmxvYXRQb2ludCYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmNwcAppbmRleCA5NjM5N2NhNDVjNDIxNjQ5NWFjZmI4YTA3ZTRiNmEwYTE1OTkwMWFjLi5jYjYx
MGRmZDllOTJjMjI3Y2Q4MzE2M2IxMzQwNDA1ZWI2Y2RmYjE2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5
ZXJUcmVlSG9zdC5jcHAKQEAgLTQzLDYgKzQzLDcgQEAKICNpbmNsdWRlICJjYy9DQ1RocmVhZFBy
b3h5LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2Ugewogc3RhdGljIGludCBudW1MYXllclRyZWVJbnN0
YW5jZXM7CkBAIC01MTEsOCArNTEyLDggQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3Q6OnVwZGF0ZUxh
eWVycyhMYXllckNocm9taXVtKiByb290TGF5ZXIsIENDVGV4dHVyZVVwZGF0ZXImIHUKIAogICAg
IHsKICAgICAgICAgVFJBQ0VfRVZFTlQoIkNDTGF5ZXJUcmVlSG9zdDo6dXBkYXRlTGF5ZXJzOjpj
YWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZGV2aWNlU2NhbGVUcmFu
c2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owor
ICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZpY2VTY2FsZVRyYW5zZm9ybTsKICAg
ICAgICAgZGV2aWNlU2NhbGVUcmFuc2Zvcm0uc2NhbGUobV9zZXR0aW5ncy5kZXZpY2VTY2FsZUZh
Y3Rvcik7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5z
Zm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBkZXZpY2VTY2FsZVRyYW5z
Zm9ybSwgaWRlbnRpdHlNYXRyaXgsIHVwZGF0ZUxpc3QsIHJvb3RSZW5kZXJTdXJmYWNlLT5sYXll
ckxpc3QoKSwgbGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLm1heFRleHR1cmVTaXplKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCmluZGV4IGVjZWMyM2IxMWRhZDdmZjE5MGE5
OTNjNzM0OTVhMjg4Zjg1ODk1ZWIuLmRjOGZiMWM5MzU0YzFhMGFhNDJhNmZiZmJjY2NjY2Q0YTNh
MmRhY2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oCkBAIC0zMCw3ICszMCw2IEBACiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRl
ICJSYXRlTGltaXRlci5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5j
bHVkZSAiY2MvQ0NBbmltYXRpb25FdmVudHMuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhv
c3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RDb21t
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmNwcAppbmRleCBlNGVlM2VkYzFhNzhlM2YwODAxZTk4ZWU5Y2Nj
NTUxNTE4NGU1MThkLi5iNWJjYWJiZjA4YzZkYzMwMjMzYzdhYzNmNjI5NjM3MjYyYmMwNzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5jcHAKQEAgLTMxLDcgKzMx
LDYgQEAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgog
I2luY2x1ZGUgIlJlbmRlclN1cmZhY2VDaHJvbWl1bS5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0
aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NBY3RpdmVBbmltYXRpb24uaCIKICNpbmNsdWRl
ICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJJ
bXBsLmgiCkBAIC0zOSwxMCArMzgsMTMgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyU29ydGVyLmgi
CiAjaW5jbHVkZSAiY2MvQ0NNYXRoVXRpbC5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFj
ZS5oIgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgorCit1c2lu
ZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUludFJlY3QgQ0NMYXllclRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlUmVjdChj
b25zdCBJbnRSZWN0JiB0YXJnZXRTdXJmYWNlUmVjdCwgY29uc3QgSW50UmVjdCYgbGF5ZXJCb3Vu
ZFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCitJbnRSZWN0IEND
TGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYg
dGFyZ2V0U3VyZmFjZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyQm91bmRSZWN0LCBjb25zdCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIC8vIElzIHRoaXMgbGF5
ZXIgZnVsbHkgY29udGFpbmVkIHdpdGhpbiB0aGUgdGFyZ2V0IHN1cmZhY2U/CiAgICAgSW50UmVj
dCBsYXllckluU3VyZmFjZVNwYWNlID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QodHJhbnNm
b3JtLCBsYXllckJvdW5kUmVjdCk7CkBAIC01OSw3ICs2MSw3IEBAIEludFJlY3QgQ0NMYXllclRy
ZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVWaXNpYmxlUmVjdChjb25zdCBJbnRSZWN0JiB0YXJnZXRT
dXJmYWNlCiAgICAgLy8gVGhpcyBib3VuZGluZyByZWN0YW5nbGUgbWF5IGJlIGxhcmdlciB0aGFu
IGl0IG5lZWRzIHRvIGJlIChiZWluZwogICAgIC8vIGF4aXMtYWxpZ25lZCksIGJ1dCBpcyBhIHJl
YXNvbmFibGUgZmlsdGVyIG9uIHRoZSBzcGFjZSB0byBjb25zaWRlci4KICAgICAvLyBOb24taW52
ZXJ0aWJsZSB0cmFuc2Zvcm1zIHdpbGwgY3JlYXRlIGFuIGVtcHR5IHJlY3QgaGVyZS4KLSAgICBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJmYWNlVG9MYXllciA9IHRyYW5zZm9ybS5pbnZl
cnNlKCk7CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VyZmFjZVRvTGF5ZXIg
PSB0cmFuc2Zvcm0uaW52ZXJzZSgpOwogICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gZW5jbG9zaW5n
SW50UmVjdChDQ01hdGhVdGlsOjpwcm9qZWN0Q2xpcHBlZFJlY3Qoc3VyZmFjZVRvTGF5ZXIsIEZs
b2F0UmVjdChtaW5pbWFsU3VyZmFjZVJlY3QpKSk7CiAgICAgbGF5ZXJSZWN0LmludGVyc2VjdChs
YXllckJvdW5kUmVjdCk7CiAgICAgcmV0dXJuIGxheWVyUmVjdDsKQEAgLTEwMiw3ICsxMDQsNyBA
QCBzdGF0aWMgYm9vbCBpc0xheWVyQmFja0ZhY2VWaXNpYmxlKExheWVyVHlwZSogbGF5ZXIpCiB9
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4KLXN0YXRpYyBib29sIGlzU3VyZmFjZUJh
Y2tGYWNlVmlzaWJsZShMYXllclR5cGUqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZHJhd1RyYW5zZm9ybSkKK3N0YXRpYyBib29sIGlzU3VyZmFjZUJhY2tGYWNlVmlzaWJsZShM
YXllclR5cGUqIGxheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5z
Zm9ybSkKIHsKICAgICBpZiAobGF5ZXJJc0luRXhpc3RpbmczRFJlbmRlcmluZ0NvbnRleHQobGF5
ZXIpKQogICAgICAgICByZXR1cm4gZHJhd1RyYW5zZm9ybS5pc0JhY2tGYWNlVmlzaWJsZSgpOwpA
QCAtMTMzLDcgKzEzNSw3IEBAIHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVZpc2libGVMYXllclJl
Y3QoTGF5ZXJUeXBlKiBsYXllcikKICAgICBjb25zdCBJbnRTaXplJiBjb250ZW50Qm91bmRzID0g
bGF5ZXItPmNvbnRlbnRCb3VuZHMoKTsKIAogICAgIGNvbnN0IEludFJlY3QgbGF5ZXJCb3VuZFJl
Y3QgPSBJbnRSZWN0KEludFBvaW50KCksIGNvbnRlbnRCb3VuZHMpOwotICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyLT5kcmF3VHJhbnNmb3JtKCk7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKTsKIAog
ICAgIHRyYW5zZm9ybS5zY2FsZU5vblVuaWZvcm0oYm91bmRzLndpZHRoKCkgLyBzdGF0aWNfY2Fz
dDxkb3VibGU+KGNvbnRlbnRCb3VuZHMud2lkdGgoKSksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib3VuZHMuaGVpZ2h0KCkgLyBzdGF0aWNfY2FzdDxkb3VibGU+KGNvbnRlbnRCb3Vu
ZHMuaGVpZ2h0KCkpKTsKQEAgLTE0Myw3ICsxNDUsNyBAQCBzdGF0aWMgSW50UmVjdCBjYWxjdWxh
dGVWaXNpYmxlTGF5ZXJSZWN0KExheWVyVHlwZSogbGF5ZXIpCiAgICAgcmV0dXJuIHZpc2libGVM
YXllclJlY3Q7CiB9CiAKLXN0YXRpYyBib29sIGlzU2NhbGVPclRyYW5zbGF0aW9uKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtKQorc3RhdGljIGJvb2wgaXNTY2FsZU9yVHJhbnNsYXRpb24o
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG0pCiB7CiAgICAgcmV0dXJuICFtLm0xMigp
ICYmICFtLm0xMygpICYmICFtLm0xNCgpCiAgICAgICAgICAgICYmICFtLm0yMSgpICYmICFtLm0y
MygpICYmICFtLm0yNCgpCkBAIC0yODIsNyArMjg0LDcgQEAgc3RhdGljIGJvb2wgc3VidHJlZVNo
b3VsZFJlbmRlclRvU2VwYXJhdGVTdXJmYWNlKExheWVyVHlwZSogbGF5ZXIsIGJvb2wgYXhpc0Fs
aWcKIC8vIFJlY3Vyc2l2ZWx5IHdhbGtzIHRoZSBsYXllciB0cmVlIHN0YXJ0aW5nIGF0IHRoZSBn
aXZlbiBub2RlIGFuZCBjb21wdXRlcyBhbGwgdGhlCiAvLyBuZWNlc3NhcnkgdHJhbnNmb3JtYXRp
b25zLCBjbGlwUmVjdHMsIHJlbmRlciBzdXJmYWNlcywgZXRjLgogdGVtcGxhdGU8dHlwZW5hbWUg
TGF5ZXJUeXBlLCB0eXBlbmFtZSBMYXllckxpc3QsIHR5cGVuYW1lIFJlbmRlclN1cmZhY2VUeXBl
LCB0eXBlbmFtZSBMYXllclNvcnRlcj4KLXN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eUludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyVHlwZSogcm9v
dExheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgUmVuZGVyU3VyZmFjZVR5
cGUqIG5lYXJlc3RBbmNlc3RvclRoYXRNb3Zlc1BpeGVscywgTGF5ZXJMaXN0JiByZW5kZXJTdXJm
YWNlTGF5ZXJMaXN0LCBMYXllckxpc3QmIGxheWVyTGlzdCwgTGF5ZXJTb3J0ZXIqIGxheWVyU29y
dGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCitzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNm
b3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllclR5cGUqIHJv
b3RMYXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVudE1hdHJpeCwgY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFJlbmRlclN1
cmZhY2VUeXBlKiBuZWFyZXN0QW5jZXN0b3JUaGF0TW92ZXNQaXhlbHMsIExheWVyTGlzdCYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgTGF5ZXJMaXN0JiBsYXllckxpc3QsIExheWVyU29ydGVyKiBs
YXllclNvcnRlciwgaW50IG1heFRleHR1cmVTaXplKQogewogICAgIC8vIFRoaXMgZnVuY3Rpb24g
Y29tcHV0ZXMgdGhlIG5ldyBtYXRyaXggdHJhbnNmb3JtYXRpb25zIHJlY3Vyc2l2ZWx5IGZvciB0
aGlzCiAgICAgLy8gbGF5ZXIgYW5kIGFsbCBpdHMgZGVzY2VuZGFudHMuIEl0IGFsc28gY29tcHV0
ZXMgdGhlIGFwcHJvcHJpYXRlIHJlbmRlciBzdXJmYWNlcy4KQEAgLTI5Niw3ICsyOTgsNyBAQCBz
dGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHlJbnRlcm5hbChM
YXllclR5cGUqIGxheWVyLCBMYXllcgogICAgIC8vICAgIHByb2plY3Rpb24gYXBwbGllZCBhdCBk
cmF3IHRpbWUgZmxpcHMgdGhlIFkgYXhpcyBhcHByb3ByaWF0ZWx5LgogICAgIC8vCiAgICAgLy8g
Mi4gVGhlIGFuY2hvciBwb2ludCwgd2hlbiBnaXZlbiBhcyBhIEZsb2F0UG9pbnQgb2JqZWN0LCBp
cyBzcGVjaWZpZWQgaW4gInVuaXQgbGF5ZXIgc3BhY2UiLAotICAgIC8vICAgIHdoZXJlIHRoZSBi
b3VuZHMgb2YgdGhlIGxheWVyIG1hcCB0byBbMCwgMV0uIEhvd2V2ZXIsIGFzIGEgVHJhbnNmb3Jt
YXRpb25NYXRyaXggb2JqZWN0LAorICAgIC8vICAgIHdoZXJlIHRoZSBib3VuZHMgb2YgdGhlIGxh
eWVyIG1hcCB0byBbMCwgMV0uIEhvd2V2ZXIsIGFzIGEgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
b2JqZWN0LAogICAgIC8vICAgIHRoZSB0cmFuc2Zvcm0gdG8gdGhlIGFuY2hvciBwb2ludCBpcyBz
cGVjaWZpZWQgaW4gInBpeGVsIGxheWVyIHNwYWNlIiwgd2hlcmUgdGhlIGJvdW5kcwogICAgIC8v
ICAgIG9mIHRoZSBsYXllciBtYXAgdG8gW2JvdW5kcy53aWR0aCgpLCBib3VuZHMuaGVpZ2h0KCld
LgogICAgIC8vCkBAIC0zOTksNyArNDAxLDcgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAg
ICBmbG9hdCBjZW50ZXJPZmZzZXRYID0gKDAuNSAtIGFuY2hvclBvaW50LngoKSkgKiBib3VuZHMu
d2lkdGgoKTsKICAgICBmbG9hdCBjZW50ZXJPZmZzZXRZID0gKDAuNSAtIGFuY2hvclBvaW50Lnko
KSkgKiBib3VuZHMuaGVpZ2h0KCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllckxv
Y2FsVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyTG9jYWxUcmFu
c2Zvcm07CiAgICAgLy8gTFQgPSBUcltvcmlnaW5dICogU1twYWdlU2NhbGVEZWx0YV0KICAgICBs
YXllckxvY2FsVHJhbnNmb3JtLnNjYWxlKGxheWVyLT5wYWdlU2NhbGVEZWx0YSgpKTsKICAgICAv
LyBMVCA9IFRyW29yaWdpbl0gKiBTW3BhZ2VTY2FsZURlbHRhXSAqIFRyW29yaWdpbjJhbmNob3Jd
CkBAIC00MDksOCArNDExLDggQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICAvLyBMVCA9
IFRyW29yaWdpbl0gKiBTW3BhZ2VTY2FsZURlbHRhXSAqIFRyW29yaWdpbjJhbmNob3JdICogTVts
YXllcl0gKiBUclthbmNob3IyY2VudGVyXQogICAgIGxheWVyTG9jYWxUcmFuc2Zvcm0udHJhbnNs
YXRlM2QoY2VudGVyT2Zmc2V0WCwgY2VudGVyT2Zmc2V0WSwgLWxheWVyLT5hbmNob3JQb2ludFoo
KSk7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb21iaW5lZFRyYW5zZm9ybSA9IHBhcmVu
dE1hdHJpeDsKLSAgICBjb21iaW5lZFRyYW5zZm9ybSA9IGNvbWJpbmVkVHJhbnNmb3JtLm11bHRp
cGx5KGxheWVyTG9jYWxUcmFuc2Zvcm0pOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNv
bWJpbmVkVHJhbnNmb3JtID0gcGFyZW50TWF0cml4OworICAgIGNvbWJpbmVkVHJhbnNmb3JtLm11
bHRpcGx5KGxheWVyTG9jYWxUcmFuc2Zvcm0pOwogCiAgICAgYm9vbCBhbmltYXRpbmdUcmFuc2Zv
cm1Ub1RhcmdldCA9IGxheWVyLT50cmFuc2Zvcm1Jc0FuaW1hdGluZygpOwogICAgIGJvb2wgYW5p
bWF0aW5nVHJhbnNmb3JtVG9TY3JlZW4gPSBhbmltYXRpbmdUcmFuc2Zvcm1Ub1RhcmdldDsKQEAg
LTQyNCw3ICs0MjYsNyBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogCiAgICAgLy8gZnVsbEhp
ZXJhcmNoeU1hdHJpeCBpcyB0aGUgbWF0cml4IHRoYXQgdHJhbnNmb3JtcyBvYmplY3RzIGJldHdl
ZW4gc2NyZWVuIHNwYWNlIChleGNlcHQgcHJvamVjdGlvbiBtYXRyaXgpIGFuZCB0aGUgbW9zdCBy
ZWNlbnQgUmVuZGVyU3VyZmFjZSdzIHNwYWNlLgogICAgIC8vIG5leHRIaWVyYXJjaHlNYXRyaXgg
d2lsbCBvbmx5IGNoYW5nZSBpZiB0aGlzIGxheWVyIHVzZXMgYSBuZXcgUmVuZGVyU3VyZmFjZSwg
b3RoZXJ3aXNlIHJlbWFpbnMgdGhlIHNhbWUuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmV4
dEhpZXJhcmNoeU1hdHJpeCA9IGZ1bGxIaWVyYXJjaHlNYXRyaXg7CisgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggbmV4dEhpZXJhcmNoeU1hdHJpeCA9IGZ1bGxIaWVyYXJjaHlNYXRyaXg7CiAK
ICAgICAvLyBGSVhNRTogVGhpcyBzZWVtcyBsaWtlIHRoZSB3cm9uZyBwbGFjZSB0byBzZXQgdGhp
cwogICAgIGxheWVyLT5zZXRVc2VzTGF5ZXJDbGlwcGluZyhmYWxzZSk7CkBAIC00NDEsNyArNDQz
LDcgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50
ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICAgICAgcmVuZGVyU3VyZmFjZS0+Y2xl
YXJMYXllckxpc3QoKTsKIAogICAgICAgICAvLyBUaGUgb3JpZ2luIG9mIHRoZSBuZXcgc3VyZmFj
ZSBpcyB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIGxheWVyLgotICAgICAgICBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBkcmF3VHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBkcmF3VHJhbnNmb3JtOwogICAgICAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAu
NSAqIGJvdW5kcy53aWR0aCgpLCAwLjUgKiBib3VuZHMuaGVpZ2h0KCksIDApOwogICAgICAgICBs
YXllci0+c2V0RHJhd1RyYW5zZm9ybShkcmF3VHJhbnNmb3JtKTsKIApAQCAtNDUzLDcgKzQ1NSw3
IEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVy
bmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAgICAgICAgIGxheWVyLT5zZXREcmF3T3BhY2l0
eSgxKTsKICAgICAgICAgbGF5ZXItPnNldERyYXdPcGFjaXR5SXNBbmltYXRpbmcoZmFsc2UpOwog
Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHN1cmZhY2VPcmlnaW5UcmFuc2Zvcm0gPSBj
b21iaW5lZFRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VyZmFj
ZU9yaWdpblRyYW5zZm9ybSA9IGNvbWJpbmVkVHJhbnNmb3JtOwogICAgICAgICBzdXJmYWNlT3Jp
Z2luVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKC0wLjUgKiBib3VuZHMud2lkdGgoKSwgLTAuNSAqIGJv
dW5kcy5oZWlnaHQoKSwgMCk7CiAgICAgICAgIHJlbmRlclN1cmZhY2UtPnNldE9yaWdpblRyYW5z
Zm9ybShzdXJmYWNlT3JpZ2luVHJhbnNmb3JtKTsKIApAQCAtNTI2LDcgKzUyOCw3IEBAIHN0YXRp
YyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eUludGVybmFsKExheWVy
VHlwZSogbGF5ZXIsIExheWVyCiAKICAgICAvLyBOb3RlIHRoYXQgYXQgdGhpcyBwb2ludCwgbGF5
ZXItPmRyYXdUcmFuc2Zvcm0oKSBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgbG9jYWwg
dmFyaWFibGUgZHJhd1RyYW5zZm9ybS4KICAgICAvLyBsYXllclNjcmVlblNwYWNlVHJhbnNmb3Jt
IHJlcHJlc2VudHMgdGhlIHRyYW5zZm9ybSBiZXR3ZWVuIHJvb3QgbGF5ZXIncyAic2NyZWVuIHNw
YWNlIiBhbmQgbG9jYWwgbGF5ZXIgc3BhY2UuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5
ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSA9IG5leHRIaWVyYXJjaHlNYXRyaXg7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybSA9IG5leHRIaWVyYXJj
aHlNYXRyaXg7CiAgICAgbGF5ZXJTY3JlZW5TcGFjZVRyYW5zZm9ybS5tdWx0aXBseShsYXllci0+
ZHJhd1RyYW5zZm9ybSgpKTsKICAgICBsYXllclNjcmVlblNwYWNlVHJhbnNmb3JtLnRyYW5zbGF0
ZTNkKC0wLjUgKiBib3VuZHMud2lkdGgoKSwgLTAuNSAqIGJvdW5kcy5oZWlnaHQoKSwgMCk7CiAg
ICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGxheWVyU2NyZWVuU3BhY2VUcmFuc2Zv
cm0pOwpAQCAtNTQxLDcgKzU0Myw3IEBAIHN0YXRpYyBib29sIGNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eUludGVybmFsKExheWVyVHlwZSogbGF5ZXIsIExheWVyCiAgICAgfSBl
bHNlCiAgICAgICAgIGxheWVyLT5zZXREcmF3YWJsZUNvbnRlbnRSZWN0KEludFJlY3QoKSk7CiAK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdWJsYXllck1hdHJpeCA9IGxheWVyLT5kcmF3VHJh
bnNmb3JtKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJNYXRyaXggPSBs
YXllci0+ZHJhd1RyYW5zZm9ybSgpOwogCiAgICAgLy8gRmxhdHRlbiB0byAyRCBpZiB0aGUgbGF5
ZXIgZG9lc24ndCBwcmVzZXJ2ZSAzRC4KICAgICBpZiAoIWxheWVyLT5wcmVzZXJ2ZXMzRCgpKSB7
CkBAIC02MjksNyArNjMxLDcgQEAgc3RhdGljIGJvb2wgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5SW50ZXJuYWwoTGF5ZXJUeXBlKiBsYXllciwgTGF5ZXIKICAgICAgICAgbGF5
ZXItPnNldENsaXBSZWN0KGxheWVyLT5kcmF3YWJsZUNvbnRlbnRSZWN0KCkpOwogCiAgICAgICAg
IC8vIEFkanVzdCB0aGUgb3JpZ2luIG9mIHRoZSB0cmFuc2Zvcm0gdG8gYmUgdGhlIGNlbnRlciBv
ZiB0aGUgcmVuZGVyIHN1cmZhY2UuCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGRyYXdU
cmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlLT5vcmlnaW5UcmFuc2Zvcm0oKTsKKyAgICAgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggZHJhd1RyYW5zZm9ybSA9IHJlbmRlclN1cmZhY2UtPm9yaWdp
blRyYW5zZm9ybSgpOwogICAgICAgICBkcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZTNkKHN1cmZhY2VD
ZW50ZXIueCgpICsgY2VudGVyT2Zmc2V0RHVlVG9DbGlwcGluZy53aWR0aCgpLCBzdXJmYWNlQ2Vu
dGVyLnkoKSArIGNlbnRlck9mZnNldER1ZVRvQ2xpcHBpbmcuaGVpZ2h0KCksIDApOwogICAgICAg
ICByZW5kZXJTdXJmYWNlLT5zZXREcmF3VHJhbnNmb3JtKGRyYXdUcmFuc2Zvcm0pOwogCkBAIC02
MzgsMjMgKzY0MCwyMyBAQCBzdGF0aWMgYm9vbCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZp
c2liaWxpdHlJbnRlcm5hbChMYXllclR5cGUqIGxheWVyLCBMYXllcgogCiAgICAgICAgIGlmIChs
YXllci0+cmVwbGljYUxheWVyKCkpIHsKICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIHRyYW5z
Zm9ybWF0aW9uIG1hdHJpeCB1c2VkIHRvIGRyYXcgdGhlIHN1cmZhY2UncyByZXBsaWNhIHRvIHRo
ZSB0YXJnZXQgc3VyZmFjZS4KLSAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxp
Y2FEcmF3VHJhbnNmb3JtID0gcmVuZGVyU3VyZmFjZS0+b3JpZ2luVHJhbnNmb3JtKCk7CisgICAg
ICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhRHJhd1RyYW5zZm9ybSA9IHJl
bmRlclN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpOwogICAgICAgICAgICAgcmVwbGljYURyYXdU
cmFuc2Zvcm0udHJhbnNsYXRlKGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+cG9zaXRpb24oKS54KCks
IGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+cG9zaXRpb24oKS55KCkpOwogICAgICAgICAgICAgcmVw
bGljYURyYXdUcmFuc2Zvcm0ubXVsdGlwbHkobGF5ZXItPnJlcGxpY2FMYXllcigpLT50cmFuc2Zv
cm0oKSk7CiAgICAgICAgICAgICByZXBsaWNhRHJhd1RyYW5zZm9ybS50cmFuc2xhdGUoc3VyZmFj
ZUNlbnRlci54KCkgLSBhbmNob3JQb2ludC54KCkgKiBib3VuZHMud2lkdGgoKSwgc3VyZmFjZUNl
bnRlci55KCkgLSBhbmNob3JQb2ludC55KCkgKiBib3VuZHMuaGVpZ2h0KCkpOwogICAgICAgICAg
ICAgcmVuZGVyU3VyZmFjZS0+c2V0UmVwbGljYURyYXdUcmFuc2Zvcm0ocmVwbGljYURyYXdUcmFu
c2Zvcm0pOwogCi0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzdXJmYWNlT3JpZ2lu
VG9SZXBsaWNhT3JpZ2luVHJhbnNmb3JtOworICAgICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggc3VyZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRyYW5zZm9ybTsKICAgICAgICAgICAg
IHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRlKGxheWVyLT5y
ZXBsaWNhTGF5ZXIoKS0+cG9zaXRpb24oKS54KCksIGxheWVyLT5yZXBsaWNhTGF5ZXIoKS0+cG9z
aXRpb24oKS55KCkpOwogICAgICAgICAgICAgc3VyZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRy
YW5zZm9ybS5tdWx0aXBseShsYXllci0+cmVwbGljYUxheWVyKCktPnRyYW5zZm9ybSgpKTsKICAg
ICAgICAgICAgIHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm0udHJhbnNsYXRl
KC1hbmNob3JQb2ludC54KCkgKiBib3VuZHMud2lkdGgoKSwgLWFuY2hvclBvaW50LnkoKSAqIGJv
dW5kcy5oZWlnaHQoKSk7CiAKICAgICAgICAgICAgIC8vIENvbXB1dGUgdGhlIHJlcGxpY2EncyAi
b3JpZ2luVHJhbnNmb3JtIiB0aGF0IG1hcHMgZnJvbSB0aGUgcmVwbGljYSdzIG9yaWdpbiBzcGFj
ZSB0byB0aGUgdGFyZ2V0IHN1cmZhY2Ugb3JpZ2luIHNwYWNlLgotICAgICAgICAgICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggcmVwbGljYU9yaWdpblRyYW5zZm9ybSA9IGxheWVyLT5yZW5kZXJTdXJm
YWNlKCktPm9yaWdpblRyYW5zZm9ybSgpICogc3VyZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRy
YW5zZm9ybTsKKyAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FPcmln
aW5UcmFuc2Zvcm0gPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5vcmlnaW5UcmFuc2Zvcm0oKSAq
IHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFuc2Zvcm07CiAgICAgICAgICAgICByZW5k
ZXJTdXJmYWNlLT5zZXRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtKHJlcGxpY2FPcmlnaW5UcmFuc2Zv
cm0pOwogCiAgICAgICAgICAgICAvLyBDb21wdXRlIHRoZSByZXBsaWNhJ3MgInNjcmVlblNwYWNl
VHJhbnNmb3JtIiB0aGF0IG1hcHMgZnJvbSB0aGUgcmVwbGljYSdzIG9yaWdpbiBzcGFjZSB0byB0
aGUgc2NyZWVuJ3Mgb3JpZ2luIHNwYWNlLgotICAgICAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtID0gbGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+
c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSAqIHN1cmZhY2VPcmlnaW5Ub1JlcGxpY2FPcmlnaW5UcmFu
c2Zvcm07CisgICAgICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhU2NyZWVu
U3BhY2VUcmFuc2Zvcm0gPSBsYXllci0+cmVuZGVyU3VyZmFjZSgpLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpICogc3VyZmFjZU9yaWdpblRvUmVwbGljYU9yaWdpblRyYW5zZm9ybTsKICAgICAgICAg
ICAgIHJlbmRlclN1cmZhY2UtPnNldFJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybShyZXBsaWNh
U2NyZWVuU3BhY2VUcmFuc2Zvcm0pOwogICAgICAgICB9CiAKQEAgLTcwNywxMyArNzA5LDEzIEBA
IHN0YXRpYyB2b2lkIHdhbGtMYXllcnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0cyhjb25z
dCBMYXllckxpc3QmIHJlbmRlclN1cmZhCiAgICAgfQogfQogCi12b2lkIENDTGF5ZXJUcmVlSG9z
dENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21p
dW0qIGxheWVyLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGll
cmFyY2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBp
bnQgbWF4VGV4dHVyZVNpemUpCit2b2lkIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0qIGxheWVyLCBMYXllckNo
cm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRN
YXRyaXgsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4
LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQgbWF4VGV4dHVy
ZVNpemUpCiB7CiAgICAgV2ViQ29yZTo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmls
aXR5SW50ZXJuYWw8TGF5ZXJDaHJvbWl1bSwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+
LCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0sIHZvaWQ+KGxheWVyLCByb290TGF5ZXIsIHBhcmVudE1h
dHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgMCwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgbGF5
ZXJMaXN0LCAwLCBtYXhUZXh0dXJlU2l6ZSk7CiAgICAgd2Fsa0xheWVyc0FuZENhbGN1bGF0ZVZp
c2libGVMYXllclJlY3RzPExheWVyQ2hyb21pdW0sIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1
bT4gPiwgUmVuZGVyU3VyZmFjZUNocm9taXVtPihyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKIH0K
IAotdm9pZCBDQ0xheWVyVHJlZUhvc3RDb21tb246OmNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5k
VmlzaWJpbGl0eShDQ0xheWVySW1wbCogbGF5ZXIsIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVu
ZGVyU3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgQ0NM
YXllclNvcnRlciogbGF5ZXJTb3J0ZXIsIGludCBtYXhUZXh0dXJlU2l6ZSkKK3ZvaWQgQ0NMYXll
clRyZWVIb3N0Q29tbW9uOjpjYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoQ0NM
YXllckltcGwqIGxheWVyLCBDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgcGFyZW50TWF0cml4LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgZnVsbEhpZXJhcmNoeU1hdHJpeCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIFZlY3RvcjxDQ0xheWVySW1wbCo+JiBsYXllckxpc3QsIENDTGF5ZXJTb3J0
ZXIqIGxheWVyU29ydGVyLCBpbnQgbWF4VGV4dHVyZVNpemUpCiB7CiAgICAgY2FsY3VsYXRlRHJh
d1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5SW50ZXJuYWw8Q0NMYXllckltcGwsIFZlY3RvcjxDQ0xh
eWVySW1wbCo+LCBDQ1JlbmRlclN1cmZhY2UsIENDTGF5ZXJTb3J0ZXI+KGxheWVyLCByb290TGF5
ZXIsIHBhcmVudE1hdHJpeCwgZnVsbEhpZXJhcmNoeU1hdHJpeCwgMCwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCwgbGF5ZXJMaXN0LCBsYXllclNvcnRlciwgbWF4VGV4dHVyZVNpemUpOwogICAgIHdh
bGtMYXllcnNBbmRDYWxjdWxhdGVWaXNpYmxlTGF5ZXJSZWN0czxDQ0xheWVySW1wbCwgVmVjdG9y
PENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZT4ocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oCmluZGV4IDM3NjJmNjRiMTli
MzEzNDk5OGU0MGI0NDc2MzhhMjQ2ZjEyNDhiYmIuLjA1ODVhZmY0ZmI3YzhlZjY0NmJhNjVhNGNl
ZjJjNjVkNTgyZmVlYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5o
CkBAIC0yNyw3ICsyNyw3IEBACiAKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiSW50
U2l6ZS5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCisjaW5jbHVkZSA8cHVi
bGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtMzksMTAgKzM5LDEwIEBAIGNsYXNzIExheWVy
Q2hyb21pdW07CiAKIGNsYXNzIENDTGF5ZXJUcmVlSG9zdENvbW1vbiB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIEludFJlY3QgY2FsY3VsYXRlVmlzaWJsZVJlY3QoY29uc3QgSW50UmVjdCYgdGFyZ2V0
U3VyZmFjZVJlY3QsIGNvbnN0IEludFJlY3QmIGxheWVyQm91bmRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYpOworICAgIHN0YXRpYyBJbnRSZWN0IGNhbGN1bGF0ZVZpc2libGVSZWN0
KGNvbnN0IEludFJlY3QmIHRhcmdldFN1cmZhY2VSZWN0LCBjb25zdCBJbnRSZWN0JiBsYXllckJv
dW5kUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOwogCi0gICAg
c3RhdGljIHZvaWQgY2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hy
b21pdW0qLCBMYXllckNocm9taXVtKiByb290TGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBmdWxsSGllcmFy
Y2h5TWF0cml4LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIFZlY3RvcjxSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gPiYgbGF5ZXJMaXN0LCBpbnQg
bWF4VGV4dHVyZVNpemUpOwotICAgIHN0YXRpYyB2b2lkIGNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1z
QW5kVmlzaWJpbGl0eShDQ0xheWVySW1wbCosIENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBmdWxsSGllcmFyY2h5TWF0cml4LCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIGxheWVyTGlzdCwgQ0NMYXll
clNvcnRlciosIGludCBtYXhUZXh0dXJlU2l6ZSk7CisgICAgc3RhdGljIHZvaWQgY2FsY3VsYXRl
RHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KExheWVyQ2hyb21pdW0qLCBMYXllckNocm9taXVt
KiByb290TGF5ZXIsIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHBhcmVu
dE1hdHJpeCwgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZnVsbEhpZXJh
cmNoeU1hdHJpeCwgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+JiByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0LCBWZWN0b3I8UmVmUHRyPExheWVyQ2hyb21pdW0+ID4mIGxheWVyTGlzdCwgaW50
IG1heFRleHR1cmVTaXplKTsKKyAgICBzdGF0aWMgdm9pZCBjYWxjdWxhdGVEcmF3VHJhbnNmb3Jt
c0FuZFZpc2liaWxpdHkoQ0NMYXllckltcGwqLCBDQ0xheWVySW1wbCogcm9vdExheWVyLCBjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBwYXJlbnRNYXRyaXgsIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGZ1bGxIaWVyYXJjaHlNYXRyaXgsIFZlY3Rv
cjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBWZWN0b3I8Q0NMYXllcklt
cGwqPiYgbGF5ZXJMaXN0LCBDQ0xheWVyU29ydGVyKiwgaW50IG1heFRleHR1cmVTaXplKTsKIAog
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4gc3RhdGljIGJvb2wgcmVuZGVyU3VyZmFj
ZUNvbnRyaWJ1dGVzVG9UYXJnZXQoTGF5ZXJUeXBlKiwgaW50IHRhcmdldFN1cmZhY2VMYXllcklE
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCA5MTMzNmE3
NzY4ZDNkZDYyMTFiMDk4NDg0OWM2MmMyM2E0ZWQ1MzYwLi4wYTQ5ZjhlN2RhNTkwNjJhY2JkYTQ2
YThjNTk0NTQ5Zjk0NjgyNTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBs
LmNwcApAQCAtNDcsNiArNDcsOCBAQAogI2luY2x1ZGUgImNjL0NDVGhyZWFkVGFzay5oIgogI2lu
Y2x1ZGUgPHd0Zi9DdXJyZW50VGltZS5oPgogCit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0
aW9uTWF0cml4OworCiBuYW1lc3BhY2UgewogCiB2b2lkIGRpZFZpc2liaWxpdHlDaGFuZ2UoV2Vi
Q29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbCogaWQsIGJvb2wgdmlzaWJsZSkKQEAgLTIzNCw3ICsy
MzYsNyBAQCBzdGF0aWMgRmxvYXRSZWN0IGRhbWFnZUluU3VyZmFjZVNwYWNlKENDTGF5ZXJJbXBs
KiByZW5kZXJTdXJmYWNlTGF5ZXIsIGNvbnN0IEZsbwogICAgIEZsb2F0UmVjdCBzdXJmYWNlRGFt
YWdlUmVjdDsKICAgICAvLyBGb3Igbm93LCB3ZSBjb25zZXJ2YXRpdmVseSB1c2UgdGhlIHJvb3Qg
ZGFtYWdlIGFzIHRoZSBkYW1hZ2UgZm9yCiAgICAgLy8gYWxsIHN1cmZhY2VzLCBleGNlcHQgcGVy
c3BlY3RpdmUgdHJhbnNmb3Jtcy4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgc2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKS0+
c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZh
Y2UoKS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKICAgICBpZiAoc2NyZWVuU3BhY2VUcmFuc2Zv
cm0uaGFzUGVyc3BlY3RpdmUoKSkgewogICAgICAgICAvLyBQZXJzcGVjdGl2ZSBwcm9qZWN0aW9u
cyBkbyBub3QgcGxheSBuaWNlIHdpdGggbWFwUmVjdCBvZgogICAgICAgICAvLyBpbnZlcnNlIHRy
YW5zZm9ybXMuIEluIHRoaXMgdW5jb21tb24gY2FzZSwgaXRzIHNpbXBsZXIgdG8KQEAgLTI0Myw3
ICsyNDUsNyBAQCBzdGF0aWMgRmxvYXRSZWN0IGRhbWFnZUluU3VyZmFjZVNwYWNlKENDTGF5ZXJJ
bXBsKiByZW5kZXJTdXJmYWNlTGF5ZXIsIGNvbnN0IEZsbwogICAgICAgICBDQ1JlbmRlclN1cmZh
Y2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5ZXItPnJlbmRlclN1cmZhY2UoKTsK
ICAgICAgICAgc3VyZmFjZURhbWFnZVJlY3QgPSByZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgp
OwogICAgIH0gZWxzZSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGludmVyc2VTY3Jl
ZW5TcGFjZVRyYW5zZm9ybSA9IHNjcmVlblNwYWNlVHJhbnNmb3JtLmludmVyc2UoKTsKKyAgICAg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaW52ZXJzZVNjcmVlblNwYWNlVHJhbnNmb3JtID0g
c2NyZWVuU3BhY2VUcmFuc2Zvcm0uaW52ZXJzZSgpOwogICAgICAgICBzdXJmYWNlRGFtYWdlUmVj
dCA9IGludmVyc2VTY3JlZW5TcGFjZVRyYW5zZm9ybS5tYXBSZWN0KHJvb3REYW1hZ2VSZWN0KTsK
ICAgICB9CiAgICAgcmV0dXJuIHN1cmZhY2VEYW1hZ2VSZWN0OwpAQCAtMjY0LDggKzI2Niw4IEBA
IHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyU3VyZmFjZUxheWVyTGlz
dChDQ0xheWVyTGlzdCYgcmVuZGVyU3VyCiAKICAgICB7CiAgICAgICAgIFRSQUNFX0VWRU5UKCJD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjRHJhd0V0YyIsIHRoaXMsIDApOwotICAgICAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZGV2aWNlU2NhbGVUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGlkZW50aXR5TWF0cml4OworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBkZXZp
Y2VTY2FsZVRyYW5zZm9ybTsKICAgICAgICAgZGV2aWNlU2NhbGVUcmFuc2Zvcm0uc2NhbGUobV9z
ZXR0aW5ncy5kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAgIENDTGF5ZXJUcmVlSG9zdENvbW1v
bjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KG1fcm9vdExheWVySW1wbC5n
ZXQoKSwgbV9yb290TGF5ZXJJbXBsLmdldCgpLCBkZXZpY2VTY2FsZVRyYW5zZm9ybSwgaWRlbnRp
dHlNYXRyaXgsIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIG1fcm9vdExheWVySW1wbC0+cmVuZGVy
U3VyZmFjZSgpLT5sYXllckxpc3QoKSwgJm1fbGF5ZXJTb3J0ZXIsIGxheWVyUmVuZGVyZXJDYXBh
YmlsaXRpZXMoKS5tYXhUZXh0dXJlU2l6ZSk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5oCmluZGV4IGY4Yjc2MzE0MDRkN2MyMzgzMTE3YzU4NmFmZGJmYTRjYTBjMzIw
YjAuLjdmMGM3ZmY2NjNjYTNkZjhjY2U5MzFjMjZhMzFkNTFlN2E2MmM3MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKQEAgLTUwLDcgKzUwLDYgQEAgY2xhc3MgQ0NMYXll
clRyZWVIb3N0SW1wbFRpbWVTb3VyY2VBZGFwdGVyOwogY2xhc3MgTGF5ZXJSZW5kZXJlckNocm9t
aXVtOwogY2xhc3MgVGV4dHVyZUFsbG9jYXRvcjsKIHN0cnVjdCBMYXllclJlbmRlcmVyQ2FwYWJp
bGl0aWVzOwotY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIC8vIENDTGF5ZXJUcmVlSG9z
dC0+Q0NQcm94eSBjYWxsYmFjayBpbnRlcmZhY2UuCiBjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTWF0aFV0aWwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKaW5kZXggYTgxMmU4MjQ3MzA4ZDQ3N2U1ZjJj
NDJmMTgzNTFlNzhmZGJmOWRkYy4uODY3NDY5ZGRlMjRmMGNjZTVkNTU5Yzc1ZDliNmUwY2MyZWQx
NzkzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NNYXRoVXRpbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5jcHAKQEAgLTI5LDExICsyOSwxMyBAQAogI2luY2x1
ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJJbnRS
ZWN0LmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KKwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgSG9tb2dlbmVv
dXNDb29yZGluYXRlIHByb2plY3RQb2ludChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwKQorc3RhdGljIEhvbW9nZW5lb3VzQ29vcmRpbmF0
ZSBwcm9qZWN0UG9pbnQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwg
Y29uc3QgRmxvYXRQb2ludCYgcCkKIHsKICAgICAvLyBJbiB0aGlzIGNhc2UsIHRoZSBsYXllciB3
ZSBhcmUgdHJ5aW5nIHRvIHByb2plY3Qgb250byBpcyBwZXJwZW5kaWN1bGFyIHRvIHJheQogICAg
IC8vIChwb2ludCBwIGFuZCB6LWF4aXMgZGlyZWN0aW9uKSB0aGF0IHdlIGFyZSB0cnlpbmcgdG8g
cHJvamVjdC4gVGhpcyBoYXBwZW5zIHdoZW4gdGhlCkBAIC01NSw3ICs1Nyw3IEBAIHN0YXRpYyBI
b21vZ2VuZW91c0Nvb3JkaW5hdGUgcHJvamVjdFBvaW50KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JiB0cmFuc2Zvcm0sCiAgICAgcmV0dXJuIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZShvdXRYLCBv
dXRZLCBvdXRaLCBvdXRXKTsKIH0KIAotc3RhdGljIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSBtYXBQ
b2ludChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBv
aW50JiBwKQorc3RhdGljIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSBtYXBQb2ludChjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwKQogewog
ICAgIGRvdWJsZSB4ID0gcC54KCk7CiAgICAgZG91YmxlIHkgPSBwLnkoKTsKQEAgLTExMywxMiAr
MTE1LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhZGRWZXJ0ZXhUb0NsaXBwZWRRdWFkKGNvbnN0
IEZsb2F0UG9pbnQmIG5ld1ZlcnRleCwgRmxvYXRQb2luCiAgICAgbnVtVmVydGljZXNJbkNsaXBw
ZWRRdWFkKys7CiB9CiAKLUludFJlY3QgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkK
K0ludFJlY3QgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgc3JjUmVjdCkKIHsKICAgICByZXR1
cm4gZW5jbG9zaW5nSW50UmVjdChtYXBDbGlwcGVkUmVjdCh0cmFuc2Zvcm0sIEZsb2F0UmVjdChz
cmNSZWN0KSkpOwogfQogCi1GbG9hdFJlY3QgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QoY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBzcmNS
ZWN0KQorRmxvYXRSZWN0IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVjdCYgc3JjUmVjdCkKIHsK
ICAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHlPclRyYW5zbGF0aW9uKCkpIHsKICAgICAgICAg
RmxvYXRSZWN0IG1hcHBlZFJlY3Qoc3JjUmVjdCk7CkBAIC0xMzYsNyArMTM4LDcgQEAgRmxvYXRS
ZWN0IENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnMKICAgICByZXR1cm4gY29tcHV0ZUVuY2xvc2luZ0NsaXBwZWRSZWN0
KGgxLCBoMiwgaDMsIGg0KTsKIH0KIAotRmxvYXRSZWN0IENDTWF0aFV0aWw6OnByb2plY3RDbGlw
cGVkUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9h
dFJlY3QmIHNyY1JlY3QpCitGbG9hdFJlY3QgQ0NNYXRoVXRpbDo6cHJvamVjdENsaXBwZWRSZWN0
KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UmVj
dCYgc3JjUmVjdCkKIHsKICAgICAvLyBQZXJmb3JtIHRoZSBwcm9qZWN0aW9uLCBidXQgcmV0YWlu
IHRoZSByZXN1bHQgaW4gaG9tb2dlbmVvdXMgY29vcmRpbmF0ZXMuCiAgICAgRmxvYXRRdWFkIHEg
PSBGbG9hdFF1YWQoRmxvYXRSZWN0KHNyY1JlY3QpKTsKQEAgLTE0OCw3ICsxNTAsNyBAQCBGbG9h
dFJlY3QgQ0NNYXRoVXRpbDo6cHJvamVjdENsaXBwZWRSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0sCiAgICAgcmV0dXJuIGNvbXB1dGVFbmNsb3NpbmdDbGlwcGVkUmVj
dChoMSwgaDIsIGgzLCBoNCk7CiB9CiAKLXZvaWQgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFF1YWQo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBz
cmNRdWFkLCBGbG9hdFBvaW50IGNsaXBwZWRRdWFkWzhdLCBpbnQmIG51bVZlcnRpY2VzSW5DbGlw
cGVkUXVhZCkKK3ZvaWQgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFF1YWQoY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRRdWFkJiBzcmNRdWFkLCBGbG9h
dFBvaW50IGNsaXBwZWRRdWFkWzhdLCBpbnQmIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCkKIHsK
ICAgICBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgaDEgPSBtYXBQb2ludCh0cmFuc2Zvcm0sIHNyY1F1
YWQucDEoKSk7CiAgICAgSG9tb2dlbmVvdXNDb29yZGluYXRlIGgyID0gbWFwUG9pbnQodHJhbnNm
b3JtLCBzcmNRdWFkLnAyKCkpOwpAQCAtMjUyLDcgKzI1NCw3IEBAIEZsb2F0UmVjdCBDQ01hdGhV
dGlsOjpjb21wdXRlRW5jbG9zaW5nQ2xpcHBlZFJlY3QoY29uc3QgSG9tb2dlbmVvdXNDb29yZGlu
YXRlJiBoCiAgICAgcmV0dXJuIEZsb2F0UmVjdChGbG9hdFBvaW50KHhtaW4sIHltaW4pLCBGbG9h
dFNpemUoeG1heCAtIHhtaW4sIHltYXggLSB5bWluKSk7CiB9CiAKLUZsb2F0UXVhZCBDQ01hdGhV
dGlsOjptYXBRdWFkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UXVhZCYgcSwgYm9vbCYgY2xpcHBlZCkKK0Zsb2F0UXVhZCBDQ01hdGhVdGlsOjptYXBR
dWFkKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0
UXVhZCYgcSwgYm9vbCYgY2xpcHBlZCkKIHsKICAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHlP
clRyYW5zbGF0aW9uKCkpIHsKICAgICAgICAgRmxvYXRRdWFkIG1hcHBlZFF1YWQocSk7CkBAIC0y
NzIsNyArMjc0LDcgQEAgRmxvYXRRdWFkIENDTWF0aFV0aWw6Om1hcFF1YWQoY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXQKICAgICByZXR1cm4gRmxvYXRR
dWFkKGgxLmNhcnRlc2lhblBvaW50MmQoKSwgaDIuY2FydGVzaWFuUG9pbnQyZCgpLCBoMy5jYXJ0
ZXNpYW5Qb2ludDJkKCksIGg0LmNhcnRlc2lhblBvaW50MmQoKSk7CiB9CiAKLUZsb2F0UXVhZCBD
Q01hdGhVdGlsOjpwcm9qZWN0UXVhZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBGbG9hdFF1YWQmIHEsIGJvb2wmIGNsaXBwZWQpCitGbG9hdFF1YWQgQ0NNYXRo
VXRpbDo6cHJvamVjdFF1YWQoY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRRdWFkJiBxLCBib29sJiBjbGlwcGVkKQogewogICAgIEZsb2F0UXVhZCBw
cm9qZWN0ZWRRdWFkOwogICAgIGJvb2wgY2xpcHBlZFBvaW50OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NNYXRoVXRpbC5oCmlu
ZGV4IDZhZmI0MzYwZTQ3MjNlODgzZmU3NGI0ZTkyN2I2MDE1YTk5NzhkYmQuLjYzY2EwMDMxMjQw
ZDBiYmNmZmQyZmEwZDU2OTEwYzI4MDc2NjgyNTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTWF0aFV0aWwuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ01hdGhVdGlsLmgKQEAgLTI3
LDEzICsyNywxNiBAQAogCiAjaW5jbHVkZSAiRmxvYXRQb2ludC5oIgogCituYW1lc3BhY2UgV2Vi
S2l0IHsKK2NsYXNzIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4OworfQorCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBGbG9hdFBvaW50OwogY2xhc3MgRmxvYXRS
ZWN0OwogY2xhc3MgRmxvYXRRdWFkOwotY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIHN0
cnVjdCBIb21vZ2VuZW91c0Nvb3JkaW5hdGUgewogICAgIEhvbW9nZW5lb3VzQ29vcmRpbmF0ZShk
b3VibGUgbmV3WCwgZG91YmxlIG5ld1ksIGRvdWJsZSBuZXdaLCBkb3VibGUgbmV3VykKQEAgLTcx
LDcgKzc0LDcgQEAgc3RydWN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSB7CiBjbGFzcyBDQ01hdGhV
dGlsIHsKIHB1YmxpYzoKIAotICAgIC8vIEJhY2tncm91bmQ6IFRyYW5zZm9ybWF0aW9uTWF0cml4
IGNvZGUgaW4gV2ViQ29yZSBkb2VzIG5vdCBkbyB0aGUgcmlnaHQgdGhpbmcgaW4KKyAgICAvLyBC
YWNrZ3JvdW5kOiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb2RlIGluIFdlYkNvcmUgZG9lcyBu
b3QgZG8gdGhlIHJpZ2h0IHRoaW5nIGluCiAgICAgLy8gbWFwUmVjdCAvIG1hcFF1YWQgLyBwcm9q
ZWN0UXVhZCB3aGVuIHRoZXJlIGlzIGEgcGVyc3BlY3RpdmUgcHJvamVjdGlvbiB0aGF0IGNhdXNl
cwogICAgIC8vIG9uZSBvZiB0aGUgdHJhbnNmb3JtZWQgdmVydGljZXMgdG8gZ28gdG8gdyA8IDAu
IEluIHRob3NlIGNhc2VzLCBpdCBpcyBuZWNlc3NhcnkgdG8KICAgICAvLyBwZXJmb3JtIGNsaXBw
aW5nIGluIGhvbW9nZW5lb3VzIGNvb3JkaW5hdGVzLCBhZnRlciBhcHBseWluZyB0aGUgdHJhbnNm
b3JtLCBiZWZvcmUKQEAgLTc5LDIzICs4MiwyMyBAQCBwdWJsaWM6CiAgICAgLy8KICAgICAvLyBU
aGVzZSBmdW5jdGlvbnMgcmV0dXJuIHRoZSBheGlzLWFsaWduZWQgcmVjdCB0aGF0IGVuY2xvc2Vz
IHRoZSBjb3JyZWN0bHkgY2xpcHBlZCwKICAgICAvLyB0cmFuc2Zvcm1lZCBwb2x5Z29uLgotICAg
IHN0YXRpYyBJbnRSZWN0IG1hcENsaXBwZWRSZWN0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgY29uc3QgSW50UmVjdCYpOwotICAgIHN0YXRpYyBGbG9hdFJlY3QgbWFwQ2xpcHBlZFJlY3Qo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICBzdGF0
aWMgRmxvYXRSZWN0IHByb2plY3RDbGlwcGVkUmVjdChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGNvbnN0IEZsb2F0UmVjdCYpOworICAgIHN0YXRpYyBJbnRSZWN0IG1hcENsaXBwZWRSZWN0
KGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBJbnRSZWN0Jik7
CisgICAgc3RhdGljIEZsb2F0UmVjdCBtYXBDbGlwcGVkUmVjdChjb25zdCBXZWJLaXQ6OldlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgc3RhdGljIEZsb2F0
UmVjdCBwcm9qZWN0Q2xpcHBlZFJlY3QoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGNvbnN0IEZsb2F0UmVjdCYpOwogCiAgICAgLy8gUmV0dXJucyBhbiBhcnJheSBvZiB2
ZXJ0aWNlcyB0aGF0IHJlcHJlc2VudCB0aGUgY2xpcHBlZCBwb2x5Z29uLiBBZnRlciByZXR1cm5p
bmcsIGluZGV4ZXMgZnJvbQogICAgIC8vIDAgdG8gbnVtVmVydGljZXNJbkNsaXBwZWRRdWFkIGFy
ZSB2YWxpZCBpbiB0aGUgY2xpcHBlZFF1YWQgYXJyYXkuIE5vdGUgdGhhdAogICAgIC8vIG51bVZl
cnRpY2VzSW5DbGlwcGVkUXVhZCBtYXkgYmUgemVybywgd2hpY2ggbWVhbnMgdGhlIGVudGlyZSBx
dWFkIHdhcyBjbGlwcGVkLCBhbmQKICAgICAvLyBub25lIG9mIHRoZSB2ZXJ0aWNlcyBpbiB0aGUg
YXJyYXkgYXJlIHZhbGlkLgotICAgIHN0YXRpYyB2b2lkIG1hcENsaXBwZWRRdWFkKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRRdWFkJiBzcmNRdWFkLCBGbG9hdFBvaW50
IGNsaXBwZWRRdWFkWzhdLCBpbnQmIG51bVZlcnRpY2VzSW5DbGlwcGVkUXVhZCk7CisgICAgc3Rh
dGljIHZvaWQgbWFwQ2xpcHBlZFF1YWQoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGNvbnN0IEZsb2F0UXVhZCYgc3JjUXVhZCwgRmxvYXRQb2ludCBjbGlwcGVkUXVhZFs4
XSwgaW50JiBudW1WZXJ0aWNlc0luQ2xpcHBlZFF1YWQpOwogCiAgICAgc3RhdGljIEZsb2F0UmVj
dCBjb21wdXRlRW5jbG9zaW5nUmVjdE9mVmVydGljZXMoRmxvYXRQb2ludCB2ZXJ0aWNlc1tdLCBp
bnQgbnVtVmVydGljZXMpOwogICAgIHN0YXRpYyBGbG9hdFJlY3QgY29tcHV0ZUVuY2xvc2luZ0Ns
aXBwZWRSZWN0KGNvbnN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYgaDEsIGNvbnN0IEhvbW9nZW5l
b3VzQ29vcmRpbmF0ZSYgaDIsIGNvbnN0IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYgaDMsIGNvbnN0
IEhvbW9nZW5lb3VzQ29vcmRpbmF0ZSYgaDQpOwogCiAgICAgLy8gTk9URTogVGhlc2UgZnVuY3Rp
b25zIGRvIG5vdCBkbyBjb3JyZWN0IGNsaXBwaW5nIGFnYWluc3QgdyA9IDAgcGxhbmUsIGJ1dCB0
aGV5CiAgICAgLy8gY29ycmVjdGx5IGRldGVjdCB0aGUgY2xpcHBlZCBjb25kaXRpb24gdmlhIHRo
ZSBib29sZWFuIGNsaXBwZWQuCi0gICAgc3RhdGljIEZsb2F0UXVhZCBtYXBRdWFkKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRRdWFkJiwgYm9vbCYgY2xpcHBlZCk7Ci0g
ICAgc3RhdGljIEZsb2F0UXVhZCBwcm9qZWN0UXVhZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGNvbnN0IEZsb2F0UXVhZCYsIGJvb2wmIGNsaXBwZWQpOworICAgIHN0YXRpYyBGbG9hdFF1
YWQgbWFwUXVhZChjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
RmxvYXRRdWFkJiwgYm9vbCYgY2xpcHBlZCk7CisgICAgc3RhdGljIEZsb2F0UXVhZCBwcm9qZWN0
UXVhZChjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRR
dWFkJiwgYm9vbCYgY2xpcHBlZCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcAppbmRleCBjN2IxZjIwNDNhYjhlNTlmMTNi
ZGNkMDllNjE5MDVkNDNkMGI2ZTY5Li42OGNjZGM5YzAxODIwNmM1OWNlZmRmNzk3MzJjNGQ5ZjEy
MDczMTY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTM2LDYg
KzM2LDcgQEAKICNpbmNsdWRlIDxhbGdvcml0aG0+CiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7Cit1
c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKQEAgLTEzMSw3ICsxMzIsNyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5
ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OmZpbmlzaGVkVGFyZ2V0UmVuZGVyUwogfQogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXN0YXRpYyBpbmxpbmUgUmVnaW9u
IHRyYW5zZm9ybVN1cmZhY2VPcGFxdWVSZWdpb24oY29uc3QgUmVuZGVyU3VyZmFjZVR5cGUqIHN1
cmZhY2UsIGNvbnN0IFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtKQorc3RhdGljIGlubGluZSBSZWdpb24gdHJhbnNmb3JtU3VyZmFjZU9wYXF1ZVJl
Z2lvbihjb25zdCBSZW5kZXJTdXJmYWNlVHlwZSogc3VyZmFjZSwgY29uc3QgUmVnaW9uJiByZWdp
b24sIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7CiAgICAgLy8g
VmVyaWZ5IHRoYXQgcmVjdHMgd2l0aGluIHRoZSB8c3VyZmFjZXwgd2lsbCByZW1haW4gcmVjdHMg
aW4gaXRzIHRhcmdldCBzdXJmYWNlIGFmdGVyIGFwcGx5aW5nIHx0cmFuc2Zvcm18LiBJZiB0aGlz
IGlzIHRydWUsIHRoZW4KICAgICAvLyBhcHBseSB8dHJhbnNmb3JtfCB0byBlYWNoIHJlY3Qgd2l0
aGluIHxyZWdpb258IGluIG9yZGVyIHRvIHRyYW5zZm9ybSB0aGUgZW50aXJlIFJlZ2lvbi4KQEAg
LTE5NCw3ICsxOTUsNyBAQCBzdGF0aWMgaW5saW5lIHZvaWQgcmVkdWNlT2NjbHVzaW9uKGNvbnN0
IEludFJlY3QmIGFmZmVjdGVkQXJlYSwgY29uc3QgSW50UmVjdCYgZQogfQogCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLXN0YXRpYyB2b2lkIHJlZHVjZU9jY2x1c2lvbkJl
bG93U3VyZmFjZShSZW5kZXJTdXJmYWNlVHlwZSogc3VyZmFjZSwgY29uc3QgSW50UmVjdCYgc3Vy
ZmFjZVJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdXJmYWNlVHJhbnNmb3JtLCBS
ZW5kZXJTdXJmYWNlVHlwZSogc3VyZmFjZVRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblRhcmdl
dCwgUmVnaW9uJiBvY2NsdXNpb25JblNjcmVlbikKK3N0YXRpYyB2b2lkIHJlZHVjZU9jY2x1c2lv
bkJlbG93U3VyZmFjZShSZW5kZXJTdXJmYWNlVHlwZSogc3VyZmFjZSwgY29uc3QgSW50UmVjdCYg
c3VyZmFjZVJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdXJmYWNlVHJhbnNm
b3JtLCBSZW5kZXJTdXJmYWNlVHlwZSogc3VyZmFjZVRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25J
blRhcmdldCwgUmVnaW9uJiBvY2NsdXNpb25JblNjcmVlbikKIHsKICAgICBpZiAoc3VyZmFjZVJl
Y3QuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0yNjAsMTMgKzI2MSwxMyBAQCB2b2lk
IENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Omxl
YXZlVG9UYXJnZXRSZW5kZXJTdQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+Ci1z
dGF0aWMgaW5saW5lIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJh
bnNmb3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIpCitzdGF0aWMgaW5saW5lIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHlw
ZSogbGF5ZXIpCiB7CiAgICAgQVNTRVJUKGxheWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5
ZXIpKTsKICAgICBJbnRTaXplIGJvdW5kc0luTGF5ZXJTcGFjZSA9IGxheWVyLT5ib3VuZHMoKTsK
ICAgICBJbnRTaXplIGJvdW5kc0luQ29udGVudFNwYWNlID0gbGF5ZXItPmNvbnRlbnRCb3VuZHMo
KTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9IGxheWVyLT5zY3JlZW5T
cGFjZVRyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSA9
IGxheWVyLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpOwogCiAgICAgaWYgKGJvdW5kc0luQ29udGVu
dFNwYWNlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKQEAgLTI3OSwxMyAr
MjgwLDEzIEBAIHN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRvU2Ny
ZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgTGF5ZXJUeXBlCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1l
IExheWVyVHlwZT4KLXN0YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY29udGVudFRv
VGFyZ2V0U3VyZmFjZVRyYW5zZm9ybShjb25zdCBMYXllclR5cGUqIGxheWVyKQorc3RhdGljIGlu
bGluZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNm
b3JtKGNvbnN0IExheWVyVHlwZSogbGF5ZXIpCiB7CiAgICAgQVNTRVJUKGxheWVyVHJhbnNmb3Jt
c1RvVGFyZ2V0S25vd24obGF5ZXIpKTsKICAgICBJbnRTaXplIGJvdW5kc0luTGF5ZXJTcGFjZSA9
IGxheWVyLT5ib3VuZHMoKTsKICAgICBJbnRTaXplIGJvdW5kc0luQ29udGVudFNwYWNlID0gbGF5
ZXItPmNvbnRlbnRCb3VuZHMoKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bSA9IGxheWVyLT5kcmF3VHJhbnNmb3JtKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtID0gbGF5ZXItPmRyYXdUcmFuc2Zvcm0oKTsKIAogICAgIGlmIChib3VuZHNJbkNv
bnRlbnRTcGFjZS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CkBAIC0zMDIs
NyArMzAzLDcgQEAgc3RhdGljIGlubGluZSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9U
YXJnZXRTdXJmYWNlVHJhbnNmb3JtKGNvbnN0IExheWVyVHkKIAogLy8gRklYTUU6IFJlbW92ZSB1
c2VQYWludFRyYWNraW5nIHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxp
bmcuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+Ci1zdGF0aWMgaW5saW5lIHZvaWQgYWRk
T2NjbHVzaW9uQmVoaW5kTGF5ZXIoUmVnaW9uJiByZWdpb24sIGNvbnN0IExheWVyVHlwZSogbGF5
ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlZ2lvbiYg
b3BhcXVlQ29udGVudHMsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBjb25zdCBJbnRTaXpl
JiBtaW5pbXVtVHJhY2tpbmdTaXplKQorc3RhdGljIGlubGluZSB2b2lkIGFkZE9jY2x1c2lvbkJl
aGluZExheWVyKFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZWdpb24mIG9wYXF1ZUNv
bnRlbnRzLCBjb25zdCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgY29uc3QgSW50U2l6ZSYgbWluaW11
bVRyYWNraW5nU2l6ZSkKIHsKICAgICBBU1NFUlQobGF5ZXItPnZpc2libGVMYXllclJlY3QoKS5j
b250YWlucyhvcGFxdWVDb250ZW50cy5ib3VuZHMoKSkpOwogCkBAIC0zNDUsNyArMzQ2LDcgQEAg
dm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+
OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICAvLyByZW1haW4gcmVjdGlsaW5lYXIsIHRoZW4g
d2UgZG9uJ3QgYWRkIGFueSBvY2NsdXNpb24gaW4gc2NyZWVuIHNwYWNlLgogCiAgICAgaWYgKGxh
eWVyVHJhbnNmb3Jtc1RvU2NyZWVuS25vd24obGF5ZXIpKSB7Ci0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IHRhcmdldFRvU2NyZWVuVHJhbnNmb3JtID0gbV9zdGFjay5sYXN0KCkuc3VyZmFj
ZS0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggdGFyZ2V0VG9TY3JlZW5UcmFuc2Zvcm0gPSBtX3N0YWNrLmxhc3QoKS5zdXJmYWNlLT5zY3Jl
ZW5TcGFjZVRyYW5zZm9ybSgpOwogICAgICAgICBib29sIGNsaXBwZWQ7CiAgICAgICAgIEZsb2F0
UXVhZCBzY2lzc29ySW5TY3JlZW5RdWFkID0gQ0NNYXRoVXRpbDo6bWFwUXVhZCh0YXJnZXRUb1Nj
cmVlblRyYW5zZm9ybSwgRmxvYXRRdWFkKEZsb2F0UmVjdChzY2lzc29ySW5UYXJnZXQpKSwgY2xp
cHBlZCk7CiAgICAgICAgIC8vIEZJWE1FOiBGaW5kIGEgcmVjdCBpbnRlcmlvciB0byB0aGUgdHJh
bnNmb3JtZWQgc2Npc3NvciBxdWFkLgpAQCAtMzU2LDcgKzM1Nyw3IEBAIHZvaWQgQ0NPY2NsdXNp
b25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVk
QmVoaW5kTGF5CiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgdGVzdENvbnRlbnRSZWN0
T2NjbHVkZWQoY29uc3QgSW50UmVjdCYgY29udGVudFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBjb250ZW50U3BhY2VUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0
LCBjb25zdCBSZWdpb24mIG9jY2x1c2lvbikKK3N0YXRpYyBpbmxpbmUgYm9vbCB0ZXN0Q29udGVu
dFJlY3RPY2NsdWRlZChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3QgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSwgY29uc3QgSW50UmVjdCYgc2Np
c3NvclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVzaW9uKQogewogICAgIEZsb2F0UmVjdCB0cmFu
c2Zvcm1lZFJlY3QgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChjb250ZW50U3BhY2VUcmFu
c2Zvcm0sIEZsb2F0UmVjdChjb250ZW50UmVjdCkpOwogICAgIC8vIFRha2UgdGhlIGVuY2xvc2lu
Z0ludFJlY3QsIGFzIHdlIHdhbnQgdG8gaW5jbHVkZSBwYXJ0aWFsIHBpeGVscyBpbiB0aGUgdGVz
dC4KQEAgLTM5MSw3ICszOTIsNyBAQCBzdGF0aWMgaW5saW5lIEludFJlY3QgcmVjdFN1YnRyYWN0
UmVnaW9uKGNvbnN0IEludFJlY3QmIHJlY3QsIGNvbnN0IFJlZ2lvbiYgcmVnaQogICAgIHJldHVy
biByZWN0UmVnaW9uLmJvdW5kcygpOwogfQogCi1zdGF0aWMgaW5saW5lIEludFJlY3QgY29tcHV0
ZVVub2NjbHVkZWRDb250ZW50UmVjdChjb25zdCBJbnRSZWN0JiBjb250ZW50UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIGNvbnRlbnRTcGFjZVRyYW5zZm9ybSwgY29uc3QgSW50UmVj
dCYgc2Npc3NvclJlY3QsIGNvbnN0IFJlZ2lvbiYgb2NjbHVzaW9uKQorc3RhdGljIGlubGluZSBJ
bnRSZWN0IGNvbXB1dGVVbm9jY2x1ZGVkQ29udGVudFJlY3QoY29uc3QgSW50UmVjdCYgY29udGVu
dFJlY3QsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBjb250ZW50U3BhY2VUcmFuc2Zv
cm0sIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBjb25zdCBSZWdpb24mIG9jY2x1c2lvbikK
IHsKICAgICBpZiAoIWNvbnRlbnRTcGFjZVRyYW5zZm9ybS5pc0ludmVydGlibGUoKSkKICAgICAg
ICAgcmV0dXJuIGNvbnRlbnRSZWN0OwpAQCAtNDU1LDggKzQ1Niw4IEBAIEludFJlY3QgQ0NPY2Ns
dXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6dW5vY2NsdWRl
ZENvbnRyaWJ1CiAgICAgLy8gZm91bmQganVzdCBiZWxvdyB0aGUgdG9wIG9mIHRoZSBzdGFjayAo
aWYgaXQgZXhpc3RzKS4KICAgICBib29sIGhhc09jY2x1c2lvbiA9IG1fc3RhY2suc2l6ZSgpID4g
MTsKIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1NjcmVlbiA9
IGZvclJlcGxpY2EgPyBzdXJmYWNlLT5yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSA6IHN1
cmZhY2UtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCk7Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0ID0gZm9yUmVwbGljYSA/IHN1cmZhY2UtPnJlcGxpY2FP
cmlnaW5UcmFuc2Zvcm0oKSA6IHN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpOworICAgIGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1NjcmVlbiA9IGZvclJlcGxpY2Eg
PyBzdXJmYWNlLT5yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSA6IHN1cmZhY2UtPnNjcmVl
blNwYWNlVHJhbnNmb3JtKCk7CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybVRvVGFyZ2V0ID0gZm9yUmVwbGljYSA/IHN1cmZhY2UtPnJlcGxpY2FPcmlnaW5UcmFu
c2Zvcm0oKSA6IHN1cmZhY2UtPm9yaWdpblRyYW5zZm9ybSgpOwogCiAgICAgSW50UmVjdCB1bm9j
Y2x1ZGVkSW5TY3JlZW4gPSBjb250ZW50UmVjdDsKICAgICBpZiAoc3VyZmFjZVRyYW5zZm9ybXNU
b1NjcmVlbktub3duKHN1cmZhY2UpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5o
CmluZGV4IDIzMjg3NDUyM2RhOTgzNThiNTc0OGRhMTNmMjA5YTJkNDZlNTUwZDQuLjEyODAxZmZi
ZTM5NzM2YmMxNjliZTZlNjUxODY2YjhmMjA1MzViMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVz
aW9uVHJhY2tlci5oCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
ICNpbmNsdWRlICJSZWdpb24uaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgog
I2luY2x1ZGUgImNjL0NDTGF5ZXJJdGVyYXRvci5oIgogI2luY2x1ZGUgImNjL0NDT3ZlcmRyYXdN
ZXRyaWNzLmgiCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT3ZlcmRyYXdNZXRyaWNzLmNwcAppbmRleCAzYjAx
OTNlYzRhOTQ3MjU3YTUxOTUyNjVmNDZhMTRjMmRkZjc5OGIxLi43YjU3Yzg5YjEyMjEwZDFlNjc2
NmU0N2M1OGZjNmU5YjU0NmU3MzE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01ldHJpY3Mu
Y3BwCkBAIC0zMSwxMCArMzEsMTIgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRl
ICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgotI2luY2x1ZGUgIlRyYW5zZm9y
bWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIgogI2luY2x1ZGUgPHB1YmxpYy9QbGF0Zm9ybS5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgorCit1c2luZyBX
ZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
QEAgLTc4LDcgKzgwLDcgQEAgdm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkQ3VsbFRpbGVGb3JV
cGxvYWQoKQogICAgICAgICArK21fdGlsZXNDdWxsZWRGb3JVcGxvYWQ7CiB9CiAKLXZvaWQgQ0NP
dmVyZHJhd01ldHJpY3M6OmRpZFVwbG9hZChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJh
bnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIHVwbG9hZFJlY3QsIGNvbnN0IEludFJlY3Qm
IG9wYXF1ZVJlY3QpCit2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRVcGxvYWQoY29uc3QgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiB1
cGxvYWRSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KQogewogICAgIGlmICghbV9yZWNv
cmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAgLTkwLDcgKzkyLDcgQEAgdm9p
ZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkVXBsb2FkKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm1Ub1RhcmdldCwKICAgICBtX3BpeGVsc1VwbG9hZGVkVHJhbnNsdWNlbnQgKz0g
dXBsb2FkQXJlYSAtIHVwbG9hZE9wYXF1ZUFyZWE7CiB9CiAKLXZvaWQgQ0NPdmVyZHJhd01ldHJp
Y3M6OmRpZEN1bGxGb3JEcmF3aW5nKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgYmVmb3JlQ3VsbFJlY3QsIGNvbnN0IEludFJlY3Qm
IGFmdGVyQ3VsbFJlY3QpCit2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2lu
Zyhjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0
IEludFJlY3QmIGJlZm9yZUN1bGxSZWN0LCBjb25zdCBJbnRSZWN0JiBhZnRlckN1bGxSZWN0KQog
ewogICAgIGlmICghbV9yZWNvcmRNZXRyaWNzRm9yRnJhbWUpCiAgICAgICAgIHJldHVybjsKQEAg
LTEwMSw3ICsxMDMsNyBAQCB2b2lkIENDT3ZlcmRyYXdNZXRyaWNzOjpkaWRDdWxsRm9yRHJhd2lu
Zyhjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVAogICAgIG1fcGl4ZWxzQ3Vs
bGVkRm9yRHJhd2luZyArPSBiZWZvcmVDdWxsQXJlYSAtIGFmdGVyQ3VsbEFyZWE7CiB9CiAKLXZv
aWQgQ0NPdmVyZHJhd01ldHJpY3M6OmRpZERyYXcoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBhZnRlckN1bGxSZWN0LCBjb25zdCBJ
bnRSZWN0JiBvcGFxdWVSZWN0KQordm9pZCBDQ092ZXJkcmF3TWV0cmljczo6ZGlkRHJhdyhjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJl
Y3QmIGFmdGVyQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpCiB7CiAgICAgaWYg
KCFtX3JlY29yZE1ldHJpY3NGb3JGcmFtZSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVyZHJhd01l
dHJpY3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
T3ZlcmRyYXdNZXRyaWNzLmgKaW5kZXggNTE1NmMzYzM5YjMzNGUzMDk2ODE2Y2YyMmY3MmUxNDM0
YWM2YTkwYi4uNzE1ZjVlMTUxYmJhZGRhMTc5NzZjN2UzOWZlMzcxMzc3YmRmOGUzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPdmVy
ZHJhd01ldHJpY3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ092ZXJkcmF3TWV0cmljcy5oCkBAIC0yNyw5ICsyNywxMiBAQAogCiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KIAorbmFtZXNwYWNlIFdlYktpdCB7CitjbGFzcyBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeDsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSW50UmVj
dDsKLWNsYXNzIFRyYW5zZm9ybWF0aW9uTWF0cml4OwogY2xhc3MgQ0NMYXllclRyZWVIb3N0Owog
Y2xhc3MgQ0NMYXllclRyZWVIb3N0SW1wbDsKIApAQCAtNDUsMTQgKzQ4LDE0IEBAIHB1YmxpYzoK
ICAgICAvLyBSZWNvcmRzIHRoYXQgYW4gaW52YWxpZCB0aWxlIHdhcyBjdWxsZWQgYW5kIGRpZCBu
b3QgbmVlZCB0byBiZSBwYWludGVkL3VwbG9hZGVkLCBhbmQgZGlkIG5vdCBjb250cmlidXRlIHRv
IG90aGVyIHRpbGVzIG5lZWRpbmcgdG8gYmUgcGFpbnRlZC4KICAgICB2b2lkIGRpZEN1bGxUaWxl
Rm9yVXBsb2FkKCk7CiAgICAgLy8gUmVjb3JkcyBwaXhlbHMgdGhhdCB3ZXJlIHVwbG9hZGVkIHRv
IHRleHR1cmUgbWVtb3J5LgotICAgIHZvaWQgZGlkVXBsb2FkKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVjdCYgdXBsb2FkUmVjdCwgY29u
c3QgSW50UmVjdCYgb3BhcXVlUmVjdCk7CisgICAgdm9pZCBkaWRVcGxvYWQoY29uc3QgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtVG9UYXJnZXQsIGNvbnN0IEludFJl
Y3QmIHVwbG9hZFJlY3QsIGNvbnN0IEludFJlY3QmIG9wYXF1ZVJlY3QpOwogCiAgICAgLy8gVGhl
c2UgbWV0aG9kcyBhcmUgdXNlZCBmb3Igc2F2aW5nIG1ldHJpY3MgZHVyaW5nIGRyYXcuCiAKICAg
ICAvLyBSZWNvcmQgcGl4ZWxzIHRoYXQgd2VyZSBub3QgZHJhd24gdG8gc2NyZWVuLgotICAgIHZv
aWQgZGlkQ3VsbEZvckRyYXdpbmcoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bVRvVGFyZ2V0LCBjb25zdCBJbnRSZWN0JiBiZWZvcmVDdWxsUmVjdCwgY29uc3QgSW50UmVjdCYg
YWZ0ZXJDdWxsUmVjdCk7CisgICAgdm9pZCBkaWRDdWxsRm9yRHJhd2luZyhjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm1Ub1RhcmdldCwgY29uc3QgSW50UmVj
dCYgYmVmb3JlQ3VsbFJlY3QsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QpOwogICAgIC8v
IFJlY29yZCBwaXhlbHMgdGhhdCB3ZXJlIGRyYXduIHRvIHNjcmVlbi4KLSAgICB2b2lkIGRpZERy
YXcoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybVRvVGFyZ2V0LCBjb25zdCBJ
bnRSZWN0JiBhZnRlckN1bGxSZWN0LCBjb25zdCBJbnRSZWN0JiBvcGFxdWVSZWN0KTsKKyAgICB2
b2lkIGRpZERyYXcoY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtVG9UYXJnZXQsIGNvbnN0IEludFJlY3QmIGFmdGVyQ3VsbFJlY3QsIGNvbnN0IEludFJlY3Qm
IG9wYXF1ZVJlY3QpOwogCiAgICAgdm9pZCByZWNvcmRNZXRyaWNzKGNvbnN0IENDTGF5ZXJUcmVl
SG9zdCopIGNvbnN0OwogICAgIHZvaWQgcmVjb3JkTWV0cmljcyhjb25zdCBDQ0xheWVyVHJlZUhv
c3RJbXBsKikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NRdWFkQ3VsbGVyLmNwcAppbmRleCBlNWI0NWU5MTMx
MWM0MmY2MTg2MTc0NjA5NmQ3ZWM5ODViMmIyNzJhLi42NmVlZjM5ZmNhNzgwZGVjZGY2NDczYWZh
YjRkODBhMDNmYzhjN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1F1YWRDdWxsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUXVhZEN1bGxlci5jcHAKQEAgLTMwLDEyICsz
MCwxMiBAQAogI2luY2x1ZGUgImNjL0NDUXVhZEN1bGxlci5oIgogCiAjaW5jbHVkZSAiUmVnaW9u
LmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJjYy9DQ0Rl
YnVnQm9yZGVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2luY2x1
ZGUgImNjL0NDT3ZlcmRyYXdNZXRyaWNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgi
CiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKKyNpbmNsdWRlIDxwdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDUmVuZGVyUGFzcy5jcHAKaW5kZXggMzUxODY2MDdmNTVlNTRkMzA2OWUwNGY4Yzdi
YWQ2Nzg0YTEwOGFjZi4uZmQ4OTk5MGM3MTk4MTYwNjc2YTc2ZjViZWQyMTk2ZmY3Yjk2ZWNjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJQYXNzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1JlbmRlclBhc3MuY3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAi
Y2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVh
ZC5oIgogCit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OworCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIFBhc3NPd25QdHI8Q0NSZW5kZXJQYXNzPiBDQ1JlbmRlclBhc3M6OmNy
ZWF0ZShDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFN1cmZhY2UpCkBAIC04OSw3ICs5MSw3IEBAIHZv
aWQgQ0NSZW5kZXJQYXNzOjphcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihDQ0xheWVySW1wbCogcm9v
dExheWVyLCBjb25zdCBDb2xvciYKICAgICAgICAgcmV0dXJuOwogCiAgICAgT3duUHRyPENDU2hh
cmVkUXVhZFN0YXRlPiBzaGFyZWRRdWFkU3RhdGUgPSByb290TGF5ZXItPmNyZWF0ZVNoYXJlZFF1
YWRTdGF0ZSgpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybVRvTGF5ZXJTcGFj
ZSA9IHJvb3RMYXllci0+c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKS5pbnZlcnNlKCk7CisgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtVG9MYXllclNwYWNlID0gcm9vdExheWVyLT5z
Y3JlZW5TcGFjZVRyYW5zZm9ybSgpLmludmVyc2UoKTsKICAgICBWZWN0b3I8SW50UmVjdD4gZmls
bFJlY3RzID0gZmlsbFJlZ2lvbi5yZWN0cygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwg
ZmlsbFJlY3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEludFJlY3QgbGF5ZXJSZWN0ID0gdHJh
bnNmb3JtVG9MYXllclNwYWNlLm1hcFJlY3QoZmlsbFJlY3RzW2ldKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDUmVuZGVyU3VyZmFj
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5k
ZXJTdXJmYWNlLmgKaW5kZXggOGUzNzA1NzhjZWQyMTA1MDFlOWRkZGM0NDhhODc5NWQ5NDY2OTI0
Yi4uODU1ZmNjZTdlNDM1M2I4ZGRlZDUxZGVlMGVlZDBjNDAwMzgyYTE2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NSZW5kZXJTdXJm
YWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NSZW5kZXJTdXJmYWNlLmgKQEAgLTMyLDkgKzMyLDkgQEAKICNpbmNsdWRlICJGbG9hdFJlY3Qu
aCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKLSNp
bmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJRdWFk
LmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KKyNpbmNsdWRlIDxw
dWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtODUsMjMgKzg1LDIzIEBAIHB1YmxpYzoK
ICAgICBib29sIGRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSBjb25zdCB7IHJldHVybiBtX2RyYXdP
cGFjaXR5SXNBbmltYXRpbmc7IH0KICAgICB2b2lkIHNldERyYXdPcGFjaXR5SXNBbmltYXRpbmco
Ym9vbCBkcmF3T3BhY2l0eUlzQW5pbWF0aW5nKSB7IG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZyA9
IGRyYXdPcGFjaXR5SXNBbmltYXRpbmc7IH0KIAotICAgIHZvaWQgc2V0RHJhd1RyYW5zZm9ybShj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSkgeyBtX2RyYXdUcmFuc2Zv
cm0gPSBkcmF3VHJhbnNmb3JtOyB9Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRy
YXdUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2RyYXdUcmFuc2Zvcm07IH0KKyAgICB2b2lk
IHNldERyYXdUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
ZHJhd1RyYW5zZm9ybSkgeyBtX2RyYXdUcmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtOyB9CisgICAg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgZHJhd1RyYW5zZm9ybSgpIGNv
bnN0IHsgcmV0dXJuIG1fZHJhd1RyYW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRPcmlnaW5UcmFu
c2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSkgeyBtX29y
aWdpblRyYW5zZm9ybSA9IG9yaWdpblRyYW5zZm9ybTsgfQotICAgIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBvcmlnaW5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX29yaWdpblRyYW5z
Zm9ybTsgfQorICAgIHZvaWQgc2V0T3JpZ2luVHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG9yaWdpblRyYW5zZm9ybSkgeyBtX29yaWdpblRyYW5zZm9ybSA9
IG9yaWdpblRyYW5zZm9ybTsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgmIG9yaWdpblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2luVHJhbnNmb3Jt
OyB9CiAKLSAgICB2b2lkIHNldFNjcmVlblNwYWNlVHJhbnNmb3JtKGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSkgeyBtX3NjcmVlblNwYWNlVHJhbnNmb3Jt
ID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgc2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlblNwYWNlVHJh
bnNmb3JtOyB9CisgICAgdm9pZCBzZXRTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25zdCBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSkgeyBtX3NjcmVl
blNwYWNlVHJhbnNmb3JtID0gc2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KKyAgICBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBzY3JlZW5TcGFjZVRyYW5zZm9ybSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2NyZWVuU3BhY2VUcmFuc2Zvcm07IH0KIAotICAgIHZvaWQgc2V0UmVwbGlj
YURyYXdUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FEcmF3VHJh
bnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSByZXBsaWNhRHJhd1RyYW5zZm9ybTsg
fQotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhRHJhd1RyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYURyYXdUcmFuc2Zvcm07IH0KKyAgICB2b2lkIHNldFJl
cGxpY2FEcmF3VHJhbnNmb3JtKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHJlcGxpY2FEcmF3VHJhbnNmb3JtKSB7IG1fcmVwbGljYURyYXdUcmFuc2Zvcm0gPSByZXBsaWNh
RHJhd1RyYW5zZm9ybTsgfQorICAgIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHJlcGxpY2FEcmF3VHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhRHJhd1Ry
YW5zZm9ybTsgfQogCi0gICAgdm9pZCBzZXRSZXBsaWNhT3JpZ2luVHJhbnNmb3JtKGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3JpZ2luVHJhbnNmb3JtKSB7IG1fcmVwbGljYU9y
aWdpblRyYW5zZm9ybSA9IHJlcGxpY2FPcmlnaW5UcmFuc2Zvcm07IH0KLSAgICBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYU9yaWdpblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJu
IG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybTsgfQorICAgIHZvaWQgc2V0UmVwbGljYU9yaWdpblRy
YW5zZm9ybShjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiByZXBsaWNhT3Jp
Z2luVHJhbnNmb3JtKSB7IG1fcmVwbGljYU9yaWdpblRyYW5zZm9ybSA9IHJlcGxpY2FPcmlnaW5U
cmFuc2Zvcm07IH0KKyAgICBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBy
ZXBsaWNhT3JpZ2luVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhT3JpZ2luVHJh
bnNmb3JtOyB9CiAKLSAgICB2b2lkIHNldFJlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9ybShjb25z
dCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKSB7IG1f
cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtID0gcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3Jt
OyB9Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHJlcGxpY2FTY3JlZW5TcGFjZVRy
YW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtOyB9
CisgICAgdm9pZCBzZXRSZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtKSB7IG1f
cmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3JtID0gcmVwbGljYVNjcmVlblNwYWNlVHJhbnNmb3Jt
OyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcmVwbGljYVNj
cmVlblNwYWNlVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9yZXBsaWNhU2NyZWVuU3BhY2VU
cmFuc2Zvcm07IH0KIAogICAgIGJvb2wgdGFyZ2V0U3VyZmFjZVRyYW5zZm9ybXNBcmVBbmltYXRp
bmcoKSBjb25zdCB7IHJldHVybiBtX3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5n
OyB9CiAgICAgdm9pZCBzZXRUYXJnZXRTdXJmYWNlVHJhbnNmb3Jtc0FyZUFuaW1hdGluZyhib29s
IGFuaW1hdGluZykgeyBtX3RhcmdldFN1cmZhY2VUcmFuc2Zvcm1zQXJlQW5pbWF0aW5nID0gYW5p
bWF0aW5nOyB9CkBAIC0xNTIsMTIgKzE1MiwxMiBAQCBwcml2YXRlOgogCiAgICAgZmxvYXQgbV9k
cmF3T3BhY2l0eTsKICAgICBib29sIG1fZHJhd09wYWNpdHlJc0FuaW1hdGluZzsKLSAgICBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBtX2RyYXdUcmFuc2Zvcm07Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggbV9vcmlnaW5UcmFuc2Zvcm07Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY3JlZW5T
cGFjZVRyYW5zZm9ybTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FEcmF3VHJh
bnNmb3JtOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYU9yaWdpblRyYW5zZm9y
bTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FTY3JlZW5TcGFjZVRyYW5zZm9y
bTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fZHJhd1RyYW5zZm9ybTsK
KyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fb3JpZ2luVHJhbnNmb3JtOwor
ICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9zY3JlZW5TcGFjZVRyYW5zZm9y
bTsKKyAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcmVwbGljYURyYXdUcmFu
c2Zvcm07CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxpY2FPcmln
aW5UcmFuc2Zvcm07CisgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX3JlcGxp
Y2FTY3JlZW5TcGFjZVRyYW5zZm9ybTsKICAgICBib29sIG1fdGFyZ2V0U3VyZmFjZVRyYW5zZm9y
bXNBcmVBbmltYXRpbmc7CiAgICAgYm9vbCBtX3NjcmVlblNwYWNlVHJhbnNmb3Jtc0FyZUFuaW1h
dGluZzsKICAgICBXZWJLaXQ6OldlYkZpbHRlck9wZXJhdGlvbnMgbV9maWx0ZXJzOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTaGFy
ZWRRdWFkU3RhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuY3BwCmluZGV4IDliZjc2OTI1YmI4Y2YyYmJhYzUzOWMw
MTQzMWM1NTc4NDMzOWZkMDUuLjNmMjgzN2UwNTIwYmY4NDZiNDczZWExZTczODcxNWY2ZTgwOTYw
M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDU2hhcmVkUXVhZFN0YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5jcHAKQEAgLTI3LDE0ICsyNywx
NiBAQAogCiAjaW5jbHVkZSAiY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCIKIAordXNpbmcgV2ViS2l0
OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1QYXNz
T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiBDQ1NoYXJlZFF1YWRTdGF0ZTo6Y3JlYXRlKGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3Qg
SW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorUGFzc093blB0
cjxDQ1NoYXJlZFF1YWRTdGF0ZT4gQ0NTaGFyZWRRdWFkU3RhdGU6OmNyZWF0ZShjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIGxheWVyVHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0
IEludFJlY3QmIGNsaXBSZWN0LCBmbG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSkKIHsKICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IENDU2hhcmVkUXVhZFN0YXRlKHF1YWRUcmFuc2Zvcm0sIGxheWVy
VHJhbnNmb3JtLCBsYXllclJlY3QsIGNsaXBSZWN0LCBvcGFjaXR5LCBvcGFxdWUpKTsKIH0KIAot
Q0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hhcmVkUXVhZFN0YXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBxdWFkVHJhbnNmb3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJU
cmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJl
Y3QsIGZsb2F0IG9wYWNpdHksIGJvb2wgb3BhcXVlKQorQ0NTaGFyZWRRdWFkU3RhdGU6OkNDU2hh
cmVkUXVhZFN0YXRlKGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3Jt
LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlKQogICAgIDogbV9xdWFkVHJhbnNmb3JtKHF1YWRUcmFuc2Zvcm0pCiAgICAg
LCBtX2xheWVyVHJhbnNmb3JtKGxheWVyVHJhbnNmb3JtKQogICAgICwgbV9sYXllclJlY3QobGF5
ZXJSZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDU2hhcmVkUXVhZFN0YXRlLmgKaW5kZXggNDIwNmFhNWMyZGUy
YTc1NGM5Y2E5MWY0ZThlODg5MzgyMjExZmYyMi4uYTE0YjE3ZGFhY2YxMGM3YjljNTkzYTUzMGEy
YTI2YmI1ODUxMTU5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTaGFyZWRRdWFkU3RhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oCkBAIC0yOCw3
ICsyOCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJJbnRSZWN0Lmgi
Ci0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXguaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNiwxMiArMzYsMTIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogY2xhc3MgQ0NTaGFyZWRRdWFkU3RhdGUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEND
U2hhcmVkUXVhZFN0YXRlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJl
ZFF1YWRTdGF0ZT4gY3JlYXRlKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNm
b3JtLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IElu
dFJlY3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHks
IGJvb2wgb3BhcXVlKTsKKyAgICBzdGF0aWMgUGFzc093blB0cjxDQ1NoYXJlZFF1YWRTdGF0ZT4g
Y3JlYXRlKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHF1YWRUcmFuc2Zv
cm0sIGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNmb3Jt
LCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBmbG9h
dCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CiAKICAgICAvLyBUaGUgdHJhbnNmb3JtIHRoYXQgcXVh
ZHMgaW4gYSBDQ0RyYXdRdWFkIHNob3VsZCBiZSB0cmFuc2Zvcm1lZCB3aXRoLgotICAgIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBxdWFkVHJhbnNmb3JtKCkgY29uc3QgeyByZXR1cm4gbV9x
dWFkVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcXVhZFRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcXVhZFRyYW5zZm9ybTsgfQogICAg
IC8vIFRoZSB0cmFuc2Zvcm0gdGhhdCBsYXllclJlY3QoKSBzaG91bGQgYmUgdHJhbnNmb3JtZWQg
d2l0aC4KLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBj
b25zdCB7IHJldHVybiBtX2xheWVyVHJhbnNmb3JtOyB9CisgICAgY29uc3QgV2ViS2l0OjpXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX2xh
eWVyVHJhbnNmb3JtOyB9CiAgICAgY29uc3QgSW50UmVjdCYgbGF5ZXJSZWN0KCkgY29uc3QgeyBy
ZXR1cm4gbV9sYXllclJlY3Q7IH0KICAgICAvLyBVc2FnZTogaWYgY2xpcFJlY3QgaXMgZW1wdHks
IHRoaXMgY2xpcFJlY3Qgc2hvdWxkIG5vdCBiZSB1c2VkLgogICAgIGNvbnN0IEludFJlY3QmIGNs
aXBSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9jbGlwUmVjdDsgfQpAQCAtNTEsMTAgKzUxLDEwIEBA
IHB1YmxpYzoKICAgICBib29sIGlzTGF5ZXJBeGlzQWxpZ25lZEludFJlY3QoKSBjb25zdDsKIAog
cHJpdmF0ZToKLSAgICBDQ1NoYXJlZFF1YWRTdGF0ZShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIGxheWVyVHJhbnNm
b3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGNvbnN0IEludFJlY3QmIGNsaXBSZWN0LCBm
bG9hdCBvcGFjaXR5LCBib29sIG9wYXF1ZSk7CisgICAgQ0NTaGFyZWRRdWFkU3RhdGUoY29uc3Qg
V2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgcXVhZFRyYW5zZm9ybSwgY29uc3QgV2Vi
S2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEludFJl
Y3QmIGxheWVyUmVjdCwgY29uc3QgSW50UmVjdCYgY2xpcFJlY3QsIGZsb2F0IG9wYWNpdHksIGJv
b2wgb3BhcXVlKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG1fcXVhZFRyYW5zZm9ybTsK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtX2xheWVyVHJhbnNmb3JtOworICAgIFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbV9xdWFkVHJhbnNmb3JtOworICAgIFdlYktpdDo6V2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggbV9sYXllclRyYW5zZm9ybTsKICAgICBJbnRSZWN0IG1fbGF5
ZXJSZWN0OwogICAgIEludFJlY3QgbV9jbGlwUmVjdDsKICAgICBmbG9hdCBtX29wYWNpdHk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q1NvbGlkQ29sb3JMYXllckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmNwcAppbmRleCA2YWUzYTE3Mjk4
ZTljNmMzMTgyN2FkNjllYWI0NmI5ZThlZDNlNDYzLi5kMWE0Zjc2MjY2MjQyOWNhNzAyZjNlYTJm
ZWEwYmYyZDgwMTI4NGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ1NvbGlkQ29sb3JMYXllckltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xvckxheWVySW1w
bC5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDksOSArNTAsOSBAQCBDQ1NvbGlk
Q29sb3JMYXllckltcGw6On5DQ1NvbGlkQ29sb3JMYXllckltcGwoKQogewogfQogCi1UcmFuc2Zv
cm1hdGlvbk1hdHJpeCBDQ1NvbGlkQ29sb3JMYXllckltcGw6OnF1YWRUcmFuc2Zvcm0oKSBjb25z
dAorV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NTb2xpZENvbG9yTGF5ZXJJbXBsOjpxdWFkVHJh
bnNmb3JtKCkgY29uc3QKIHsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzb2xpZENvbG9yVHJh
bnNmb3JtID0gZHJhd1RyYW5zZm9ybSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNv
bGlkQ29sb3JUcmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtKCk7CiAgICAgc29saWRDb2xvclRyYW5z
Zm9ybS50cmFuc2xhdGUoLWJvdW5kcygpLndpZHRoKCkgLyAyLjAsIC1ib3VuZHMoKS5oZWlnaHQo
KSAvIDIuMCk7CiAKICAgICByZXR1cm4gc29saWRDb2xvclRyYW5zZm9ybTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDU29saWRDb2xv
ckxheWVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKaW5kZXggZDhmY2UzNzYxN2Q2YWI0ZDlhZGYzODhl
NzUxMWI5ZGZhZmEzZjE1Mi4uNjQyOTEyNTVmZGJkMjg4NGQ3M2E0OWNlNmEyNjM4MDA5NDg0YWIy
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NTb2xpZENvbG9yTGF5ZXJJbXBsLmgKQEAgLTI2LDggKzI2
LDggQEAKICNpZm5kZWYgQ0NTb2xpZENvbG9yTGF5ZXJJbXBsX2gKICNkZWZpbmUgQ0NTb2xpZENv
bG9yTGF5ZXJJbXBsX2gKIAotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5j
bHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw3ICs0MSw3IEBAIHB1
YmxpYzoKICAgICB9CiAgICAgdmlydHVhbCB+Q0NTb2xpZENvbG9yTGF5ZXJJbXBsKCk7CiAKLSAg
ICB2aXJ0dWFsIFRyYW5zZm9ybWF0aW9uTWF0cml4IHF1YWRUcmFuc2Zvcm0oKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcXVhZFRy
YW5zZm9ybSgpIGNvbnN0IE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRRdWFkcyhD
Q1F1YWRDdWxsZXImLCBjb25zdCBDQ1NoYXJlZFF1YWRTdGF0ZSosIGJvb2wmIGhhZE1pc3NpbmdU
aWxlcykgT1ZFUlJJREU7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1w
bC5jcHAKaW5kZXggOTYwNWU0OTk3MzYxY2MyNTRkMzVjNDgwZjBhMmVlNWM4ODFkNjA2Zi4uZWZl
Y2FiZDFkZmNmZDU3ZmI4ZDhjMDBkOGU4NWIyM2JiNjE3OWY3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NUaWxlZExheWVySW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NU
aWxlZExheWVySW1wbC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KIAogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKK3VzaW5nIFdlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMTIxLDkgKzEy
Miw5IEBAIERyYXdhYmxlVGlsZSogQ0NUaWxlZExheWVySW1wbDo6Y3JlYXRlVGlsZShpbnQgaSwg
aW50IGopCiAgICAgcmV0dXJuIGFkZGVkVGlsZTsKIH0KIAotVHJhbnNmb3JtYXRpb25NYXRyaXgg
Q0NUaWxlZExheWVySW1wbDo6cXVhZFRyYW5zZm9ybSgpIGNvbnN0CitXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBDQ1RpbGVkTGF5ZXJJbXBsOjpxdWFkVHJhbnNmb3JtKCkgY29uc3QKIHsKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm0gPSBkcmF3VHJhbnNmb3JtKCk7CisgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtID0gZHJhd1RyYW5zZm9ybSgpOwogCiAgICAg
aWYgKGNvbnRlbnRCb3VuZHMoKS5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiB0cmFuc2Zvcm07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ1RpbGVkTGF5ZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ1RpbGVkTGF5ZXJJbXBsLmgKaW5kZXggMmU4NTM5YWUxODZhMjAwMjZmZjky
MjhiNzA3OWMyMGNkYzNiZjUyMS4uZjU4OGM5Y2Y1OTMzZDIwZmE0MWJhZWNiNDJlYmQ1ZmE4MjU5
ZjliNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NUaWxlZExheWVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDVGlsZWRMYXllckltcGwuaApAQCAtMjcsOSArMjcsOSBAQAog
I2RlZmluZSBDQ1RpbGVkTGF5ZXJJbXBsX2gKIAogI2luY2x1ZGUgIkxheWVyVGV4dHVyZVVwZGF0
ZXIuaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgImNjL0ND
TGF5ZXJJbXBsLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRpbGluZ0RhdGEuaCIKKyNpbmNsdWRl
IDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkBAIC02NSw3ICs2NSw3IEBAIHByb3RlY3RlZDoKICAgICBib29sIGhhc1RpbGVBdChpbnQs
IGludCkgY29uc3Q7CiAgICAgYm9vbCBoYXNUZXh0dXJlSWRGb3JUaWxlQXQoaW50LCBpbnQpIGNv
bnN0OwogCi0gICAgdmlydHVhbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBxdWFkVHJhbnNmb3JtKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IHF1YWRUcmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERTsKIAogcHJpdmF0ZToKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViTGF5ZXIuY3BwCmluZGV4IGJkMDIyYjcyNDc4YTEyZmVjM2I4
ZTkwZDIzM2ZiYmI1NWE3MDM3MjEuLjZiMTAyOTgxNDRmMjY2MThhZDI2NTAyMDNiNWQyMzZmOGMw
NTZjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkxheWVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJMYXllci5jcHAKQEAgLTM4LDIw
ICszOCwyMSBAQAogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgog
CiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRp
b25NYXRyaXg7CiAKIG5hbWVzcGFjZSB7CiAKLVRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bWF0aW9uTWF0cml4RnJvbVNrTWF0cml4NDQoY29uc3QgU2tNYXRyaXg0NCYgbWF0cml4KQorV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtYXRpb25NYXRyaXhGcm9tU2tNYXRyaXg0NChj
b25zdCBTa01hdHJpeDQ0JiBtYXRyaXgpCiB7CiAgICAgZG91YmxlIGRhdGFbMTZdOwogICAgIG1h
dHJpeC5hc0NvbE1ham9yZChkYXRhKTsKLSAgICByZXR1cm4gVHJhbnNmb3JtYXRpb25NYXRyaXgo
ZGF0YVswXSwgZGF0YVsxXSwgZGF0YVsyXSwgZGF0YVszXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGF0YVs0XSwgZGF0YVs1XSwgZGF0YVs2XSwgZGF0YVs3XSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVs4XSwgZGF0YVs5XSwgZGF0YVsxMF0sIGRhdGFb
MTFdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWzEyXSwgZGF0YVsxM10s
IGRhdGFbMTRdLCBkYXRhWzE1XSk7CisgICAgcmV0dXJuIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
KGRhdGFbMF0sIGRhdGFbMV0sIGRhdGFbMl0sIGRhdGFbM10sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRhdGFbNF0sIGRhdGFbNV0sIGRhdGFbNl0sIGRhdGFbN10sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbOF0sIGRhdGFbOV0sIGRhdGFbMTBd
LCBkYXRhWzExXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxMl0s
IGRhdGFbMTNdLCBkYXRhWzE0XSwgZGF0YVsxNV0pOwogfQogCi1Ta01hdHJpeDQ0IHNrTWF0cml4
NDRGcm9tVHJhbnNmb3JtYXRpb25NYXRyaXgoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1h
dHJpeCkKK1NrTWF0cml4NDQgc2tNYXRyaXg0NEZyb21UcmFuc2Zvcm1hdGlvbk1hdHJpeChjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogewogICAgIFNrTWF0cml4NDQgc2tN
YXRyaXg7CiAgICAgc2tNYXRyaXguc2V0KDAsIDAsIFNrRG91YmxlVG9NU2NhbGFyKG1hdHJpeC5t
MTEoKSkpOwpAQCAtMjMxLDcgKzIzMiw3IEBAIHZvaWQgV2ViTGF5ZXI6OnNldFN1YmxheWVyVHJh
bnNmb3JtKGNvbnN0IFNrTWF0cml4NDQmIG1hdHJpeCkKIAogdm9pZCBXZWJMYXllcjo6c2V0U3Vi
bGF5ZXJUcmFuc2Zvcm0oY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkKIHsK
LSAgICBtX3ByaXZhdGUtPnNldFN1YmxheWVyVHJhbnNmb3JtKG1hdHJpeC50b1dlYkNvcmVUcmFu
c2Zvcm0oKSk7CisgICAgbV9wcml2YXRlLT5zZXRTdWJsYXllclRyYW5zZm9ybShtYXRyaXgpOwog
fQogCiBTa01hdHJpeDQ0IFdlYkxheWVyOjpzdWJsYXllclRyYW5zZm9ybSgpIGNvbnN0CkBAIC0y
NDYsNyArMjQ3LDcgQEAgdm9pZCBXZWJMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFNrTWF0cml4
NDQmIG1hdHJpeCkKIAogdm9pZCBXZWJMYXllcjo6c2V0VHJhbnNmb3JtKGNvbnN0IFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCiB7Ci0gICAgbV9wcml2YXRlLT5zZXRUcmFuc2Zvcm0o
bWF0cml4LnRvV2ViQ29yZVRyYW5zZm9ybSgpKTsKKyAgICBtX3ByaXZhdGUtPnNldFRyYW5zZm9y
bShtYXRyaXgpOwogfQogCiBTa01hdHJpeDQ0IFdlYkxheWVyOjp0cmFuc2Zvcm0oKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RD
b21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RD
b21tb24uY3BwCmluZGV4IDM2Zjc5ODE4ZWYwOWU4MzhjYzk4MjdiOGZhMTYyNTg4MTk1MGRhNDIu
LjBlOGMxYTQwMWY2YzhiYmRlMjIzMjMxZDJjOTNmZDk4NGIzNTIxM2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5jcHAK
QEAgLTk5LDkgKzk5LDkgQEAgRmFrZVRyYW5zZm9ybVRyYW5zaXRpb246On5GYWtlVHJhbnNmb3Jt
VHJhbnNpdGlvbigpCiB7CiB9CiAKLVdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IEZha2VU
cmFuc2Zvcm1UcmFuc2l0aW9uOjpnZXRWYWx1ZShkb3VibGUgdGltZSwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgc2l6ZSkgY29uc3QKK1dlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggRmFr
ZVRyYW5zZm9ybVRyYW5zaXRpb246OmdldFZhbHVlKGRvdWJsZSB0aW1lLCBjb25zdCBXZWJDb3Jl
OjpJbnRTaXplJiBzaXplKSBjb25zdAogewotICAgIHJldHVybiBXZWJDb3JlOjpUcmFuc2Zvcm1h
dGlvbk1hdHJpeCgpOworICAgIHJldHVybiBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
KCk7CiB9CiAKIFBhc3NPd25QdHI8V2ViQ29yZTo6Q0NBbmltYXRpb25DdXJ2ZT4gRmFrZVRyYW5z
Zm9ybVRyYW5zaXRpb246OmNsb25lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmggYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oCmluZGV4IDc3NmI3NWM4ZDZmNmVh
ZTQ5Y2IyYzI4ZWU4ZDYzYzIxYmUxMjM4MzQuLjQzODQxMTdkMzljYWI3MjJmODQ1NGVkNTc3NmU1
MDIyOTkxNjBmN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NB
bmltYXRpb25UZXN0Q29tbW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0FuaW1hdGlvblRlc3RDb21tb24uaApAQCAtMjUsNiArMjUsNyBAQAogI2lmbmRlZiBDQ0FuaW1h
dGlvblRlc3RDb21tb25faAogI2RlZmluZSBDQ0FuaW1hdGlvblRlc3RDb21tb25faAogCisjaW5j
bHVkZSAiSW50U2l6ZS5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uQ3VydmUuaCIKICNpbmNs
dWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogCkBAIC01Myw3ICs1NCw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIH5GYWtlVHJhbnNmb3JtVHJhbnNpdGlvbigpOwogCiAgICAg
dmlydHVhbCBkb3VibGUgZHVyYXRpb24oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX2R1cmF0
aW9uOyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1
ZShkb3VibGUgdGltZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOwor
ICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3Vi
bGUgdGltZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAg
dmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkNDQW5pbWF0aW9uQ3VydmU+IGNsb25lKCkgY29u
c3QgT1ZFUlJJREU7CiAKQEAgLTg2LDEzICs4NywxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBp
bnQgaWQoKSBjb25zdCBPVkVSUklERSB7IHJldHVybiAwOyB9CiAgICAgdmlydHVhbCB2b2lkIHNl
dE9wYWNpdHlGcm9tQW5pbWF0aW9uKGZsb2F0IG9wYWNpdHkpIE9WRVJSSURFIHsgbV9vcGFjaXR5
ID0gb3BhY2l0eTsgfQogICAgIHZpcnR1YWwgZmxvYXQgb3BhY2l0eSgpIGNvbnN0IE9WRVJSSURF
IHsgcmV0dXJuIG1fb3BhY2l0eTsgfQotICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1Gcm9t
QW5pbWF0aW9uKGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
IE9WRVJSSURFIHsgbV90cmFuc2Zvcm0gPSB0cmFuc2Zvcm07IH0KLSAgICB2aXJ0dWFsIGNvbnN0
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklE
RSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgdm9pZCBzZXRUcmFuc2Zvcm1G
cm9tQW5pbWF0aW9uKGNvbnN0IFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSkgT1ZFUlJJREUgeyBtX3RyYW5zZm9ybSA9IHRyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwg
Y29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKCkgY29uc3Qg
T1ZFUlJJREUgeyByZXR1cm4gbV90cmFuc2Zvcm07IH0KICAgICB2aXJ0dWFsIGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGJvdW5kcygpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fYm91bmRzOyB9
CiAKIHByaXZhdGU6CiAgICAgZmxvYXQgbV9vcGFjaXR5OwotICAgIFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4IG1fdHJhbnNmb3JtOworICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggbV90cmFuc2Zvcm07CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2JvdW5kczsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2Vy
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDRGFtYWdlVHJhY2tlclRl
c3QuY3BwCmluZGV4IGJiZWE5NzFkZDVhNGVmZTY3ZDMzNjE2MWM5YTBkZmI3MTVhZDdhYjcuLjU2
ZDg1ZmFmYTlmZDdiOWFjN2YyZjI3MjhkNmNhZjY3Yjc5NmFiMTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NEYW1hZ2VUcmFja2VyVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0RhbWFnZVRyYWNrZXJUZXN0LmNwcApAQCAtNDYs
NyArNDYsNyBAQCBuYW1lc3BhY2Ugewogdm9pZCBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9y
bXNBbmRWaXNpYmlsaXR5KENDTGF5ZXJJbXBsKiByb290LCBWZWN0b3I8Q0NMYXllckltcGwqPiYg
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCkKIHsKICAgICBDQ0xheWVyU29ydGVyIGxheWVyU29ydGVy
OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+
IGR1bW15TGF5ZXJMaXN0OwogICAgIGludCBkdW1teU1heFRleHR1cmVTaXplID0gNTEyOwogCkBA
IC0yOTEsNyArMjkxLDcgQEAgVEVTVF9GKENDRGFtYWdlVHJhY2tlclRlc3QsIHZlcmlmeURhbWFn
ZUZvclRyYW5zZm9ybWVkTGF5ZXIpCiAgICAgT3duUHRyPENDTGF5ZXJJbXBsPiByb290ID0gY3Jl
YXRlQW5kU2V0VXBUZXN0VHJlZVdpdGhPbmVTdXJmYWNlKCk7CiAgICAgQ0NMYXllckltcGwqIGNo
aWxkID0gcm9vdC0+Y2hpbGRyZW4oKVswXS5nZXQoKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHJvdGF0aW9uOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJvdGF0aW9uOwogICAg
IHJvdGF0aW9uLnJvdGF0ZSg0NSk7CiAKICAgICAvLyBOb3RlIGNhcmVmdWxseSwgdGhlIGFuY2hv
ciBpcyBhY3R1YWxseSBwYXJ0IG9mIGxheWVyLT5wb3NpdGlvbigpLiBCeSBzZXR0aW5nIGFuY2hv
cgpAQCAtMzMyLDcgKzMzMiw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlE
YW1hZ2VGb3JQZXJzcGVjdGl2ZUNsaXBwZWRMYXllcikKICAgICBPd25QdHI8Q0NMYXllckltcGw+
IHJvb3QgPSBjcmVhdGVBbmRTZXRVcFRlc3RUcmVlV2l0aE9uZVN1cmZhY2UoKTsKICAgICBDQ0xh
eWVySW1wbCogY2hpbGQgPSByb290LT5jaGlsZHJlbigpWzBdLmdldCgpOwogCi0gICAgVHJhbnNm
b3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRy
YW5zZm9ybTsKICAgICB0cmFuc2Zvcm0uYXBwbHlQZXJzcGVjdGl2ZSgxKTsKICAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlM2QoLTE1MCwgLTUwLCAwKTsKICAgICB0cmFuc2Zvcm0ucm90YXRlM2QoMCwg
NDUsIDApOwpAQCAtNzg5LDcgKzc4OSw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2
ZXJpZnlEYW1hZ2VGb3JSZXBsaWNhKQogICAgICAgICBPd25QdHI8Q0NMYXllckltcGw+IGdyYW5k
Q2hpbGQxUmVwbGljYSA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNyk7CiAgICAgICAgIGdyYW5kQ2hp
bGQxUmVwbGljYS0+c2V0UG9zaXRpb24oRmxvYXRQb2ludDo6emVybygpKTsKICAgICAgICAgZ3Jh
bmRDaGlsZDFSZXBsaWNhLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50Ojp6ZXJvKCkpOwotICAg
ICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOworICAgICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCByZWZsZWN0aW9uOwogICAgICAgICByZWZsZWN0aW9uLnNjYWxlM2QoLTEu
MCwgMS4wLCAxLjApOwogICAgICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFRyYW5zZm9ybShy
ZWZsZWN0aW9uKTsKICAgICAgICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihncmFuZENo
aWxkMVJlcGxpY2EucmVsZWFzZSgpKTsKQEAgLTkyOCw3ICs5MjgsNyBAQCBURVNUX0YoQ0NEYW1h
Z2VUcmFja2VyVGVzdCwgdmVyaWZ5RGFtYWdlRm9yUmVwbGljYU1hc2spCiAgICAgICAgIE93blB0
cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFSZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2
KTsKICAgICAgICAgZ3JhbmRDaGlsZDFSZXBsaWNhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6
ZXJvKCkpOwogICAgICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldEFuY2hvclBvaW50KEZsb2F0
UG9pbnQ6Onplcm8oKSk7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHJlZmxlY3Rpb247
CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJlZmxlY3Rpb247CiAgICAgICAgIHJl
ZmxlY3Rpb24uc2NhbGUzZCgtMS4wLCAxLjAsIDEuMCk7CiAgICAgICAgIGdyYW5kQ2hpbGQxUmVw
bGljYS0+c2V0VHJhbnNmb3JtKHJlZmxlY3Rpb24pOwogICAgICAgICBncmFuZENoaWxkMS0+c2V0
UmVwbGljYUxheWVyKGdyYW5kQ2hpbGQxUmVwbGljYS5yZWxlYXNlKCkpOwpAQCAtOTg4LDcgKzk4
OCw3IEBAIFRFU1RfRihDQ0RhbWFnZVRyYWNrZXJUZXN0LCB2ZXJpZnlEYW1hZ2VGb3JSZXBsaWNh
TWFza1dpdGhBbmNob3IpCiAgICAgICAgIE93blB0cjxDQ0xheWVySW1wbD4gZ3JhbmRDaGlsZDFS
ZXBsaWNhID0gQ0NMYXllckltcGw6OmNyZWF0ZSg2KTsKICAgICAgICAgZ3JhbmRDaGlsZDFSZXBs
aWNhLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50Ojp6ZXJvKCkpOwogICAgICAgICBncmFuZENoaWxk
MVJlcGxpY2EtPnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQ6Onplcm8oKSk7IC8vIG5vdGUsIHRo
aXMgaXMgbm90IHRoZSBhbmNob3IgYmVpbmcgdGVzdGVkLgotICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCByZWZsZWN0aW9uOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZWZs
ZWN0aW9uOwogICAgICAgICByZWZsZWN0aW9uLnNjYWxlM2QoLTEuMCwgMS4wLCAxLjApOwogICAg
ICAgICBncmFuZENoaWxkMVJlcGxpY2EtPnNldFRyYW5zZm9ybShyZWZsZWN0aW9uKTsKICAgICAg
ICAgZ3JhbmRDaGlsZDEtPnNldFJlcGxpY2FMYXllcihncmFuZENoaWxkMVJlcGxpY2EucmVsZWFz
ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NLZXlmcmFt
ZWRBbmltYXRpb25DdXJ2ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAKaW5kZXggMTViNTU0YTA2OTA1NzUyZjFi
ZGVmY2I4YWViYjg3MjhmZWVmYTU1YS4uYWQxYWU3NGNhMTI1NzM2NGM5YzE1MzBlNDdlMjBiNjk0
N2Y1MGJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZy
YW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAKQEAgLTMxLDE4ICszMSwxOCBA
QAogCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgor
I2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0
Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNw
YWNlIHsKIAotdm9pZCBleHBlY3RUcmFuc2xhdGVYKGRvdWJsZSB0cmFuc2xhdGVYLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQordm9pZCBleHBlY3RUcmFuc2xhdGVYKGRvdWJs
ZSB0cmFuc2xhdGVYLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQogewot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBkZWNvbXBvc2VkVHlwZTsK
LSAgICBtYXRyaXguZGVjb21wb3NlKGRlY29tcG9zZWRUeXBlKTsKLSAgICBFWFBFQ1RfRkxPQVRf
RVEodHJhbnNsYXRlWCwgZGVjb21wb3NlZFR5cGUudHJhbnNsYXRlWCk7CisgICAgRVhQRUNUX0ZM
T0FUX0VRKHRyYW5zbGF0ZVgsIG1hdHJpeC5tNDEoKSk7CiB9CiAKIC8vIFRlc3RzIHRoYXQgYSBm
bG9hdCBhbmltYXRpb24gd2l0aCBvbmUga2V5ZnJhbWUgd29ya3MgYXMgZXhwZWN0ZWQuCkBAIC0x
OTEsMTAgKzE5MSw4IEBAIFRFU1QoQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZVRlc3QsIFJlcGVh
dGVkVHJhbnNmb3JtS2V5VGltZXMpCiAgICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0
VmFsdWUoMC41LCBsYXllclNpemUpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgZGlzY29udGludWl0
eSBhdCAxLiBBbnkgdmFsdWUgYmV0d2VlbiA0IGFuZCA2IGlzIHZhbGlkLgotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IHZhbHVlID0gY3VydmUtPmdldFZhbHVlKDEsIGxheWVyU2l6ZSk7Ci0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXg6OkRlY29tcG9zZWRUeXBlIGRlY29tcG9zZWRUeXBlOwotICAg
IHZhbHVlLmRlY29tcG9zZShkZWNvbXBvc2VkVHlwZSk7Ci0gICAgRVhQRUNUX1RSVUUoZGVjb21w
b3NlZFR5cGUudHJhbnNsYXRlWCA+PSA0ICYmIGRlY29tcG9zZWRUeXBlLnRyYW5zbGF0ZVggPD0g
Nik7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdmFsdWUgPSBjdXJ2ZS0+Z2V0VmFsdWUo
MSwgbGF5ZXJTaXplKTsKKyAgICBFWFBFQ1RfVFJVRSh2YWx1ZS5tNDEoKSA+PSA0ICYmIHZhbHVl
Lm00MSgpIDw9IDYpOwogCiAgICAgZXhwZWN0VHJhbnNsYXRlWCg2LCBjdXJ2ZS0+Z2V0VmFsdWUo
MS41LCBsYXllclNpemUpKTsKICAgICBleHBlY3RUcmFuc2xhdGVYKDYsIGN1cnZlLT5nZXRWYWx1
ZSgyLCBsYXllclNpemUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LmNwcAppbmRleCA4Mjcx
OTRiYmM0MTUzNmYyZmFjMzQ5MWQzZDUxZTQ0ODhhMTE0MmY2Li5kYmVkMDJjNzQ5YjllN2FkZTMz
YTY1NWFkYWU0NmNhMjhhZWZiMDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCkBA
IC0zNSwxOCArMzUsMTggQEAKIAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8
Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
dXNpbmcgbmFtZXNwYWNlIFdlYktpdFRlc3RzOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIAotdm9pZCBleHBlY3RUcmFuc2xhdGVYKGRvdWJs
ZSB0cmFuc2xhdGVYLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQordm9pZCBl
eHBlY3RUcmFuc2xhdGVYKGRvdWJsZSB0cmFuc2xhdGVYLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgbWF0cml4KQogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2Vk
VHlwZSBkZWNvbXBvc2VkVHlwZTsKLSAgICBtYXRyaXguZGVjb21wb3NlKGRlY29tcG9zZWRUeXBl
KTsKLSAgICBFWFBFQ1RfRkxPQVRfRVEodHJhbnNsYXRlWCwgZGVjb21wb3NlZFR5cGUudHJhbnNs
YXRlWCk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKHRyYW5zbGF0ZVgsIG1hdHJpeC5tNDEoKSk7CiB9
CiAKIFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihQ
YXNzT3duUHRyPENDQW5pbWF0aW9uQ3VydmU+IGN1cnZlLCBpbnQgaWQsIENDQWN0aXZlQW5pbWF0
aW9uOjpUYXJnZXRQcm9wZXJ0eSBwcm9wZXJ0eSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NMYXllckltcGxUZXN0LmNwcAppbmRleCBmNTI1OWUxY2ZjYjg1M2M5NDIxMTM3
ZTczZDZkYmI3MTNkNjNkNDE2Li44MjdjOWFkYWFlMDc0NDU2YTlkMGMwMmI4NzM4Mzc0NzlmNjM2
NWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJbXBs
VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySW1wbFRl
c3QuY3BwCkBAIC04Niw3ICs4Niw3IEBAIFRFU1QoQ0NMYXllckltcGxUZXN0LCB2ZXJpZnlMYXll
ckNoYW5nZXNBcmVUcmFja2VkUHJvcGVybHkpCiAgICAgSW50UmVjdCBhcmJpdHJhcnlJbnRSZWN0
ID0gSW50UmVjdChhcmJpdHJhcnlJbnRQb2ludCwgYXJiaXRyYXJ5SW50U2l6ZSk7CiAgICAgRmxv
YXRSZWN0IGFyYml0cmFyeUZsb2F0UmVjdCA9IEZsb2F0UmVjdChhcmJpdHJhcnlGbG9hdFBvaW50
LCBGbG9hdFNpemUoMS4yMzRmLCA1LjY3OGYpKTsKICAgICBDb2xvciBhcmJpdHJhcnlDb2xvciA9
IENvbG9yKDEwLCAyMCwgMzApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFyYml0cmFyeVRy
YW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcmJpdHJhcnlUcmFuc2Zvcm07
CiAgICAgYXJiaXRyYXJ5VHJhbnNmb3JtLnNjYWxlM2QoMC4xLCAwLjIsIDAuMyk7CiAgICAgV2Vi
RmlsdGVyT3BlcmF0aW9ucyBhcmJpdHJhcnlGaWx0ZXJzOwogICAgIGFyYml0cmFyeUZpbHRlcnMu
YXBwZW5kKFdlYkZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlT3BhY2l0eUZpbHRlcigwLjUpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJJdGVyYXRvclRlc3Qu
Y3BwCmluZGV4IGY1ZWFlN2Y4NGRkNTEyNWM4MDk5NWI5Y2Q0MjliOTliY2JmNjkzMzQuLjEwNWM3
MTg2ZTRjOTQzNWU4OWViMzMwY2EyNmM5MDE5YjJkMjU1MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckl0ZXJhdG9yVGVzdC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVySXRlcmF0b3JUZXN0LmNwcApAQCAtMzAsOCAr
MzAsMTAgQEAKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRl
IDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIHVzaW5nIDo6dGVzdGlu
Zzo6TW9jazsKIHVzaW5nIDo6dGVzdGluZzo6XzsKIHVzaW5nIDo6dGVzdGluZzo6QXRMZWFzdDsK
QEAgLTEzOSw3ICsxNDEsNyBAQCBURVNUKENDTGF5ZXJJdGVyYXRvclRlc3QsIHNpbXBsZVRyZWUp
CiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKICAgICByZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJU
cmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RM
YXllci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LCBsYXllckxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2KTsKIApAQCAtMTg2LDcgKzE4OCw3IEBAIFRF
U1QoQ0NMYXllckl0ZXJhdG9yVGVzdCwgY29tcGxleFRyZWUpCiAgICAgVmVjdG9yPFJlZlB0cjxM
YXllckNocm9taXVtPiA+IGxheWVyTGlzdDsKICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFw
cGVuZChyb290TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3Vs
YXRlRHJhd1RyYW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVy
LmdldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgMjU2KTsKIApAQCAtMjQ1LDcgKzI0Nyw3IEBAIFRFU1QoQ0NMYXllckl0ZXJhdG9yVGVz
dCwgY29tcGxleFRyZWVNdWx0aVN1cmZhY2UpCiAgICAgVmVjdG9yPFJlZlB0cjxMYXllckNocm9t
aXVtPiA+IGxheWVyTGlzdDsKICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LmFwcGVuZChyb290
TGF5ZXIuZ2V0KCkpOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllci5nZXQoKSwgcm9vdExheWVyLmdldCgpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBsYXllckxpc3QsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjU2
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyU29y
dGVyVGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJU
ZXN0LmNwcAppbmRleCA2NWRiNTQ5YmFmODE0ZjBjZmYzNGUwNjg4YjM5YThjYTJkYTEyZDI5Li5k
MjMxZTEyNTk3MjY4ZjFmOTE5OGI1YjhhYTA0ZDViNWRjMmI4NzJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJTb3J0ZXJUZXN0LmNwcApAQCAtMzAsOCAr
MzAsMTAgQEAKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAjaW5jbHVkZSAiY2MvQ0NTaW5n
bGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3Jl
OwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIHsK
IApAQCAtNDYsMTEgKzQ4LDExIEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIEJhc2ljT3Zlcmxh
cCkKICAgICBmbG9hdCB3ZWlnaHQgPSAwOwogCiAgICAgLy8gVHJpdmlhbCB0ZXN0LCB3aXRoIG9u
ZSBsYXllciBkaXJlY3RseSBvYnNjdXJpbmcgdGhlIG90aGVyLgotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IG5lZzRUcmFuc2xhdGU7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbmVnNFRy
YW5zbGF0ZTsKICAgICBuZWc0VHJhbnNsYXRlLnRyYW5zbGF0ZTNkKDAsIDAsIC00KTsKICAgICBD
Q0xheWVyU29ydGVyOjpMYXllclNoYXBlIGZyb250KDIsIDIsIG5lZzRUcmFuc2xhdGUpOwogCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbmVnNVRyYW5zbGF0ZTsKKyAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBuZWc1VHJhbnNsYXRlOwogICAgIG5lZzVUcmFuc2xhdGUudHJhbnNsYXRlM2Qo
MCwgMCwgLTUpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgYmFjaygyLCAyLCBuZWc1
VHJhbnNsYXRlKTsKIApAQCAtNjMsNyArNjUsNyBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCBC
YXNpY092ZXJsYXApCiAgICAgRVhQRUNUX0VRKDEsIHdlaWdodCk7CiAKICAgICAvLyBPbmUgbGF5
ZXIgdHJhbnNsYXRlZCBvZmYgdG8gdGhlIHJpZ2h0LiBObyBvdmVybGFwIHNob3VsZCBiZSBkZXRl
Y3RlZC4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByaWdodFRyYW5zbGF0ZTsKKyAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCByaWdodFRyYW5zbGF0ZTsKICAgICByaWdodFRyYW5zbGF0ZS50
cmFuc2xhdGUzZCgxMCwgMCwgLTUpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgYmFj
a1JpZ2h0KDIsIDIsIHJpZ2h0VHJhbnNsYXRlKTsKICAgICBvdmVybGFwUmVzdWx0ID0gQ0NMYXll
clNvcnRlcjo6Y2hlY2tPdmVybGFwKCZmcm9udCwgJmJhY2tSaWdodCwgelRocmVzaG9sZCwgd2Vp
Z2h0KTsKQEAgLTgwLDE0ICs4MiwxNSBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCBSaWdodEFu
Z2xlT3ZlcmxhcCkKICAgICBjb25zdCBmbG9hdCB6VGhyZXNob2xkID0gMC4xZjsKICAgICBmbG9h
dCB3ZWlnaHQgPSAwOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRy
aXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CiAgICAg
cGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZSgxMDAwKTsKIAogICAgIC8vIFR3byBs
YXllcnMgZm9ybWluZyBhIHJpZ2h0IGFuZ2xlIHdpdGggYSBwZXJzcGVjdGl2ZSB2aWV3aW5nIHRy
YW5zZm9ybS4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsZWZ0RmFjZU1hdHJpeDsKLSAgICBs
ZWZ0RmFjZU1hdHJpeC5yb3RhdGUzZCgwLCAxLCAwLCAtOTApLnRyYW5zbGF0ZVJpZ2h0M2QoLTEs
IDAsIC01KTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsZWZ0RmFjZU1hdHJpeDsKKyAg
ICBsZWZ0RmFjZU1hdHJpeC5yb3RhdGUzZCgwLCAxLCAwLCAtOTApOworICAgIGxlZnRGYWNlTWF0
cml4LnRyYW5zbGF0ZVJpZ2h0M2QoLTEsIDAsIC01KTsKICAgICBDQ0xheWVyU29ydGVyOjpMYXll
clNoYXBlIGxlZnRGYWNlKDIsIDIsIHBlcnNwZWN0aXZlTWF0cml4ICogbGVmdEZhY2VNYXRyaXgp
OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb250RmFjZU1hdHJpeDsKKyAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBmcm9udEZhY2VNYXRyaXg7CiAgICAgZnJvbnRGYWNlTWF0cml4LnRy
YW5zbGF0ZTNkKDAsIDAsIC00KTsKICAgICBDQ0xheWVyU29ydGVyOjpMYXllclNoYXBlIGZyb250
RmFjZSgyLCAyLCBwZXJzcGVjdGl2ZU1hdHJpeCAqIGZyb250RmFjZU1hdHJpeCk7CiAKQEAgLTEw
MSwxNyArMTA0LDE4IEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIEludGVyc2VjdGluZ0xheWVy
T3ZlcmxhcCkKICAgICBjb25zdCBmbG9hdCB6VGhyZXNob2xkID0gMC4xZjsKICAgICBmbG9hdCB3
ZWlnaHQgPSAwOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CiAgICAgcGVy
c3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2ZSgxMDAwKTsKIAogICAgIC8vIEludGVyc2Vj
dGluZyBsYXllcnMuIEFuIGV4cGxpY2l0IG9yZGVyIHdpbGwgYmUgcmV0dXJuZWQgYmFzZWQgb24g
cmVsYXRpdmUgegogICAgIC8vIHZhbHVlcyBhdCB0aGUgb3ZlcmxhcHBpbmcgZmVhdHVyZXMgYnV0
IHRoZSB3ZWlnaHQgcmV0dXJuZWQgc2hvdWxkIGJlIHplcm8uCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggZnJvbnRGYWNlTWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGZyb250
RmFjZU1hdHJpeDsKICAgICBmcm9udEZhY2VNYXRyaXgudHJhbnNsYXRlM2QoMCwgMCwgLTQpOwog
ICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgZnJvbnRGYWNlKDIsIDIsIHBlcnNwZWN0aXZl
TWF0cml4ICogZnJvbnRGYWNlTWF0cml4KTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRo
cm91Z2hNYXRyaXg7Ci0gICAgdGhyb3VnaE1hdHJpeC5yb3RhdGUzZCgwLCAxLCAwLCA0NSkudHJh
bnNsYXRlUmlnaHQzZCgwLCAwLCAtNCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdGhy
b3VnaE1hdHJpeDsKKyAgICB0aHJvdWdoTWF0cml4LnJvdGF0ZTNkKDAsIDEsIDAsIDQ1KTsKKyAg
ICB0aHJvdWdoTWF0cml4LnRyYW5zbGF0ZVJpZ2h0M2QoMCwgMCwgLTQpOwogICAgIENDTGF5ZXJT
b3J0ZXI6OkxheWVyU2hhcGUgcm90YXRlZEZhY2UoMiwgMiwgcGVyc3BlY3RpdmVNYXRyaXggKiB0
aHJvdWdoTWF0cml4KTsKICAgICBvdmVybGFwUmVzdWx0ID0gQ0NMYXllclNvcnRlcjo6Y2hlY2tP
dmVybGFwKCZmcm9udEZhY2UsICZyb3RhdGVkRmFjZSwgelRocmVzaG9sZCwgd2VpZ2h0KTsKICAg
ICBFWFBFQ1RfTkUoQ0NMYXllclNvcnRlcjo6Tm9uZSwgb3ZlcmxhcFJlc3VsdCk7CkBAIC0xMzYs
MTUgKzE0MCwxNSBAQCBURVNUKENDTGF5ZXJTb3J0ZXJUZXN0LCBMYXllcnNBdEFuZ2xlT3Zlcmxh
cCkKICAgICAvLyBDIGlzIGluIGZyb250IG9mIEEgYW5kIGJlaGluZCBCIChub3Qgd2hhdCB5b3Un
ZCBleHBlY3QgYnkgY29tcGFyaW5nIGNlbnRlcnMpLgogICAgIC8vIEEgYW5kIEIgZG9uJ3Qgb3Zl
cmxhcCwgc28gdGhleSdyZSBpbmNvbXBhcmFibGUuCiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCB0cmFuc2Zvcm1BOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybUE7CiAg
ICAgdHJhbnNmb3JtQS50cmFuc2xhdGUzZCgtNiwgMCwgMSk7CiAgICAgQ0NMYXllclNvcnRlcjo6
TGF5ZXJTaGFwZSBsYXllckEoOCwgMjAsIHRyYW5zZm9ybUEpOwogCi0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggdHJhbnNmb3JtQjsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zv
cm1COwogICAgIHRyYW5zZm9ybUIudHJhbnNsYXRlM2QoNiwgMCwgLTEpOwogICAgIENDTGF5ZXJT
b3J0ZXI6OkxheWVyU2hhcGUgbGF5ZXJCKDgsIDIwLCB0cmFuc2Zvcm1CKTsKIAotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybUM7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
dHJhbnNmb3JtQzsKICAgICB0cmFuc2Zvcm1DLnJvdGF0ZTNkKDAsIDEsIDAsIDQwKTsKICAgICBD
Q0xheWVyU29ydGVyOjpMYXllclNoYXBlIGxheWVyQyg4LCAyMCwgdHJhbnNmb3JtQyk7CiAKQEAg
LTE2NywxMCArMTcxLDEwIEBAIFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIExheWVyc1VuZGVyUGF0
aG9sb2dpY2FsUGVyc3BlY3RpdmVUcmFuc2Zvcm0pCiAgICAgLy8gd2hlcmUgdyA8IDAuIElmIHRo
ZSBjb2RlIHVzZXMgdGhlIGludmFsaWQgdmFsdWUsIGl0IHdpbGwgdGhpbmsgdGhhdCBhIGxheWVy
IGhhcwogICAgIC8vIGRpZmZlcmVudCBib3VuZHMgdGhhbiBpdCByZWFsbHkgZG9lcywgd2hpY2gg
Y2FuIGNhdXNlIHRoaW5ncyB0byBzb3J0IGluY29ycmVjdGx5LgogCi0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggcGVyc3BlY3RpdmVNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
cGVyc3BlY3RpdmVNYXRyaXg7CiAgICAgcGVyc3BlY3RpdmVNYXRyaXguYXBwbHlQZXJzcGVjdGl2
ZSgxKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybUE7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtQTsKICAgICB0cmFuc2Zvcm1BLnRyYW5zbGF0ZTNk
KC0xNSwgMCwgLTIpOwogICAgIENDTGF5ZXJTb3J0ZXI6OkxheWVyU2hhcGUgbGF5ZXJBKDEwLCAx
MCwgcGVyc3BlY3RpdmVNYXRyaXggKiB0cmFuc2Zvcm1BKTsKIApAQCAtMTc4LDcgKzE4Miw3IEBA
IFRFU1QoQ0NMYXllclNvcnRlclRlc3QsIExheWVyc1VuZGVyUGF0aG9sb2dpY2FsUGVyc3BlY3Rp
dmVUcmFuc2Zvcm0pCiAgICAgLy8gdmlzaWJsZSBvbiB0aGUgbGVmdCBoYWxmIG9mIHRoZSBwcm9q
ZWN0aW9uIHBsYW5lLCBpbiBmcm9udCBvZiBsYXllckEuIFdoZW4gaXQgaXMKICAgICAvLyBub3Qg
Y2xpcHBlZCwgaXRzIGJvdW5kcyB3aWxsIGFjdHVhbGx5IGluY29ycmVjdGx5IGFwcGVhciBtdWNo
IHNtYWxsZXIgYW5kIHRoZQogICAgIC8vIGNvcnJlY3Qgc29ydGluZyBkZXBlbmRlbmN5IHdpbGwg
bm90IGJlIGZvdW5kLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybUI7CisgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtQjsKICAgICB0cmFuc2Zvcm1CLnRyYW5z
bGF0ZTNkKDAsIDAsIDAuNyk7CiAgICAgdHJhbnNmb3JtQi5yb3RhdGUzZCgwLCA0NSwgMCk7CiAg
ICAgQ0NMYXllclNvcnRlcjo6TGF5ZXJTaGFwZSBsYXllckIoMTAsIDEwLCBwZXJzcGVjdGl2ZU1h
dHJpeCAqIHRyYW5zZm9ybUIpOwpAQCAtMjE2LDkgKzIyMCw5IEBAIFRFU1QoQ0NMYXllclNvcnRl
clRlc3QsIHZlcmlmeUV4aXN0aW5nT3JkZXJpbmdQcmVzZXJ2ZWRXaGVuTm9aRGlmZikKICAgICBP
d25QdHI8Q0NMYXllckltcGw+IGxheWVyNCA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoNCk7CiAgICAg
T3duUHRyPENDTGF5ZXJJbXBsPiBsYXllcjUgPSBDQ0xheWVySW1wbDo6Y3JlYXRlKDUpOwogCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggQmVoaW5kTWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IEJlaGluZE1hdHJpeDsKICAgICBCZWhpbmRNYXRyaXgudHJhbnNsYXRlM2QoMCwg
MCwgMik7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggRnJvbnRNYXRyaXg7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggRnJvbnRNYXRyaXg7CiAgICAgRnJvbnRNYXRyaXgudHJhbnNsYXRl
M2QoMCwgMCwgMSk7CiAKICAgICBsYXllcjEtPnNldEJvdW5kcyhJbnRTaXplKDEwLCAxMCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdC5jcHAKaW5kZXggMWMwMWEwY2Q0ODUzYTRhM2Q5NGNjMjEyOWQzN2FlZjY4
MjcxN2QzZS4uZmNlOTA0NmM3ZWIwYzUzNjg4NzliNzI3OWVmY2RhYzZkNzhmZWFjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RDb21tb25U
ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9z
dENvbW1vblRlc3QuY3BwCkBAIC0yOSwyMCArMjksMjEgQEAKICNpbmNsdWRlICJDQ0FuaW1hdGlv
blRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIKICNpbmNs
dWRlICJMYXllckNocm9taXVtLmgiCi0jaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIK
ICNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJjYy9D
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImNjL0NDTWF0aFV0aWwuaCIK
IAogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7Cit1c2luZyBXZWJLaXQ6
OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgewogCi12b2lkIHNldExheWVy
UHJvcGVydGllc0ZvclRlc3RpbmcoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBzdWJs
YXllclRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yLCBjb25zdCBGbG9hdFBvaW50
JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBib29sIHByZXNlcnZlczNEKQordm9p
ZCBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKExheWVyQ2hyb21pdW0qIGxheWVyLCBjb25z
dCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgc3VibGF5ZXJUcmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIGFuY2hvciwg
Y29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBw
cmVzZXJ2ZXMzRCkKIHsKICAgICBsYXllci0+c2V0VHJhbnNmb3JtKHRyYW5zZm9ybSk7CiAgICAg
bGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKHN1YmxheWVyVHJhbnNmb3JtKTsKQEAgLTU0LDE2
ICs1NSwxNiBAQCB2b2lkIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoTGF5ZXJDaHJvbWl1
bSogbGF5ZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cgogCiB2b2lkIGV4ZWN1dGVDYWxjdWxh
dGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkoTGF5ZXJDaHJvbWl1bSogcm9vdExheWVyKQog
ewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFZlY3RvcjxSZWZQdHI8TGF5ZXJD
aHJvbWl1bT4gPiBkdW1teVJlbmRlclN1cmZhY2VMYXllckxpc3Q7CiAgICAgVmVjdG9yPFJlZlB0
cjxMYXllckNocm9taXVtPiA+IGR1bW15TGF5ZXJMaXN0OwogICAgIGludCBkdW1teU1heFRleHR1
cmVTaXplID0gNTEyOwogICAgIENDTGF5ZXJUcmVlSG9zdENvbW1vbjo6Y2FsY3VsYXRlRHJhd1Ry
YW5zZm9ybXNBbmRWaXNpYmlsaXR5KHJvb3RMYXllciwgcm9vdExheWVyLCBpZGVudGl0eU1hdHJp
eCwgaWRlbnRpdHlNYXRyaXgsIGR1bW15UmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZHVtbXlMYXll
ckxpc3QsIGR1bW15TWF4VGV4dHVyZVNpemUpOwogfQogCi1UcmFuc2Zvcm1hdGlvbk1hdHJpeCBy
ZW1vdmUzRENvbXBvbmVudE9mTWF0cml4KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQp
CitXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZW1vdmUzRENvbXBvbmVudE9mTWF0cml4KGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQpCiB7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggcmV0ID0gbWF0OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHJldCA9IG1hdDsKICAg
ICByZXQuc2V0TTEzKDApOwogICAgIHJldC5zZXRNMjMoMCk7CiAgICAgcmV0LnNldE0zMSgwKTsK
QEAgLTk4LDcgKzk5LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlU
cmFuc2Zvcm1zRm9yTm9PcExheWVyKQogICAgIHBhcmVudC0+YWRkQ2hpbGQoY2hpbGQpOwogICAg
IGNoaWxkLT5hZGRDaGlsZChncmFuZENoaWxkKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0
cml4OwogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcocGFyZW50LmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEZsb2F0
UG9pbnQoMC4wZiwgMC4wZiksIEludFNpemUoMCwgMCksIGZhbHNlKTsKICAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIElu
dFNpemUoMCwgMCksIGZhbHNlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGdy
YW5kQ2hpbGQuZ2V0KCksIGlkZW50aXR5TWF0cml4LCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2lu
dCgwLjBmLCAwLjBmKSwgRmxvYXRQb2ludCgwLjBmLCAwLjBmKSwgSW50U2l6ZSgwLCAwKSwgZmFs
c2UpOwpAQCAtMTIwLDEyICsxMjEsMTIgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0
LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlTGF5ZXIpCiAgICAgLy8gdmFsdWUgb2YgTGF5ZXJD
aHJvbWl1bTo6cG9zaXRpb24oKSBjaGFuZ2VzIGlmIHRoZSBhbmNob3IgY2hhbmdlcywgZXZlbiB0
aG91Z2ggdGhlIGxheWVyIGlzIG5vdCBhY3R1YWxseSBsb2NhdGVkIGluIGEKICAgICAvLyBkaWZm
ZXJlbnQgcG9zaXRpb24uIFdoZW4gd2UgaW5pdGlhbGl6ZSBsYXllcnMgZm9yIHRlc3RpbmcgaGVy
ZSwgd2UgbmVlZCB0byBpbml0aWFsaXplIHRoYXQgdW5pbnR1dGl2ZSBwb3NpdGlvbiB2YWx1ZS4K
IAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVt
PiBsYXllciA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgIGxheWVyLT5jcmVhdGVSZW5k
ZXJTdXJmYWNlKCk7CiAKICAgICAvLyBDYXNlIDE6IHNldHRpbmcgdGhlIHN1YmxheWVyIHRyYW5z
Zm9ybSBzaG91bGQgbm90IGFmZmVjdCB0aGlzIGxheWVyJ3MgZHJhdyB0cmFuc2Zvcm0gb3Igc2Ny
ZWVuLXNwYWNlIHRyYW5zZm9ybS4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcmJpdHJhcnlU
cmFuc2xhdGlvbjsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhcmJpdHJhcnlUcmFuc2xh
dGlvbjsKICAgICBhcmJpdHJhcnlUcmFuc2xhdGlvbi50cmFuc2xhdGUoMTAuMCwgMjAuMCk7CiAg
ICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRy
aXgsIGFyYml0cmFyeVRyYW5zbGF0aW9uLCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBGbG9hdFBv
aW50KDAuMGYsIDAuMGYpLCBJbnRTaXplKDAsIDApLCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNhbGN1
bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0eShsYXllci5nZXQoKSk7CkBAIC0xMzQsNyAr
MTM1LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1z
Rm9yU2luZ2xlTGF5ZXIpCiAKICAgICAvLyBDYXNlIDI6IHNldHRpbmcgdGhlIGJvdW5kcyBvZiB0
aGUgbGF5ZXIgc2hvdWxkIHJlc3VsdCBpbiBhIGRyYXcgdHJhbnNmb3JtIHRoYXQgdHJhbnNsYXRl
cyB0byBoYWxmIHRoZSB3aWR0aCBhbmQgaGVpZ2h0LgogICAgIC8vICAgICAgICAgVGhlIHNjcmVl
bi1zcGFjZSB0cmFuc2Zvcm0gc2hvdWxkIHJlbWFpbiBhcyB0aGUgaWRlbnRpdHksIGJlY2F1c2Ug
aXQgZG9lcyBub3QgZGVhbCB3aXRoIHRyYW5zZm9ybWluZyB0by9mcm9tIHRoZSBjZW50ZXIgb2Yg
dGhlIGxheWVyLgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zbGF0aW9uVG9DZW50ZXI7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNsYXRpb25Ub0NlbnRlcjsKICAgICB0
cmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg1LjAsIDYuMCk7CiAgICAgc2V0TGF5ZXJQcm9w
ZXJ0aWVzRm9yVGVzdGluZyhsYXllci5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0
cml4LCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBJbnRT
aXplKDEwLCAxMiksIGZhbHNlKTsKICAgICBleGVjdXRlQ2FsY3VsYXRlRHJhd1RyYW5zZm9ybXNB
bmRWaXNpYmlsaXR5KGxheWVyLmdldCgpKTsKQEAgLTE0OCw3ICsxNDksNyBAQCBURVNUKENDTGF5
ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNGb3JTaW5nbGVMYXllcikKICAg
ICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGlkZW50aXR5TWF0cml4LCBsYXllci0+
c2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSk7CiAKICAgICAvLyBDYXNlIDQ6IEEgY2hhbmdlIGluICJh
Y3R1YWwiIHBvc2l0aW9uIGFmZmVjdHMgYm90aCB0aGUgZHJhdyB0cmFuc2Zvcm0gYW5kIHNjcmVl
biBzcGFjZSB0cmFuc2Zvcm0uCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcG9zaXRpb25UcmFu
c2Zvcm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcG9zaXRpb25UcmFuc2Zvcm07CiAg
ICAgcG9zaXRpb25UcmFuc2Zvcm0udHJhbnNsYXRlKDAuMCwgMS4yKTsKICAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMC4yNWYsIDAuMjVmKSwgRmxvYXRQb2ludCgyLjVmLCA0LjJmKSwg
SW50U2l6ZSgxMCwgMTIpLCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zv
cm1zQW5kVmlzaWJpbGl0eShsYXllci5nZXQoKSk7CkBAIC0xNTcsNyArMTU4LDcgQEAgVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlTGF5ZXIp
CiAKICAgICAvLyBDYXNlIDU6IEluIHRoZSBjb3JyZWN0IHNlcXVlbmNlIG9mIHRyYW5zZm9ybXMs
IHRoZSBsYXllciB0cmFuc2Zvcm0gc2hvdWxkIHByZS1tdWx0aXBseSB0aGUgdHJhbnNsYXRpb25U
b0NlbnRlci4gVGhpcyBpcyBlYXNpbHkgdGVzdGVkIGJ5CiAgICAgLy8gICAgICAgICB1c2luZyBh
IHNjYWxlIHRyYW5zZm9ybSwgYmVjYXVzZSBzY2FsZSBhbmQgdHJhbnNsYXRpb24gYXJlIG5vdCBj
b21tdXRhdGl2ZS4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKKyAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKICAgICBsYXllclRyYW5z
Zm9ybS5zY2FsZTNkKDIuMCwgMi4wLCAxLjApOwogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRl
c3RpbmcobGF5ZXIuZ2V0KCksIGxheWVyVHJhbnNmb3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQ
b2ludCgwLjBmLCAwLjBmKSwgRmxvYXRQb2ludCgwLjBmLCAwLjBmKSwgSW50U2l6ZSgxMCwgMTIp
LCBmYWxzZSk7CiAgICAgZXhlY3V0ZUNhbGN1bGF0ZURyYXdUcmFuc2Zvcm1zQW5kVmlzaWJpbGl0
eShsYXllci5nZXQoKSk7CkBAIC0xNjUsOSArMTY2LDkgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RD
b21tb25UZXN0LCB2ZXJpZnlUcmFuc2Zvcm1zRm9yU2luZ2xlTGF5ZXIpCiAgICAgRVhQRUNUX1RS
QU5TRk9STUFUSU9OX01BVFJJWF9FUShsYXllclRyYW5zZm9ybSwgbGF5ZXItPnNjcmVlblNwYWNl
VHJhbnNmb3JtKCkpOwogCiAgICAgLy8gQ2FzZSA2OiBUaGUgbGF5ZXIgdHJhbnNmb3JtIHNob3Vs
ZCBvY2N1ciB3aXRoIHJlc3BlY3QgdG8gdGhlIGFuY2hvciBwb2ludC4KLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0cmFuc2xhdGlvblRvQW5jaG9yOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zbGF0aW9uVG9BbmNob3I7CiAgICAgdHJhbnNsYXRpb25Ub0FuY2hvci50cmFuc2xh
dGUoNS4wLCAwLjApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGV4cGVjdGVkUmVzdWx0ID0g
dHJhbnNsYXRpb25Ub0FuY2hvciAqIGxheWVyVHJhbnNmb3JtICogdHJhbnNsYXRpb25Ub0FuY2hv
ci5pbnZlcnNlKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZXhwZWN0ZWRSZXN1bHQg
PSB0cmFuc2xhdGlvblRvQW5jaG9yICogbGF5ZXJUcmFuc2Zvcm0gKiB0cmFuc2xhdGlvblRvQW5j
aG9yLmludmVyc2UoKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKGxheWVyLmdl
dCgpLCBsYXllclRyYW5zZm9ybSwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMC41ZiwgMC4w
ZiksIEZsb2F0UG9pbnQoNS4wZiwgMC4wZiksIEludFNpemUoMTAsIDEyKSwgZmFsc2UpOwogICAg
IGV4ZWN1dGVDYWxjdWxhdGVEcmF3VHJhbnNmb3Jtc0FuZFZpc2liaWxpdHkobGF5ZXIuZ2V0KCkp
OwogICAgIEVYUEVDVF9UUkFOU0ZPUk1BVElPTl9NQVRSSVhfRVEoZXhwZWN0ZWRSZXN1bHQgKiB0
cmFuc2xhdGlvblRvQ2VudGVyLCBsYXllci0+ZHJhd1RyYW5zZm9ybSgpKTsKQEAgLTE4NSw3ICsx
ODYsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNG
b3JTaW5nbGVMYXllcikKIAogVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlU
cmFuc2Zvcm1zRm9yU2ltcGxlSGllcmFyY2h5KQogewotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGlkZW50aXR5TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0
cml4OwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVt
OjpjcmVhdGUoKTsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZCA9IExheWVy
Q2hyb21pdW06OmNyZWF0ZSgpOwpAQCAtMTk0LDcgKzE5NSw3IEBAIFRFU1QoQ0NMYXllclRyZWVI
b3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKICAgICBj
aGlsZC0+YWRkQ2hpbGQoZ3JhbmRDaGlsZCk7CiAKICAgICAvLyBDYXNlIDE6IHBhcmVudCdzIGFu
Y2hvclBvaW50IHNob3VsZCBub3QgYWZmZWN0IGNoaWxkIG9yIGdyYW5kQ2hpbGQuCi0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyLCBncmFuZENoaWxkVHJh
bnNsYXRpb25Ub0NlbnRlcjsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5z
bGF0aW9uVG9DZW50ZXIsIGdyYW5kQ2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyOwogICAgIGNoaWxk
VHJhbnNsYXRpb25Ub0NlbnRlci50cmFuc2xhdGUoOC4wLCA5LjApOwogICAgIGdyYW5kQ2hpbGRU
cmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSgzOC4wLCAzOS4wKTsKICAgICBzZXRMYXllclBy
b3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAuMjVmLCAwLjI1ZiksIEZsb2F0UG9pbnQoMi41ZiwgMy4wZiks
IEludFNpemUoMTAsIDEyKSwgZmFsc2UpOwpAQCAtMjA3LDcgKzIwOCw3IEBAIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkK
ICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGlkZW50aXR5TWF0cml4LCBncmFu
ZENoaWxkLT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgpKTsKIAogICAgIC8vIENhc2UgMjogcGFyZW50
J3MgcG9zaXRpb24gYWZmZWN0cyBjaGlsZCBhbmQgZ3JhbmRDaGlsZC4KLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBwYXJlbnRQb3NpdGlvblRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBwYXJlbnRQb3NpdGlvblRyYW5zZm9ybTsKICAgICBwYXJlbnRQb3NpdGlvblRyYW5z
Zm9ybS50cmFuc2xhdGUoMC4wLCAxLjIpOwogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3Rp
bmcocGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMC4yNWYsIDAuMjVmKSwgRmxvYXRQb2ludCgyLjVmLCA0LjJmKSwgSW50U2l6ZSgxMCwgMTIp
LCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBG
bG9hdFBvaW50KDAuMGYsIDAuMGYpLCBJbnRTaXplKDE2LCAxOCksIGZhbHNlKTsKQEAgLTIxOSwx
MSArMjIwLDExIEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNm
b3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKICAgICBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklY
X0VRKHBhcmVudFBvc2l0aW9uVHJhbnNmb3JtLCBncmFuZENoaWxkLT5zY3JlZW5TcGFjZVRyYW5z
Zm9ybSgpKTsKIAogICAgIC8vIENhc2UgMzogcGFyZW50J3MgbG9jYWwgdHJhbnNmb3JtIGFmZmVj
dHMgY2hpbGQgYW5kIGdyYW5kY2hpbGQKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRM
YXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRMYXllclRy
YW5zZm9ybTsKICAgICBwYXJlbnRMYXllclRyYW5zZm9ybS5zY2FsZTNkKDIuMCwgMi4wLCAxLjAp
OwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3I7Cisg
ICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvcjsKICAg
ICBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yLnRyYW5zbGF0ZSgyLjUsIDMuMCk7Ci0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggcGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtID0gcGFyZW50VHJhbnNs
YXRpb25Ub0FuY2hvciAqIHBhcmVudExheWVyVHJhbnNmb3JtICogcGFyZW50VHJhbnNsYXRpb25U
b0FuY2hvci5pbnZlcnNlKCk7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50Q29t
cG9zaXRlVHJhbnNmb3JtID0gcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvciAqIHBhcmVudExheWVy
VHJhbnNmb3JtICogcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNlKCk7CiAgICAgc2V0
TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIHBhcmVudExheWVyVHJhbnNm
b3JtLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLjI1ZiwgMC4yNWYpLCBGbG9hdFBvaW50
KDIuNWYsIDMuMGYpLCBJbnRTaXplKDEwLCAxMiksIGZhbHNlKTsKICAgICBzZXRMYXllclByb3Bl
cnRpZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEludFNp
emUoMTYsIDE4KSwgZmFsc2UpOwogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoZ3Jh
bmRDaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAuMGYsIDAuMGYpLCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBJbnRTaXplKDc2LCA3OCksIGZh
bHNlKTsKQEAgLTIzNywxNCArMjM4LDE0IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclNpbXBsZUhpZXJhcmNoeSkKICAgICAvLyAgICAgICAgIHNj
YWxpbmcgaXMgdXNlZCBoZXJlIGFnYWluIHNvIHRoYXQgdGhlIGNvcnJlY3Qgc2VxdWVuY2Ugb2Yg
dHJhbnNmb3JtcyBpcyBwcm9wZXJseSB0ZXN0ZWQuCiAgICAgLy8gICAgICAgICBOb3RlIHRoYXQg
cHJlc2VydmVzM0QgaXMgZmFsc2UsIGJ1dCB0aGUgc3VibGF5ZXIgbWF0cml4IHNob3VsZCByZXRh
aW4gaXRzIDNEIHByb3BlcnRpZXMgd2hlbiBnaXZlbiB0byBjaGlsZC4KICAgICAvLyAgICAgICAg
IEJ1dCB0aGVuLCB0aGUgY2hpbGQgYWxzbyBkb2VzIG5vdCBwcmVzZXJ2ZTNELiBXaGVuIGl0IGdp
dmVzIGl0cyBoaWVyYXJjaHkgdG8gdGhlIGdyYW5kQ2hpbGQsIGl0IHNob3VsZCBiZSBmbGF0dGVu
ZWQgdG8gMkQuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7CiAgICAg
cGFyZW50U3VibGF5ZXJNYXRyaXguc2NhbGUzZCgxMC4wLCAxMC4wLCAzLjMpOwotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRpb25Ub0NlbnRlcjsKICAgICBwYXJlbnRUcmFu
c2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg1LjAsIDYuMCk7CiAgICAgLy8gU3VibGF5ZXIgbWF0
cml4IGlzIGFwcGxpZWQgdG8gdGhlIGNlbnRlciBvZiB0aGUgcGFyZW50IGxheWVyLgogICAgIHBh
cmVudENvbXBvc2l0ZVRyYW5zZm9ybSA9IHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3IgKiBwYXJl
bnRMYXllclRyYW5zZm9ybSAqIHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3IuaW52ZXJzZSgpCiAg
ICAgICAgICAgICAqIHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXIgKiBwYXJlbnRTdWJsYXllck1h
dHJpeCAqIHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXIuaW52ZXJzZSgpOwotICAgIFRyYW5zZm9y
bWF0aW9uTWF0cml4IGZsYXR0ZW5lZENvbXBvc2l0ZVRyYW5zZm9ybSA9IHJlbW92ZTNEQ29tcG9u
ZW50T2ZNYXRyaXgocGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtKTsKKyAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBmbGF0dGVuZWRDb21wb3NpdGVUcmFuc2Zvcm0gPSByZW1vdmUzRENvbXBvbmVu
dE9mTWF0cml4KHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhwYXJlbnQuZ2V0KCksIHBhcmVudExheWVyVHJhbnNmb3JtLCBwYXJlbnRT
dWJsYXllck1hdHJpeCwgRmxvYXRQb2ludCgwLjI1ZiwgMC4yNWYpLCBGbG9hdFBvaW50KDIuNWYs
IDMuMGYpLCBJbnRTaXplKDEwLCAxMiksIGZhbHNlKTsKICAgICBzZXRMYXllclByb3BlcnRpZXNG
b3JUZXN0aW5nKGNoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZs
b2F0UG9pbnQoMC4wZiwgMC4wZiksIEZsb2F0UG9pbnQoMC4wZiwgMC4wZiksIEludFNpemUoMTYs
IDE4KSwgZmFsc2UpOwogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcoZ3JhbmRDaGls
ZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAuMGYs
IDAuMGYpLCBGbG9hdFBvaW50KDAuMGYsIDAuMGYpLCBJbnRTaXplKDc2LCA3OCksIGZhbHNlKTsK
QEAgLTI3OCwxOCArMjc5LDE4IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5VHJhbnNmb3Jtc0ZvclNpbmdsZVJlbmRlclN1cmZhY2UpCiAgICAgLy8gQ2hpbGQgaXMgc2V0
IHVwIHNvIHRoYXQgYSBuZXcgcmVuZGVyIHN1cmZhY2Ugc2hvdWxkIGJlIGNyZWF0ZWQuCiAgICAg
Y2hpbGQtPnNldE9wYWNpdHkoMC41Zik7CiAKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVu
dGl0eU1hdHJpeDsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRMYXllclRyYW5zZm9y
bTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRMYXllclRyYW5zZm9ybTsKICAgICBwYXJlbnRMYXll
clRyYW5zZm9ybS5zY2FsZTNkKDIuMCwgMi4wLCAxLjApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3I7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvcjsKICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQW5j
aG9yLnRyYW5zbGF0ZSgyLjUsIDMuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50
U3VibGF5ZXJNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50U3VibGF5
ZXJNYXRyaXg7CiAgICAgcGFyZW50U3VibGF5ZXJNYXRyaXguc2NhbGUzZCgxMC4wLCAxMC4wLCAz
LjMpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0aW9uVG9DZW50ZXI7
CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRpb25Ub0NlbnRlcjsK
ICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg1LjAsIDYuMCk7Ci0gICAg
VHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtID0gcGFyZW50VHJh
bnNsYXRpb25Ub0FuY2hvciAqIHBhcmVudExheWVyVHJhbnNmb3JtICogcGFyZW50VHJhbnNsYXRp
b25Ub0FuY2hvci5pbnZlcnNlKCkKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRD
b21wb3NpdGVUcmFuc2Zvcm0gPSBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yICogcGFyZW50TGF5
ZXJUcmFuc2Zvcm0gKiBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yLmludmVyc2UoKQogICAgICAg
ICAgICAgKiBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyICogcGFyZW50U3VibGF5ZXJNYXRyaXgg
KiBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyLmludmVyc2UoKTsKLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBjaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyOwogICAgIGNoaWxkVHJhbnNsYXRpb25Ub0Nl
bnRlci50cmFuc2xhdGUoOC4wLCA5LjApOwogCiAgICAgLy8gQ2hpbGQncyByZW5kZXIgc3VyZmFj
ZSBzaG91bGQgbm90IGV4aXN0IHlldC4KQEAgLTMzMSwyMiArMzMyLDIyIEBAIFRFU1QoQ0NMYXll
clRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VHJhbnNmb3Jtc0ZvclJlcGxpY2EpCiAgICAgLy8g
Q2hpbGQgaXMgc2V0IHVwIHNvIHRoYXQgYSBuZXcgcmVuZGVyIHN1cmZhY2Ugc2hvdWxkIGJlIGNy
ZWF0ZWQuCiAgICAgY2hpbGQtPnNldE9wYWNpdHkoMC41Zik7CiAKLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRM
YXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRMYXllclRyYW5zZm9ybTsKICAg
ICBwYXJlbnRMYXllclRyYW5zZm9ybS5zY2FsZTNkKDIuMCwgMi4wLCAxLjApOwotICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0aW9uVG9BbmNob3I7CisgICAgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvcjsKICAgICBwYXJlbnRUcmFu
c2xhdGlvblRvQW5jaG9yLnRyYW5zbGF0ZSgyLjUsIDMuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcGFyZW50U3VibGF5ZXJNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgg
cGFyZW50U3VibGF5ZXJNYXRyaXg7CiAgICAgcGFyZW50U3VibGF5ZXJNYXRyaXguc2NhbGUzZCgx
MC4wLCAxMC4wLCAzLjMpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRyYW5zbGF0
aW9uVG9DZW50ZXI7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNsYXRp
b25Ub0NlbnRlcjsKICAgICBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyLnRyYW5zbGF0ZSg1LjAs
IDYuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcGFyZW50Q29tcG9zaXRlVHJhbnNmb3Jt
ID0gcGFyZW50VHJhbnNsYXRpb25Ub0FuY2hvciAqIHBhcmVudExheWVyVHJhbnNmb3JtICogcGFy
ZW50VHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNlKCkKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBwYXJlbnRDb21wb3NpdGVUcmFuc2Zvcm0gPSBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9y
ICogcGFyZW50TGF5ZXJUcmFuc2Zvcm0gKiBwYXJlbnRUcmFuc2xhdGlvblRvQW5jaG9yLmludmVy
c2UoKQogICAgICAgICAgICAgKiBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyICogcGFyZW50U3Vi
bGF5ZXJNYXRyaXggKiBwYXJlbnRUcmFuc2xhdGlvblRvQ2VudGVyLmludmVyc2UoKTsKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zbGF0aW9uVG9DZW50ZXI7CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2xhdGlvblRvQ2VudGVyOwogICAgIGNoaWxkVHJh
bnNsYXRpb25Ub0NlbnRlci50cmFuc2xhdGUoOC4wLCA5LjApOwotICAgIFRyYW5zZm9ybWF0aW9u
TWF0cml4IHJlcGxpY2FMYXllclRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCByZXBsaWNhTGF5ZXJUcmFuc2Zvcm07CiAgICAgcmVwbGljYUxheWVyVHJhbnNmb3JtLnNjYWxl
M2QoMy4wLCAzLjAsIDEuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYUNvbXBv
c2l0ZVRyYW5zZm9ybSA9IHBhcmVudENvbXBvc2l0ZVRyYW5zZm9ybSAqIHJlcGxpY2FMYXllclRy
YW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByZXBsaWNhQ29tcG9zaXRlVHJh
bnNmb3JtID0gcGFyZW50Q29tcG9zaXRlVHJhbnNmb3JtICogcmVwbGljYUxheWVyVHJhbnNmb3Jt
OwogCiAgICAgLy8gQ2hpbGQncyByZW5kZXIgc3VyZmFjZSBzaG91bGQgbm90IGV4aXN0IHlldC4K
ICAgICBBU1NFUlRfRkFMU0UoY2hpbGQtPnJlbmRlclN1cmZhY2UoKSk7CkBAIC00MDgsMjAgKzQw
OSwyMCBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVRyYW5zZm9ybXNG
b3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogICAgIC8vCiAgICAgLy8geCBjb21wb25lbnQgdGVz
dHMgdGhhdCBsYXllclRyYW5zZm9ybSBhbmQgc3VibGF5ZXJUcmFuc2Zvcm0gYXJlIGRvbmUgaW4g
dGhlIHJpZ2h0IG9yZGVyICh0cmFuc2xhdGlvbiBhbmQgc2NhbGUgYXJlIG5vbmNvbW11dGF0aXZl
KS4KICAgICAvLyB5IGNvbXBvbmVudCBoYXMgYSB0cmFuc2xhdGlvbiBieSAxLjAgZm9yIGV2ZXJ5
IGFuY2VzdG9yLCB3aGljaCBpbmRpY2F0ZXMgdGhlICJkZXB0aCIgb2YgdGhlIGxheWVyIGluIHRo
ZSBoaWVyYXJjaHkuCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNsYXRpb25Ub0FuY2hv
cjsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2xhdGlvblRvQW5jaG9yOwogICAg
IHRyYW5zbGF0aW9uVG9BbmNob3IudHJhbnNsYXRlKDIuNSwgMC4wKTsKLSAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0cmFuc2xhdGlvblRvQ2VudGVyOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zbGF0aW9uVG9DZW50ZXI7CiAgICAgdHJhbnNsYXRpb25Ub0NlbnRlci50cmFuc2xh
dGUoNS4wLCA1LjApOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwor
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwogICAgIGxheWVyVHJh
bnNmb3JtLnRyYW5zbGF0ZSgxLjAsIDEuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc3Vi
bGF5ZXJUcmFuc2Zvcm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJUcmFu
c2Zvcm07CiAgICAgc3VibGF5ZXJUcmFuc2Zvcm0uc2NhbGUzZCgxMC4wLCAxLjAsIDEuMCk7Ci0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVwbGljYUxheWVyVHJhbnNmb3JtOworICAgIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IHJlcGxpY2FMYXllclRyYW5zZm9ybTsKICAgICByZXBsaWNhTGF5
ZXJUcmFuc2Zvcm0uc2NhbGUzZCgtMi4wLCA1LjAsIDEuMCk7CiAKLSAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBBID0gdHJhbnNsYXRpb25Ub0FuY2hvciAqIGxheWVyVHJhbnNmb3JtICogdHJhbnNs
YXRpb25Ub0FuY2hvci5pbnZlcnNlKCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggQiA9IHRy
YW5zbGF0aW9uVG9DZW50ZXIgKiBzdWJsYXllclRyYW5zZm9ybSAqIHRyYW5zbGF0aW9uVG9DZW50
ZXIuaW52ZXJzZSgpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IFIgPSBBICogdHJhbnNsYXRp
b25Ub0FuY2hvciAqIHJlcGxpY2FMYXllclRyYW5zZm9ybSAqIHRyYW5zbGF0aW9uVG9BbmNob3Iu
aW52ZXJzZSgpOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IEEgPSB0cmFuc2xhdGlvblRv
QW5jaG9yICogbGF5ZXJUcmFuc2Zvcm0gKiB0cmFuc2xhdGlvblRvQW5jaG9yLmludmVyc2UoKTsK
KyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBCID0gdHJhbnNsYXRpb25Ub0NlbnRlciAqIHN1
YmxheWVyVHJhbnNmb3JtICogdHJhbnNsYXRpb25Ub0NlbnRlci5pbnZlcnNlKCk7CisgICAgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXggUiA9IEEgKiB0cmFuc2xhdGlvblRvQW5jaG9yICogcmVwbGlj
YUxheWVyVHJhbnNmb3JtICogdHJhbnNsYXRpb25Ub0FuY2hvci5pbnZlcnNlKCk7CiAKICAgICBz
ZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHBhcmVudC5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0s
IHN1YmxheWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDAuMjVmLCAwLjBmKSwgRmxvYXRQb2ludCgy
LjVmLCAwLjBmKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0
aWVzRm9yVGVzdGluZyhyZW5kZXJTdXJmYWNlMS5nZXQoKSwgbGF5ZXJUcmFuc2Zvcm0sIHN1Ymxh
eWVyVHJhbnNmb3JtLCBGbG9hdFBvaW50KDAuMjVmLCAwLjBmKSwgRmxvYXRQb2ludCgyLjVmLCAw
LjBmKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CkBAIC01MzEsNyArNTMyLDcgQEAgVEVTVChD
Q0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlSZW5kZXJTdXJmYWNlTGlzdEZvckNsaXBM
YXllcikKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGNo
aWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50KCkp
OwogICAgIHJlbmRlclN1cmZhY2UxLT5zZXRPcGFjaXR5KDAuOWYpOwogCi0gICAgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVz
dGluZyhyZW5kZXJTdXJmYWNlMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4
LCBGbG9hdFBvaW50Ojp6ZXJvKCksIEZsb2F0UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgxMCwgMTAp
LCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhjaGlsZC5nZXQoKSwg
aWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50Ojp6ZXJvKCksIEZsb2F0
UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CiAKQEAgLTU2MCw3ICs1NjEs
NyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlmeVJlbmRlclN1cmZhY2VM
aXN0Rm9yVHJhbnNwYXJlbnRDaGlsZCkKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3Jj
ZWREcmF3c0NvbnRlbnQ+IGNoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9y
Y2VkRHJhd3NDb250ZW50KCkpOwogICAgIHJlbmRlclN1cmZhY2UxLT5zZXRPcGFjaXR5KDApOwog
Ci0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgY29u
c3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgc2V0TGF5ZXJQ
cm9wZXJ0aWVzRm9yVGVzdGluZyhyZW5kZXJTdXJmYWNlMS5nZXQoKSwgaWRlbnRpdHlNYXRyaXgs
IGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50Ojp6ZXJvKCksIEZsb2F0UG9pbnQ6Onplcm8oKSwg
SW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CiAgICAgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGlu
ZyhjaGlsZC5nZXQoKSwgaWRlbnRpdHlNYXRyaXgsIGlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
Ojp6ZXJvKCksIEZsb2F0UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgxMCwgMTApLCBmYWxzZSk7CiAK
QEAgLTU4OCw3ICs1ODksNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZlcmlm
eUZvcmNlUmVuZGVyU3VyZmFjZSkKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWRE
cmF3c0NvbnRlbnQ+IGNoaWxkID0gYWRvcHRSZWYobmV3IExheWVyQ2hyb21pdW1XaXRoRm9yY2Vk
RHJhd3NDb250ZW50KCkpOwogICAgIHJlbmRlclN1cmZhY2UxLT5zZXRGb3JjZVJlbmRlclN1cmZh
Y2UodHJ1ZSk7CiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJp
eDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAg
ICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKHJlbmRlclN1cmZhY2UxLmdldCgpLCBpZGVu
dGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQ6Onplcm8oKSwgRmxvYXRQb2lu
dDo6emVybygpLCBJbnRTaXplKDEwLCAxMCksIGZhbHNlKTsKICAgICBzZXRMYXllclByb3BlcnRp
ZXNGb3JUZXN0aW5nKGNoaWxkLmdldCgpLCBpZGVudGl0eU1hdHJpeCwgaWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQ6Onplcm8oKSwgRmxvYXRQb2ludDo6emVybygpLCBJbnRTaXplKDEwLCAxMCks
IGZhbHNlKTsKIApAQCAtNjI4LDcgKzYyOSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9u
VGVzdCwgdmVyaWZ5Q2xpcFJlY3RDdWxsc1JlbmRlclN1cmZhY2VzKQogICAgIC8vIGNsaXBSZWN0
LCBhbmQgdGhleSBzaG91bGQgbmV2ZXIgZ2V0IHNjaGVkdWxlZCBvbiB0aGUgbGlzdCBvZiByZW5k
ZXJTdXJmYWNlcy4KICAgICAvLwogCi0gICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRl
bnRpdHlNYXRyaXg7CisgICAgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlN
YXRyaXg7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06
OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBjaGlsZCA9IExheWVyQ2hyb21p
dW06OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxMYXllckNocm9taXVtPiBncmFuZENoaWxkID0gTGF5
ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC02NzcsNyArNjc4LDcgQEAgVEVTVChDQ0xheWVyVHJl
ZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlDbGlwUmVjdEN1bGxzUmVuZGVyU3VyZmFjZXNDcmFzaFJl
cHJvKQogICAgIC8vIFRoaXMgaXMgYSBzaW1pbGFyIHNpdHVhdGlvbiBhcyB2ZXJpZnlDbGlwUmVj
dEN1bGxzUmVuZGVyU3VyZmFjZXMsIGV4Y2VwdCB0aGF0CiAgICAgLy8gaXQgcmVwcm9kdWNlcyBh
IGNyYXNoIGJ1ZyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFp
bD9pZD0xMDY3MzQuCiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1h
dHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRl
KCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3Jl
YXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKQEAgLTc0OSw3ICs3NTAsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENv
bW1vblRlc3QsIHZlcmlmeUNsaXBSZWN0Q3VsbHNTdXJmYWNlV2l0aG91dFZpc2libGVDb250ZW50
KQogICAgIC8vIHRoaXMgY2xpcHBpbmcgc2hvdWxkIGJlIGF2b2lkZWQgYW5kIHdlIHNob3VsZCBr
ZWVwIHRoZSBncmFuZENoaWxkCiAgICAgLy8gaW4gdGhlIHJlbmRlclN1cmZhY2VMYXllckxpc3Qu
CiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBj
b25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVm
UHRyPExheWVyQ2hyb21pdW0+IGNoaWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUo
KTsKQEAgLTgxMyw3ICs4MTQsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZl
cmlmeUNsaXBSZWN0SXNQcm9wYWdhdGVkQ29ycmVjdGx5VG9MYXllcnMpCiAgICAgLy8gICBncmFu
ZENoaWxkNCAtIG91dHNpZGUgcGFyZW50J3MgY2xpcFJlY3QsIGFuZCBtYXNrc1RvQm91bmRzOyB0
aGUgY2xpcFJlY3Qgc2hvdWxkIGJlIGVtcHR5LgogICAgIC8vCiAKLSAgICBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50
ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+IGNo
aWxkID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21pdW0+
IGdyYW5kQ2hpbGQxID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CkBAIC04NzEsNyArODcyLDcg
QEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlDbGlwUmVjdElzUHJvcGFn
YXRlZENvcnJlY3RseVRvU3VyZmFjZXMpCiAgICAgLy8gaGF2ZSBhIGNsaXBSZWN0IG9mIHRoZWly
IG93biBsYXllciBib3VuZHMsIGhvd2V2ZXIsIGlmIG1hc2tzVG9Cb3VuZHMgd2FzIHRydWUuCiAg
ICAgLy8KIAotICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4Owor
ICAgIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJl
ZlB0cjxMYXllckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAg
ICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gY2hpbGQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsK
ICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4gZ3JhbmRDaGlsZDEgPSBMYXllckNocm9taXVtOjpj
cmVhdGUoKTsKQEAgLTk3Miw5ICs5NzMsOSBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRl
c3QsIHZlcmlmeUFuaW1hdGlvbnNGb3JSZW5kZXJTdXJmYWNlSGllcmFyY2h5KQogICAgIC8vIEFs
c28gcHV0IGFuIGFuaW1hdGVkIG9wYWNpdHkgb24gYSBsYXllciB3aXRob3V0IGRlc2NlbmRhbnRz
LgogICAgIGFkZE9wYWNpdHlUcmFuc2l0aW9uVG9Db250cm9sbGVyKCpncmFuZENoaWxkT2ZSb290
LT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKSwgMTAsIDEsIDAsIGZhbHNlKTsKIAotICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4IGxheWVyVHJhbnNmb3JtOwogICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgxLjAs
IDEuMCk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJUcmFuc2Zvcm07CisgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggc3VibGF5ZXJUcmFuc2Zvcm07CiAgICAgc3VibGF5ZXJU
cmFuc2Zvcm0uc2NhbGUzZCgxMC4wLCAxLjAsIDEuMCk7CiAKICAgICAvLyBJbiBjb21iaW5hdGlv
biB3aXRoIGRlc2NlbmRhbnREcmF3c0NvbnRlbnQgYW5kIG1hc2tzVG9Cb3VuZHMsIGFuIGFuaW1h
dGVkIHRyYW5zZm9ybSBmb3JjZXMgdGhlIGxheWVyIHRvIGhhdmUgYSBuZXcgcmVuZGVyU3VyZmFj
ZS4KQEAgLTEwODksNyArMTA5MCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwg
dmVyaWZ5VmlzaWJsZVJlY3RGb3JJZGVudGl0eVRyYW5zZm9ybSkKICAgICAvLyBUZXN0IHRoZSBj
YWxjdWxhdGVWaXNpYmxlUmVjdCgpIGZ1bmN0aW9uIHdvcmtzIGNvcnJlY3RseSBmb3IgaWRlbnRp
dHkgdHJhbnNmb3Jtcy4KIAogICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0
KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7Ci0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm07CiAKICAgICAvLyBDYXNlIDE6IExheWVyIGlzIGNv
bnRhaW5lZCB3aXRoaW4gdGhlIHN1cmZhY2UuCiAgICAgSW50UmVjdCBsYXllckNvbnRlbnRSZWN0
ID0gSW50UmVjdChJbnRQb2ludCgxMCwgMTApLCBJbnRTaXplKDMwLCAzMCkpOwpAQCAtMTExNSw3
ICsxMTE2LDcgQEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlWaXNpYmxl
UmVjdEZvclRyYW5zbGF0aW9ucykKIAogICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBJ
bnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgSW50UmVjdCBs
YXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMCwgMzAp
KTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKKyAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKIAogICAg
IC8vIENhc2UgMTogTGF5ZXIgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgc3VyZmFjZS4KICAgICBs
YXllclRvU3VyZmFjZVRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKQEAgLTExNDUsNyArMTE0Niw3
IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3Iy
RFJvdGF0aW9ucykKIAogICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KElu
dFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgSW50UmVjdCBsYXllckNvbnRl
bnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZSgzMCwgMzApKTsKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKKyAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3VyZmFjZVRyYW5zZm9ybTsKIAogICAgIC8vIENhc2Ug
MTogTGF5ZXIgaXMgY29udGFpbmVkIHdpdGhpbiB0aGUgc3VyZmFjZS4KICAgICBsYXllclRvU3Vy
ZmFjZVRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKQEAgLTExOTIsNyArMTE5Myw3IEBAIFRFU1Qo
Q0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3IzZE9ydGhvZ3Jh
cGhpY1RyYW5zZm9ybSkKIAogICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0
KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgSW50UmVjdCBsYXllckNv
bnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAsIDEwMCkpOwot
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVG9TdXJmYWNlVHJhbnNmb3JtOworICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVG9TdXJmYWNlVHJhbnNmb3JtOwogCiAgICAgLy8g
Q2FzZSAxOiBPcnRob2dyYXBoaWMgcHJvamVjdGlvbiBvZiBhIGxheWVyIHJvdGF0ZWQgYWJvdXQg
eS1heGlzIGJ5IDQ1IGRlZ3JlZXMsIHNob3VsZCBiZSBmdWxseSBjb250YWluZWQgaW4gdGhlIHJl
bmRlclN1cmZhY2UuCiAgICAgbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7
CkBAIC0xMjIwLDcgKzEyMjEsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZl
cmlmeVZpc2libGVSZWN0Rm9yM2RQZXJzcGVjdGl2ZVRyYW5zZm9ybSkKIAogICAgIEludFJlY3Qg
dGFyZ2V0U3VyZmFjZVJlY3QgPSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwg
MTAwKSk7CiAgICAgSW50UmVjdCBsYXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgt
NTAsIC01MCksIEludFNpemUoMjAwLCAyMDApKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBs
YXllclRvU3VyZmFjZVRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRvU3VyZmFjZVRyYW5zZm9ybTsKIAogICAgIC8vIENhc2UgMTogRXZlbiB0aG91Z2ggdGhlIGxh
eWVyIGlzIHR3aWNlIGFzIGxhcmdlIGFzIHRoZSBzdXJmYWNlLCBkdWUgdG8gcGVyc3BlY3RpdmUK
ICAgICAvLyAgICAgICAgIGZvcmVzaG9ydGVuaW5nLCB0aGUgbGF5ZXIgd2lsbCBmaXQgZnVsbHkg
aW4gdGhlIHN1cmZhY2Ugd2hlbiBpdHMgdHJhbnNsYXRlZApAQCAtMTI2Miw3ICsxMjYzLDcgQEAg
VEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlWaXNpYmxlUmVjdEZvcjNkT3J0
aG9ncmFwaGljSXNOb3RDbGlwcGVkQmUKIAogICAgIEludFJlY3QgdGFyZ2V0U3VyZmFjZVJlY3Qg
PSBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRTaXplKDEwMCwgMTAwKSk7CiAgICAgSW50UmVj
dCBsYXllckNvbnRlbnRSZWN0ID0gSW50UmVjdChJbnRQb2ludCgwLCAwKSwgSW50U2l6ZSgxMDAs
IDEwMCkpOwotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVG9TdXJmYWNlVHJhbnNmb3Jt
OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVG9TdXJmYWNlVHJhbnNmb3JtOwog
CiAgICAgLy8gVGhpcyBzZXF1ZW5jZSBvZiB0cmFuc2Zvcm1zIGVmZmVjdGl2ZWx5IHJvdGF0ZXMg
dGhlIGxheWVyIGFib3V0IHRoZSB5LWF4aXMgYXQgdGhlCiAgICAgLy8gY2VudGVyIG9mIHRoZSBs
YXllci4KQEAgLTEyODYsNyArMTI4Nyw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVz
dCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3IzZFBlcnNwZWN0aXZlV2hlbkNsaXBwZWRCeVcpCiAKICAg
ICBJbnRSZWN0IHRhcmdldFN1cmZhY2VSZWN0ID0gSW50UmVjdChJbnRQb2ludCgtNTAsIC01MCks
IEludFNpemUoMTAwLCAxMDApKTsKICAgICBJbnRSZWN0IGxheWVyQ29udGVudFJlY3QgPSBJbnRS
ZWN0KEludFBvaW50KC0xMCwgLTEpLCBJbnRTaXplKDIwLCAyKSk7Ci0gICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm07CisgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggbGF5ZXJUb1N1cmZhY2VUcmFuc2Zvcm07CiAKICAgICAvLyBUaGUgbGF5ZXIgaXMgcG9z
aXRpb25lZCBzbyB0aGF0IHRoZSByaWdodCBoYWxmIG9mIHRoZSBsYXllciBzaG91bGQgYmUgaW4g
ZnJvbnQgb2YKICAgICAvLyB0aGUgY2FtZXJhLCB3aGlsZSB0aGUgb3RoZXIgaGFsZiBpcyBiZWhp
bmQgdGhlIHN1cmZhY2UncyBwcm9qZWN0aW9uIHBsYW5lLiBUaGUKQEAgLTEzMjAsNyArMTMyMSw3
IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5VmlzaWJsZVJlY3RGb3JQ
ZXJzcGVjdGl2ZVVucHJvamVjdGlvbikKICAgICAvLyBUaGlzIHNlcXVlbmNlIG9mIHRyYW5zZm9y
bXMgY2F1c2VzIG9uZSBjb3JuZXIgb2YgdGhlIGxheWVyIHRvIHByb3RydWRlIGFjcm9zcyB0aGUg
dyA9IDAgcGxhbmUsIGFuZCBzaG91bGQgYmUgY2xpcHBlZC4KICAgICBJbnRSZWN0IHRhcmdldFN1
cmZhY2VSZWN0ID0gSW50UmVjdChJbnRQb2ludCgtNTAsIC01MCksIEludFNpemUoMTAwLCAxMDAp
KTsKICAgICBJbnRSZWN0IGxheWVyQ29udGVudFJlY3QgPSBJbnRSZWN0KEludFBvaW50KC0xMCwg
LTEwKSwgSW50U2l6ZSgyMCwgMjApKTsKLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRv
U3VyZmFjZVRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclRvU3Vy
ZmFjZVRyYW5zZm9ybTsKICAgICBsYXllclRvU3VyZmFjZVRyYW5zZm9ybS5tYWtlSWRlbnRpdHko
KTsKICAgICBsYXllclRvU3VyZmFjZVRyYW5zZm9ybS5hcHBseVBlcnNwZWN0aXZlKDEpOwogICAg
IGxheWVyVG9TdXJmYWNlVHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAsIDAsIC01KTsKQEAgLTEzNDgs
NyArMTM0OSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFja0Zh
Y2VDdWxsaW5nV2l0aG91dFByZXNlcnZlczNkKQogICAgIC8vIHRoYXQgM2QgdHJhbnNmb3JtcyBz
dGlsbCBhcHBseSBpbiB0aGlzIGNhc2UsIGJ1dCB0aGV5IGFyZSAiZmxhdHRlbmVkIiB0byBlYWNo
CiAgICAgLy8gcGFyZW50IGxheWVyIGFjY29yZGluZyB0byBjdXJyZW50IFczQyBzcGVjLgogCi0g
ICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgUmVmUHRyPExheWVy
Q2hyb21pdW0+IHBhcmVudCA9IExheWVyQ2hyb21pdW06OmNyZWF0ZSgpOwogICAgIFJlZlB0cjxM
YXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudD4gZnJvbnRGYWNpbmdDaGlsZCA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGJhY2tGYWNpbmdDaGls
ZCA9IGFkb3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsK
QEAgLTEzNzksNyArMTM4MCw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVy
aWZ5QmFja0ZhY2VDdWxsaW5nV2l0aG91dFByZXNlcnZlczNkKQogICAgIGZyb250RmFjaW5nQ2hp
bGRPZkJhY2tGYWNpbmdTdXJmYWNlLT5zZXREb3VibGVTaWRlZChmYWxzZSk7CiAgICAgYmFja0Zh
Y2luZ0NoaWxkT2ZCYWNrRmFjaW5nU3VyZmFjZS0+c2V0RG91YmxlU2lkZWQoZmFsc2UpOwogCi0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYmFja2ZhY2VNYXRyaXg7CisgICAgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXggYmFja2ZhY2VNYXRyaXg7CiAgICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRl
KDUwLCA1MCk7CiAgICAgYmFja2ZhY2VNYXRyaXgucm90YXRlM2QoMCwgMSwgMCwgMTgwKTsKICAg
ICBiYWNrZmFjZU1hdHJpeC50cmFuc2xhdGUoLTUwLCAtNTApOwpAQCAtMTQ0Niw3ICsxNDQ3LDcg
QEAgVEVTVChDQ0xheWVyVHJlZUhvc3RDb21tb25UZXN0LCB2ZXJpZnlCYWNrRmFjZUN1bGxpbmdX
aXRoUHJlc2VydmVzM2QpCiB7CiAgICAgLy8gVmVyaWZ5IHRoZSBiZWhhdmlvciBvZiBiYWNrLWZh
Y2UgY3VsbGluZyB3aGVuIHByZXNlcnZlcy0zZCB0cmFuc2Zvcm0gc3R5bGUgaXMgdXNlZC4KIAot
ICAgIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgIFJlZlB0cjxMYXll
ckNocm9taXVtPiBwYXJlbnQgPSBMYXllckNocm9taXVtOjpjcmVhdGUoKTsKICAgICBSZWZQdHI8
TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGZyb250RmFjaW5nQ2hpbGQgPSBh
ZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CiAgICAg
UmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBiYWNrRmFjaW5nQ2hp
bGQgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
CkBAIC0xNDc5LDcgKzE0ODAsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZl
cmlmeUJhY2tGYWNlQ3VsbGluZ1dpdGhQcmVzZXJ2ZXMzZCkKICAgICBmcm9udEZhY2luZ0NoaWxk
T2ZCYWNrRmFjaW5nU3VyZmFjZS0+c2V0RG91YmxlU2lkZWQoZmFsc2UpOwogICAgIGJhY2tGYWNp
bmdDaGlsZE9mQmFja0ZhY2luZ1N1cmZhY2UtPnNldERvdWJsZVNpZGVkKGZhbHNlKTsKIAotICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OwogICAgIGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0ZSg1
MCwgNTApOwogICAgIGJhY2tmYWNlTWF0cml4LnJvdGF0ZTNkKDAsIDEsIDAsIDE4MCk7CiAgICAg
YmFja2ZhY2VNYXRyaXgudHJhbnNsYXRlKC01MCwgLTUwKTsKQEAgLTE1NDksNyArMTU1MCw3IEBA
IFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFja0ZhY2VDdWxsaW5nV2l0
aEFuaW1hdGluZ1RyYW5zZm9ybXMpCiAgICAgLy8gdHJlYXRlZCBhcyAidW5rbm93biIgc28gd2Ug
Y2FuIG5vdCBiZSBzdXJlIHRoYXQgdGhlaXIgYmFjayBmYWNlIGlzIHJlYWxseSBzaG93aW5nLgog
ICAgIC8vCiAKLSAgICBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
KyAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bT4gcGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAg
ICAgUmVmUHRyPExheWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBjaGlsZCA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKICAgICBS
ZWZQdHI8TGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQ+IGFuaW1hdGluZ1N1cmZh
Y2UgPSBhZG9wdFJlZihuZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7
CkBAIC0xNTcxLDcgKzE1NzIsNyBAQCBURVNUKENDTGF5ZXJUcmVlSG9zdENvbW1vblRlc3QsIHZl
cmlmeUJhY2tGYWNlQ3VsbGluZ1dpdGhBbmltYXRpbmdUcmFuc2Zvcm1zKQogICAgIGNoaWxkT2ZB
bmltYXRpbmdTdXJmYWNlLT5zZXREb3VibGVTaWRlZChmYWxzZSk7CiAgICAgYW5pbWF0aW5nQ2hp
bGQtPnNldERvdWJsZVNpZGVkKGZhbHNlKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJh
Y2tmYWNlTWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4
OwogICAgIGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0ZSg1MCwgNTApOwogICAgIGJhY2tmYWNlTWF0
cml4LnJvdGF0ZTNkKDAsIDEsIDAsIDE4MCk7CiAgICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRl
KC01MCwgLTUwKTsKQEAgLTE2MzQsNyArMTYzNSw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29t
bW9uVGVzdCwgdmVyaWZ5QmFja0ZhY2VDdWxsaW5nV2l0aFByZXNlcnZlczNkRm9yRmxhdHRlbmlu
CiAgICAgLy8gVmVyaWZ5IHRoZSBiZWhhdmlvciBvZiBiYWNrLWZhY2UgY3VsbGluZyBmb3IgYSBy
ZW5kZXJTdXJmYWNlIHRoYXQgaXMgY3JlYXRlZAogICAgIC8vIHdoZW4gaXQgZmxhdHRlbnMgaXRz
IHN1YnRyZWUsIGFuZCBpdHMgcGFyZW50IGhhcyBwcmVzZXJ2ZXMtM2QuCiAKLSAgICBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKKyAgICBjb25zdCBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsKICAgICBSZWZQdHI8TGF5ZXJDaHJvbWl1bT4g
cGFyZW50ID0gTGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7CiAgICAgUmVmUHRyPExheWVyQ2hyb21p
dW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBmcm9udEZhY2luZ1N1cmZhY2UgPSBhZG9wdFJlZihu
ZXcgTGF5ZXJDaHJvbWl1bVdpdGhGb3JjZWREcmF3c0NvbnRlbnQoKSk7CiAgICAgUmVmUHRyPExh
eWVyQ2hyb21pdW1XaXRoRm9yY2VkRHJhd3NDb250ZW50PiBiYWNrRmFjaW5nU3VyZmFjZSA9IGFk
b3B0UmVmKG5ldyBMYXllckNocm9taXVtV2l0aEZvcmNlZERyYXdzQ29udGVudCgpKTsKQEAgLTE2
NTEsNyArMTY1Miw3IEBAIFRFU1QoQ0NMYXllclRyZWVIb3N0Q29tbW9uVGVzdCwgdmVyaWZ5QmFj
a0ZhY2VDdWxsaW5nV2l0aFByZXNlcnZlczNkRm9yRmxhdHRlbmluCiAgICAgZnJvbnRGYWNpbmdT
dXJmYWNlLT5zZXREb3VibGVTaWRlZChmYWxzZSk7CiAgICAgYmFja0ZhY2luZ1N1cmZhY2UtPnNl
dERvdWJsZVNpZGVkKGZhbHNlKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNl
TWF0cml4OworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGJhY2tmYWNlTWF0cml4OwogICAg
IGJhY2tmYWNlTWF0cml4LnRyYW5zbGF0ZSg1MCwgNTApOwogICAgIGJhY2tmYWNlTWF0cml4LnJv
dGF0ZTNkKDAsIDEsIDAsIDE4MCk7CiAgICAgYmFja2ZhY2VNYXRyaXgudHJhbnNsYXRlKC01MCwg
LTUwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRy
ZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCmluZGV4IDEyNzVlYzg1NDI4MTA5OGMzMWUxYjgwMzA2MWM5Y2NhNGRiZjVk
OGMuLmQ4YzhlYTMwNTBlMDY0OWYwNTg3MWM2ODU5MDQ1MDEzZDFjNmE0MDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApA
QCAtMTk4NSwyMSArMTk4NSwyMSBAQCBwdWJsaWM6CiAgICAgICAgIC8vIFRoZSByb290IHJlbmRl
ciBzdXJmYWNlIGlzIHRoZSBzaXplIG9mIHRoZSB2aWV3cG9ydC4KICAgICAgICAgRVhQRUNUX0VR
X1JFQ1QoSW50UmVjdCgwLCAwLCA2MCwgNjApLCByb290LT5yZW5kZXJTdXJmYWNlKCktPmNvbnRl
bnRSZWN0KCkpOwogCi0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlVHJhbnNmb3Jt
OworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY2FsZVRyYW5zZm9ybTsKICAgICAg
ICAgc2NhbGVUcmFuc2Zvcm0uc2NhbGUoaW1wbC0+c2V0dGluZ3MoKS5kZXZpY2VTY2FsZUZhY3Rv
cik7CiAKICAgICAgICAgLy8gVGhlIHJvb3QgbGF5ZXIgaXMgc2NhbGVkIGJ5IDJ4LgotICAgICAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb290U2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBzY2FsZVRy
YW5zZm9ybTsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdERyYXdUcmFuc2Zvcm0g
PSBzY2FsZVRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFNj
cmVlblNwYWNlVHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHJvb3REcmF3VHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07CiAgICAgICAg
IHJvb3REcmF3VHJhbnNmb3JtLnRyYW5zbGF0ZShyb290LT5ib3VuZHMoKS53aWR0aCgpICogMC41
LCByb290LT5ib3VuZHMoKS5oZWlnaHQoKSAqIDAuNSk7CiAKICAgICAgICAgRVhQRUNUX0VRKHJv
b3REcmF3VHJhbnNmb3JtLCByb290LT5kcmF3VHJhbnNmb3JtKCkpOwogICAgICAgICBFWFBFQ1Rf
RVEocm9vdFNjcmVlblNwYWNlVHJhbnNmb3JtLCByb290LT5zY3JlZW5TcGFjZVRyYW5zZm9ybSgp
KTsKIAogICAgICAgICAvLyBUaGUgY2hpbGQgaXMgYXQgcG9zaXRpb24gMiwyLCBzbyB0cmFuc2xh
dGUgYnkgMiwyIGJlZm9yZSBhcHBseWluZyB0aGUgc2NhbGUgYnkgMnguCi0gICAgICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGNoaWxkU2NyZWVuU3BhY2VUcmFuc2Zvcm0gPSBzY2FsZVRyYW5zZm9y
bTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRTY3JlZW5TcGFjZVRyYW5z
Zm9ybSA9IHNjYWxlVHJhbnNmb3JtOwogICAgICAgICBjaGlsZFNjcmVlblNwYWNlVHJhbnNmb3Jt
LnRyYW5zbGF0ZSgyLCAyKTsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGREcmF3
VHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4IGNoaWxkRHJhd1RyYW5zZm9ybSA9IHNjYWxlVHJhbnNmb3JtOwogICAgICAgICBjaGlsZERy
YXdUcmFuc2Zvcm0udHJhbnNsYXRlKDIsIDIpOwogICAgICAgICBjaGlsZERyYXdUcmFuc2Zvcm0u
dHJhbnNsYXRlKGNoaWxkLT5ib3VuZHMoKS53aWR0aCgpICogMC41LCBjaGlsZC0+Ym91bmRzKCku
aGVpZ2h0KCkgKiAwLjUpOwogCkBAIC0yMTEzLDcgKzIxMTMsNyBAQCBURVNUX0YoQ0NMYXllclRy
ZWVIb3N0VGVzdEF0b21pY0NvbW1pdCwgcnVuTXVsdGlUaHJlYWQpCiAgICAgcnVuVGVzdCh0cnVl
KTsKIH0KIAotc3RhdGljIHZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNo
cm9taXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IEZsb2F0
UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQorc3Rh
dGljIHZvaWQgc2V0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhMYXllckNocm9taXVtKiBsYXll
ciwgTGF5ZXJDaHJvbWl1bSogcGFyZW50LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
dHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQogewogICAgIGxheWVy
LT5yZW1vdmVBbGxDaGlsZHJlbigpOwogICAgIGlmIChwYXJlbnQpCkBAIC0yMTQxLDcgKzIxNDEs
NyBAQCBwdWJsaWM6CiAgICAgICAgIG1fbGF5ZXJUcmVlSG9zdC0+c2V0Um9vdExheWVyKG1fcGFy
ZW50KTsKICAgICAgICAgbV9sYXllclRyZWVIb3N0LT5zZXRWaWV3cG9ydFNpemUoSW50U2l6ZSgx
MCwgMjApKTsKIAotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1hdHJpeDsK
KyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CiAgICAgICAg
IHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobV9wYXJlbnQuZ2V0KCksIDAsIGlkZW50aXR5
TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDEwLCAy
MCksIHRydWUpOwogICAgICAgICBzZXRMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKG1fY2hpbGQu
Z2V0KCksIG1fcGFyZW50LmdldCgpLCBpZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
RmxvYXRQb2ludCgwLCAxMCksIEludFNpemUoMTAsIDEwKSwgZmFsc2UpOwogCkBAIC0yMzAxLDcg
KzIzMDEsNyBAQCBwcml2YXRlOgogICAgIFJlZ2lvbiBtX29jY2x1ZGVkU2NyZWVuU3BhY2U7CiB9
OwogCi1zdGF0aWMgdm9pZCBzZXRUZXN0TGF5ZXJQcm9wZXJ0aWVzRm9yVGVzdGluZyhUZXN0TGF5
ZXJDaHJvbWl1bSogbGF5ZXIsIExheWVyQ2hyb21pdW0qIHBhcmVudCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgYW5jaG9yLCBjb25zdCBG
bG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzLCBib29sIG9wYXF1ZSkK
K3N0YXRpYyB2b2lkIHNldFRlc3RMYXllclByb3BlcnRpZXNGb3JUZXN0aW5nKFRlc3RMYXllckNo
cm9taXVtKiBsYXllciwgTGF5ZXJDaHJvbWl1bSogcGFyZW50LCBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBhbmNob3IsIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQog
ewogICAgIHNldExheWVyUHJvcGVydGllc0ZvclRlc3RpbmcobGF5ZXIsIHBhcmVudCwgdHJhbnNm
b3JtLCBhbmNob3IsIHBvc2l0aW9uLCBib3VuZHMsIG9wYXF1ZSk7CiAgICAgbGF5ZXItPmNsZWFy
T2NjbHVkZWRTY3JlZW5TcGFjZSgpOwpAQCAtMjMxOSw4ICsyMzE5LDggQEAgcHVibGljOgogICAg
ICAgICBSZWZQdHI8VGVzdExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBUZXN0TGF5ZXJDaHJv
bWl1bTo6Y3JlYXRlKCk7CiAgICAgICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gbWFzayA9
IFRlc3RMYXllckNocm9taXVtOjpjcmVhdGUoKTsKIAotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBpZGVudGl0eU1hdHJpeDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRU
cmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4
OworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKICAgICAg
ICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKICAgICAgICAgY2hpbGRUcmFu
c2Zvcm0ucm90YXRlKDkwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAs
IC0yNTApOwpAQCAtMjUyMSw4ICsyNTIxLDggQEAgcHVibGljOgogICAgICAgICBSZWZQdHI8VGVz
dExheWVyQ2hyb21pdW0+IGdyYW5kQ2hpbGQgPSBUZXN0TGF5ZXJDaHJvbWl1bTo6Y3JlYXRlKCk7
CiAgICAgICAgIFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gbWFzayA9IFRlc3RMYXllckNocm9t
aXVtOjpjcmVhdGUoKTsKIAotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBpZGVudGl0eU1h
dHJpeDsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAg
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgICAgICBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKICAgICAgICAgY2hpbGRUcmFuc2Zv
cm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkw
KTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwpAQCAtMjYw
Nyw3ICsyNjA3LDcgQEAgcHVibGljOgogICAgIHsKICAgICAgICAgLy8gV2UgY3JlYXRlIGVub3Vn
aCBSZW5kZXJTdXJmYWNlcyB0aGF0IGl0IHdpbGwgdHJpZ2dlciBWZWN0b3IgcmVhbGxvY2F0aW9u
IHdoaWxlIGNvbXB1dGluZyBvY2NsdXNpb24uCiAgICAgICAgIFJlZ2lvbiBvY2NsdWRlZDsKLSAg
ICAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggaWRlbnRpdHlNYXRyaXg7CisgICAgICAg
IGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogICAgICAgICBW
ZWN0b3I8UmVmUHRyPFRlc3RMYXllckNocm9taXVtPiA+IGxheWVyczsKICAgICAgICAgVmVjdG9y
PFJlZlB0cjxUZXN0TGF5ZXJDaHJvbWl1bT4gPiBjaGlsZHJlbjsKICAgICAgICAgaW50IG51bVN1
cmZhY2VzID0gMjA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlVGVzdENvbW1vbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xh
eWVyVHJlZVRlc3RDb21tb24uaAppbmRleCA3NWU0ODdhNGE3ZWY0NmU3M2I2MjgzYzNmZjQ1MGE1
ZTQ1Y2E4NjBjLi41YzAxYzgwNDkzY2EyZjcxZGNjMGU1MTdjYTY1YTdjZDhiOGMzZDM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlVGVzdENvbW1v
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVUZXN0Q29t
bW9uLmgKQEAgLTQxLDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdFRlc3RzIHsKICAgICBFWFBF
Q1RfRVEoKGV4cGVjdGVkKS5zaXplKCkuaGVpZ2h0KCksIChhY3R1YWwpLnNpemUoKS5oZWlnaHQo
KSkKIAogLy8gVGhpcyBpcyBhIG1hY3JvIGluc3RlYWQgb2YgYSBmdW5jdGlvbiBzbyB0aGF0IHdl
IGdldCB1c2VmdWwgbGluZSBudW1iZXJzIHdoZXJlIGEgdGVzdCBmYWlsZWQuCi0vLyBFdmVuIHRo
b3VnaCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2YWx1ZXMgYXJlIGRvdWJsZSBwcmVjaXNpb24sIHRo
ZXJlIGFyZSBtYW55IG90aGVyIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB1c2VkIHRoYXQgYWZmZWN0
CisvLyBFdmVuIHRob3VnaCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB2YWx1ZXMgYXJlIGRvdWJs
ZSBwcmVjaXNpb24sIHRoZXJlIGFyZSBtYW55IG90aGVyIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB1
c2VkIHRoYXQgYWZmZWN0CiAvLyB0aGUgdHJhbnNmb3JtcywgYW5kIHNvIHdlIG9ubHkgZXhwZWN0
IHRoZW0gdG8gYmUgYWNjdXJhdGUgdXAgdG8gZmxvYXRpbmctcG9pbnQgcHJlY2lzaW9uLgogI2Rl
ZmluZSBFWFBFQ1RfVFJBTlNGT1JNQVRJT05fTUFUUklYX0VRKGV4cGVjdGVkLCBhY3R1YWwpICAg
ICAgIFwKICAgICBFWFBFQ1RfRkxPQVRfRVEoKGV4cGVjdGVkKS5tMTEoKSwgKGFjdHVhbCkubTEx
KCkpOyAgICAgICAgICBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDTWF0aFV0aWxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NNYXRo
VXRpbFRlc3QuY3BwCmluZGV4IDU4OGFmOWNjMjU0MzhkYTE2OTgxM2MzNTkxMDFhMDA4NzZlYmQ2
MzYuLjQ0YTY4YjllYjg5MzJhZjAxYTM1N2Q2YTBjNjIxYjc3YzNjOTJkNTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NNYXRoVXRpbFRlc3QuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NNYXRoVXRpbFRlc3QuY3BwCkBAIC0yNywxOCAr
MjcsMTkgQEAKICNpbmNsdWRlICJjYy9DQ01hdGhVdGlsLmgiCiAKICNpbmNsdWRlICJDQ0xheWVy
VHJlZVRlc3RDb21tb24uaCIKLSNpbmNsdWRlICJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oIgotCisj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSA8Z21vY2svZ21vY2suaD4KICNpbmNsdWRl
IDxndGVzdC9ndGVzdC5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eC5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIFdlYktpdDo6V2ViVHJhbnNm
b3JtYXRpb25NYXRyaXg7CiAKIG5hbWVzcGFjZSB7CiAKIFRFU1QoQ0NNYXRoVXRpbFRlc3QsIHZl
cmlmeUJhY2tmYWNlVmlzaWJpbGl0eUJhc2ljQ2FzZXMpCiB7Ci0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggdHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsK
IAogICAgIHRyYW5zZm9ybS5tYWtlSWRlbnRpdHkoKTsKICAgICBFWFBFQ1RfRkFMU0UodHJhbnNm
b3JtLmlzQmFja0ZhY2VWaXNpYmxlKCkpOwpAQCAtNTksNyArNjAsNyBAQCBURVNUKENDTWF0aFV0
aWxUZXN0LCB2ZXJpZnlCYWNrZmFjZVZpc2liaWxpdHlCYXNpY0Nhc2VzKQogCiBURVNUKENDTWF0
aFV0aWxUZXN0LCB2ZXJpZnlCYWNrZmFjZVZpc2liaWxpdHlGb3JQZXJzcGVjdGl2ZSkKIHsKLSAg
ICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXllclNwYWNlVG9Qcm9qZWN0aW9uUGxhbmU7CisgICAg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJTcGFjZVRvUHJvamVjdGlvblBsYW5lOwogCiAg
ICAgLy8gVGhpcyB0ZXN0cyBpZiBpc0JhY2tGYWNlVmlzaWJsZSB3b3JrcyBwcm9wZXJseSB1bmRl
ciBwZXJzcGVjdGl2ZSB0cmFuc2Zvcm1zLgogICAgIC8vIFNwZWNpZmljYWxseSwgbGF5ZXJzIHRo
YXQgbWF5IGhhdmUgdGhlaXIgYmFjayBmYWNlIHZpc2libGUgaW4gb3J0aG9ncmFwaGljCkBAIC0x
MDUsNyArMTA2LDcgQEAgVEVTVChDQ01hdGhVdGlsVGVzdCwgdmVyaWZ5UHJvamVjdGlvbk9mUGVy
cGVuZGljdWxhclBsYW5lKQogICAgIC8vIEluIHRoaXMgY2FzZSwgdGhlIG0zMygpIGVsZW1lbnQg
b2YgdGhlIHRyYW5zZm9ybSBiZWNvbWVzIHplcm8sIHdoaWNoIGNvdWxkIGNhdXNlIGEKICAgICAv
LyBkaXZpZGUtYnktemVybyB3aGVuIHByb2plY3RpbmcgcG9pbnRzL3F1YWRzLgogCi0gICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
IHRyYW5zZm9ybTsKICAgICB0cmFuc2Zvcm0ubWFrZUlkZW50aXR5KCk7CiAgICAgdHJhbnNmb3Jt
LnNldE0zMygwKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9D
Q09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKaW5kZXggNGI5ZmE3NGZkZTM3NmZlNDE2OGMwN2Zj
NDM2M2Q4OTU4MDYyM2I4Mi4uODAzMTdhMDA4MTdkZDU2NDgzNWQ5MDJhNTQ0OTkxZWE3NzRkOTI3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRy
YWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2NjbHVz
aW9uVHJhY2tlclRlc3QuY3BwCkBAIC0zMSwxNiArMzEsMTcgQEAKICNpbmNsdWRlICJDQ09jY2x1
c2lvblRyYWNrZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiTGF5ZXJDaHJvbWl1bS5oIgogI2lu
Y2x1ZGUgIlJlZ2lvbi5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5j
bHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVySW1wbC5oIgogI2lu
Y2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgorI2luY2x1ZGUgImNjL0NDTWF0aFV0
aWwuaCIKICNpbmNsdWRlICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCiAjaW5jbHVkZSA8Z21v
Y2svZ21vY2suaD4KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgogI2luY2x1ZGUgPHB1YmxpYy9X
ZWJGaWx0ZXJPcGVyYXRpb24uaD4KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9u
cy5oPgorI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeC5oPgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CkBAIC0xNzIsNyAr
MTczLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBDQ0xheWVyVHJlZUhvc3Q6OnNldE5lZWRzRmls
dGVyQ29udGV4dChmYWxzZSk7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRM
YXllclR5cGUqIGNyZWF0ZVJvb3QoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9y
bSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKKyAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogY3JlYXRlUm9vdChjb25zdCBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlv
biwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6
OkNvbnRlbnRMYXllclB0clR5cGUgbGF5ZXIoVHlwZXM6OmNyZWF0ZUNvbnRlbnRMYXllcigpKTsK
ICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyUHRyID0gbGF5
ZXIuZ2V0KCk7CkBAIC0xODMsNyArMTg0LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4g
bGF5ZXJQdHI7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY3JlYXRl
TGF5ZXIodHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3Qg
SW50U2l6ZSYgYm91bmRzKQorICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZUxh
eWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBhcmVudCwgY29uc3QgV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0
IEludFNpemUmIGJvdW5kcykKICAgICB7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclB0
clR5cGUgbGF5ZXIoVHlwZXM6OmNyZWF0ZUxheWVyKCkpOwogICAgICAgICB0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlKiBsYXllclB0ciA9IGxheWVyLmdldCgpOwpAQCAtMTkyLDcgKzE5Myw3IEBA
IHByb3RlY3RlZDoKICAgICAgICAgcmV0dXJuIGxheWVyUHRyOwogICAgIH0KIAotICAgIHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZVN1cmZhY2UodHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSogcGFyZW50LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25z
dCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQorICAgIHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGUqIGNyZWF0ZVN1cmZhY2UodHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSogcGFyZW50LCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBj
b25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50U2l6ZSYgYm91bmRzKQogICAgIHsK
ICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbGF5ZXIgPSBjcmVhdGVMYXllcihw
YXJlbnQsIHRyYW5zZm9ybSwgcG9zaXRpb24sIGJvdW5kcyk7CiAgICAgICAgIFdlYkZpbHRlck9w
ZXJhdGlvbnMgZmlsdGVyczsKQEAgLTIwMSw3ICsyMDIsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHJldHVybiBsYXllcjsKICAgICB9CiAKLSAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVy
VHlwZSogY3JlYXRlRHJhd2luZ0xheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHBhcmVu
dCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcywgYm9vbCBvcGFxdWUpCisgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGNyZWF0ZURyYXdpbmdMYXllcih0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBi
b3VuZHMsIGJvb2wgb3BhcXVlKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRl
bnRMYXllclB0clR5cGUgbGF5ZXIoVHlwZXM6OmNyZWF0ZUNvbnRlbnRMYXllcigpKTsKICAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyUHRyID0gbGF5ZXIuZ2V0
KCk7CkBAIC0yMjEsNyArMjIyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICByZXR1cm4gbGF5ZXJQ
dHI7CiAgICAgfQogCi0gICAgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogY3JlYXRlUmVwbGlj
YUxheWVyKHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIG93bmluZ0xheWVyLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwg
Y29uc3QgSW50U2l6ZSYgYm91bmRzKQorICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIGNy
ZWF0ZVJlcGxpY2FMYXllcih0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBvd25pbmdMYXllciwg
Y29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2lu
dCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5kcykKICAgICB7CiAgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJQdHJUeXBlIGxheWVyKFR5cGVzOjpjcmVhdGVDb250ZW50
TGF5ZXIoKSk7CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXll
clB0ciA9IGxheWVyLmdldCgpOwpAQCAtMjM5LDcgKzI0MCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgcmV0dXJuIGxheWVyUHRyOwogICAgIH0KIAotICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50
TGF5ZXJUeXBlKiBjcmVhdGVEcmF3aW5nU3VyZmFjZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
KiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQor
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBjcmVhdGVEcmF3aW5nU3VyZmFj
ZSh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBwYXJlbnQsIGNvbnN0IFdlYlRyYW5zZm9ybWF0
aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0aW9uLCBjb25zdCBJ
bnRTaXplJiBib3VuZHMsIGJvb2wgb3BhcXVlKQogICAgIHsKICAgICAgICAgdHlwZW5hbWUgVHlw
ZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gY3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwg
dHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzLCBvcGFxdWUpOwogICAgICAgICBXZWJGaWx0ZXJP
cGVyYXRpb25zIGZpbHRlcnM7CkBAIC0zMzEsMjQgKzMzMiwyNCBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIG1fbGF5ZXJJdGVyYXRvciA9IG1fbGF5ZXJJdGVyYXRvckJlZ2luOwogICAgIH0KIAotICAg
IGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OworICAgIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IGlkZW50aXR5TWF0cml4OwogCiBwcml2YXRlOgotICAgIHZv
aWQgc2V0QmFzZVByb3BlcnRpZXModHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSogbGF5ZXIsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBv
c2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCisgICAgdm9pZCBzZXRCYXNlUHJvcGVydGll
cyh0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiBsYXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IElu
dFNpemUmIGJvdW5kcykKICAgICB7CiAgICAgICAgIGxheWVyLT5zZXRUcmFuc2Zvcm0odHJhbnNm
b3JtKTsKLSAgICAgICAgbGF5ZXItPnNldFN1YmxheWVyVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9u
TWF0cml4KCkpOworICAgICAgICBsYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSk7CiAgICAgICAgIGxheWVyLT5zZXRBbmNob3JQb2ludChGbG9hdFBv
aW50KDAsIDApKTsKICAgICAgICAgbGF5ZXItPnNldFBvc2l0aW9uKHBvc2l0aW9uKTsKICAgICAg
ICAgbGF5ZXItPnNldEJvdW5kcyhib3VuZHMpOwogICAgIH0KIAotICAgIHZvaWQgc2V0UHJvcGVy
dGllcyhMYXllckNocm9taXVtKiBsYXllciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSwgY29uc3QgRmxvYXRQb2ludCYgcG9zaXRpb24sIGNvbnN0IEludFNpemUmIGJvdW5k
cykKKyAgICB2b2lkIHNldFByb3BlcnRpZXMoTGF5ZXJDaHJvbWl1bSogbGF5ZXIsIGNvbnN0IFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9pbnQmIHBvc2l0
aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgewogICAgICAgICBzZXRCYXNlUHJvcGVy
dGllcyhsYXllciwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKICAgICB9CiAKLSAgICB2
b2lkIHNldFByb3BlcnRpZXMoQ0NMYXllckltcGwqIGxheWVyLCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBGbG9hdFBvaW50JiBwb3NpdGlvbiwgY29uc3QgSW50
U2l6ZSYgYm91bmRzKQorICAgIHZvaWQgc2V0UHJvcGVydGllcyhDQ0xheWVySW1wbCogbGF5ZXIs
IGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IEZsb2F0UG9p
bnQmIHBvc2l0aW9uLCBjb25zdCBJbnRTaXplJiBib3VuZHMpCiAgICAgewogICAgICAgICBzZXRC
YXNlUHJvcGVydGllcyhsYXllciwgdHJhbnNmb3JtLCBwb3NpdGlvbiwgYm91bmRzKTsKIApAQCAt
NDgyLDcgKzQ4Myw3IEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQg
OiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywKIHByb3RlY3RlZDoKICAgICB2
b2lkIHJ1bk15VGVzdCgpCiAgICAgewotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsYXll
clRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zv
cm07CiAgICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5zbGF0ZSgyNTAsIDI1MCk7CiAgICAgICAg
IGxheWVyVHJhbnNmb3JtLnJvdGF0ZSg5MCk7CiAgICAgICAgIGxheWVyVHJhbnNmb3JtLnRyYW5z
bGF0ZSgtMjUwLCAtMjUwKTsKQEAgLTUzNSw3ICs1MzYsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRy
YWNrZXJUZXN0VHJhbnNsYXRlZENoaWxkIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8
VHlwZQogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKICAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNs
YXRlKDIwLCAyMCk7CiAKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKQEAgLTU5OCw3ICs1OTksNyBAQCBjbGFzcyBD
Q09jY2x1c2lvblRyYWNrZXJUZXN0Q2hpbGRJblJvdGF0ZWRDaGlsZCA6IHB1YmxpYyBDQ09jY2x1
c2lvblRyYWNrZXJUZXN0PAogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7
Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKICAgICAgICAgY2hpbGRUcmFu
c2Zvcm0udHJhbnNsYXRlKDI1MCwgMjUwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRl
KDkwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwpAQCAt
NjkxLDcgKzY5Miw3IEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RWaXNpdFRhcmdldFR3
b1RpbWVzIDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlclRlc3Q8CiBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hp
bGRUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNm
b3JtOwogICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwogICAgICAg
ICBjaGlsZFRyYW5zZm9ybS5yb3RhdGUoOTApOwogICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFu
c2xhdGUoLTI1MCwgLTI1MCk7CkBAIC04MzcsMTIgKzgzOCwxMiBAQCBjbGFzcyBDQ09jY2x1c2lv
blRyYWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZBeGlzIDogcHVibGljIENDT2NjbHVzaW9uVHJh
Y2tlclRlcwogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJh
bnNsYXRlKDI1MCwgMjUwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDk1KTsKICAg
ICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwogCi0gICAgICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBsYXllclRyYW5zZm9ybTsKICAgICAgICAgbGF5ZXJUcmFuc2Zvcm0udHJhbnNs
YXRlKDEwLCAxMCk7CiAKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUq
IHBhcmVudCA9IHRoaXMtPmNyZWF0ZVJvb3QodGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMTAwLCAxMDApKTsKQEAgLTg1NCw3ICs4NTUsNyBAQCBwcm90ZWN0
ZWQ6CiAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExh
eWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKLSAgICAgICAgSW50
UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxkID0gbGF5ZXJUcmFuc2Zvcm0ubWFwUmVjdChsYXllci0+
dmlzaWJsZUxheWVyUmVjdCgpKTsKKyAgICAgICAgSW50UmVjdCBjbGlwcGVkTGF5ZXJJbkNoaWxk
ID0gQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QobGF5ZXJUcmFuc2Zvcm0sIGxheWVyLT52aXNp
YmxlTGF5ZXJSZWN0KCkpOwogCiAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIsIG9jY2x1
c2lvbik7CiAgICAgICAgIHRoaXMtPmVudGVyQ29udHJpYnV0aW5nU3VyZmFjZShjaGlsZCwgb2Nj
bHVzaW9uKTsKQEAgLTkwMyw3ICs5MDQsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0
U3VyZmFjZVdpdGhUd29PcGFxdWVDaGlsZHJlbiA6IHB1YmxpYyBDQ09jY2x1c2lvblRyYQogcHJv
dGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0
aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBjaGlsZFRyYW5zZm9ybTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDI1MCwg
MjUwKTsKICAgICAgICAgY2hpbGRUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICAgICAgY2hpbGRU
cmFuc2Zvcm0udHJhbnNsYXRlKC0yNTAsIC0yNTApOwpAQCAtOTkxLDcgKzk5Miw3IEBAIGNsYXNz
IENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5ncyA6IHB1Ymxp
YyBDQ09jY2x1c2lvblRyYWNrCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAg
IHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07CisgICAgICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGNoaWxkVHJhbnNmb3JtOwogICAgICAgICBjaGlsZFRy
YW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwogICAgICAgICBjaGlsZFRyYW5zZm9ybS5yb3Rh
dGUoOTApOwogICAgICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CkBA
IC0xMTAwLDEyICsxMTAxLDEyIEBAIGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFw
cGluZ1N1cmZhY2VTaWJsaW5nc1dpdGhUd29UcmFuc2Zvcm1zIDogcHVibGljCiBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggY2hpbGQxVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGls
ZDFUcmFuc2Zvcm07CiAgICAgICAgIGNoaWxkMVRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTAp
OwogICAgICAgICBjaGlsZDFUcmFuc2Zvcm0ucm90YXRlKC05MCk7CiAgICAgICAgIGNoaWxkMVRy
YW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7CiAKLSAgICAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggY2hpbGQyVHJhbnNmb3JtOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBj
aGlsZDJUcmFuc2Zvcm07CiAgICAgICAgIGNoaWxkMlRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAy
NTApOwogICAgICAgICBjaGlsZDJUcmFuc2Zvcm0ucm90YXRlKDkwKTsKICAgICAgICAgY2hpbGQy
VHJhbnNmb3JtLnRyYW5zbGF0ZSgtMjUwLCAtMjUwKTsKQEAgLTEyMDcsNyArMTIwOCw3IEBAIGNs
YXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RGaWx0ZXJzIDogcHVibGljIENDT2NjbHVzaW9uVHJh
Y2tlclRlc3Q8VHlwZXMsIG9wYXF1CiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQog
ICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbGF5ZXJUcmFuc2Zvcm07CisgICAg
ICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGxheWVyVHJhbnNmb3JtOwogICAgICAgICBsYXll
clRyYW5zZm9ybS50cmFuc2xhdGUoMjUwLCAyNTApOwogICAgICAgICBsYXllclRyYW5zZm9ybS5y
b3RhdGUoOTApOwogICAgICAgICBsYXllclRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTI1MCk7
CkBAIC0xODQzLDcgKzE4NDQsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0M2RUcmFu
c2Zvcm0gOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdDxUeXBlcywgbwogcHJvdGVjdGVk
OgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
OwogICAgICAgICB0cmFuc2Zvcm0ucm90YXRlM2QoMCwgMzAsIDApOwogCiAgICAgICAgIHR5cGVu
YW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBwYXJlbnQgPSB0aGlzLT5jcmVhdGVSb290KHRo
aXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAsIDApLCBJbnRTaXplKDMwMCwgMzAwKSk7
CkBAIC0xODY2LDcgKzE4NjcsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0UGVyc3Bl
Y3RpdmVUcmFuc2Zvcm0gOiBwdWJsaWMgQ0NPY2NsdXNpb25UcmFja2VyVGVzdAogcHJvdGVjdGVk
OgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0
cml4IHRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3Jt
OwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKDE1MCwgMTUwKTsKICAgICAgICAgdHJhbnNm
b3JtLmFwcGx5UGVyc3BlY3RpdmUoNDAwKTsKICAgICAgICAgdHJhbnNmb3JtLnJvdGF0ZTNkKDEs
IDAsIDAsIC0zMCk7CkBAIC0xODk0LDcgKzE4OTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBy
dW5NeVRlc3QoKQogICAgIHsKICAgICAgICAgLy8gVGhpcyB0ZXN0IGlzIGJhc2VkIG9uIHRoZSBw
bGF0Zm9ybS9jaHJvbWl1bS9jb21wb3NpdGluZy8zZC1jb3JuZXJzLmh0bWwgbGF5b3V0IHRlc3Qu
Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICAgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRl
KDI1MCwgNTApOwogICAgICAgICB0cmFuc2Zvcm0uYXBwbHlQZXJzcGVjdGl2ZSgxMCk7CiAgICAg
ICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLTI1MCwgLTUwKTsKQEAgLTE5MjUsNyArMTkyNiw3IEBA
IGNsYXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXllckJlaGluZENhbWVyYURvZXNOb3RPY2Ns
dWRlIDogcHVibGljIENDT2NjbHVzaW9uCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3Qo
KQogICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOworICAgICAg
ICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50
cmFuc2xhdGUoNTAsIDUwKTsKICAgICAgICAgdHJhbnNmb3JtLmFwcGx5UGVyc3BlY3RpdmUoMTAw
KTsKICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZTNkKDAsIDAsIDExMCk7CkBAIC0xOTU0LDcg
KzE5NTUsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0TGFyZ2VQaXhlbHNPY2NsdWRl
SW5zaWRlQ2xpcFJlY3QgOiBwdWJsaWMgQ0NPY2NsdXNpbwogcHJvdGVjdGVkOgogICAgIHZvaWQg
cnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9y
bTsKKyAgICAgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtOwogICAgICAgICB0
cmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAgICAgICAgIHRyYW5zZm9ybS5hcHBseVBlcnNw
ZWN0aXZlKDEwMCk7CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUzZCgwLCAwLCA5OSk7CkBA
IC0yMTgyLDcgKzIxODMsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZU9j
Y2x1c2lvblRyYW5zbGF0ZXNUb1BhcmVudCA6IHB1YmxpYyBDQ09jY2x1cwogcHJvdGVjdGVkOgog
ICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IHN1cmZhY2VUcmFuc2Zvcm07CisgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHN1cmZh
Y2VUcmFuc2Zvcm07CiAgICAgICAgIHN1cmZhY2VUcmFuc2Zvcm0udHJhbnNsYXRlKDMwMCwgMzAw
KTsKICAgICAgICAgc3VyZmFjZVRyYW5zZm9ybS5zY2FsZSgyKTsKICAgICAgICAgc3VyZmFjZVRy
YW5zZm9ybS50cmFuc2xhdGUoLTE1MCwgLTE1MCk7CkBAIC0yNTE0LDcgKzI1MTUsNyBAQCBjbGFz
cyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RG9udE9jY2x1ZGVQaXhlbHNOZWVkZWRGb3JCYWNrZ3Jv
dW5kRmlsdGVyIDogcHVibGljCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQogICAg
IHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NhbGVCeUhhbGY7CisgICAgICAgIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlQnlIYWxmOwogICAgICAgICBzY2FsZUJ5SGFsZi5z
Y2FsZSgwLjUpOwogCiAgICAgICAgIC8vIE1ha2UgYSBzdXJmYWNlIGFuZCBpdHMgcmVwbGljYSwg
ZWFjaCA1MHg1MCwgdGhhdCBhcmUgY29tcGxldGVseSBzdXJyb3VuZGVkIGJ5IG9wYXF1ZSBsYXll
cnMgd2hpY2ggYXJlIGFib3ZlIHRoZW0gaW4gdGhlIHotb3JkZXIuCkBAIC0yNjM5LDcgKzI2NDAs
NyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0VHdvQmFja2dyb3VuZEZpbHRlcnNSZWR1
Y2VPY2NsdXNpb25Ud2ljZSA6IHB1YmxpYyBDQwogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlU
ZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlQnlIYWxmOwor
ICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY2FsZUJ5SGFsZjsKICAgICAgICAgc2Nh
bGVCeUhhbGYuc2NhbGUoMC41KTsKIAogICAgICAgICAvLyBNYWtlcyB0d28gc3VyZmFjZXMgdGhh
dCBjb21wbGV0ZWx5IGNvdmVyIHxwYXJlbnR8LiBUaGUgb2NjbHVzaW9uIGJvdGggYWJvdmUgYW5k
IGJlbG93IHRoZSBmaWx0ZXJzIHdpbGwgYmUgcmVkdWNlZCBieSBlYWNoIG9mIHRoZW0uCkBAIC0y
ODI2LDcgKzI4MjcsNyBAQCBjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0RG9udFJlZHVjZU9j
Y2x1c2lvbkJlbG93QmFja2dyb3VuZEZpbHRlciA6IHB1YmxpYyBDQwogcHJvdGVjdGVkOgogICAg
IHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0gICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNj
YWxlQnlIYWxmOworICAgICAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBzY2FsZUJ5SGFsZjsK
ICAgICAgICAgc2NhbGVCeUhhbGYuc2NhbGUoMC41KTsKIAogICAgICAgICAvLyBNYWtlIGEgc3Vy
ZmFjZSBhbmQgaXRzIHJlcGxpY2EsIGVhY2ggNTB4NTAsIHdpdGggYSBzbWFsbGVyIDMweDMwIGxh
eWVyIGNlbnRlcmVkIGJlbG93IGVhY2guCkBAIC0yODc1LDcgKzI4NzYsNyBAQCBjbGFzcyBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0RG9udFJlZHVjZU9jY2x1c2lvbklmQmFja2dyb3VuZEZpbHRlcklz
T2NjbHVkZWQgOiBwdQogcHJvdGVjdGVkOgogICAgIHZvaWQgcnVuTXlUZXN0KCkKICAgICB7Ci0g
ICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlQnlIYWxmOworICAgICAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBzY2FsZUJ5SGFsZjsKICAgICAgICAgc2NhbGVCeUhhbGYuc2NhbGUo
MC41KTsKIAogICAgICAgICAvLyBNYWtlIGEgc3VyZmFjZSBhbmQgaXRzIHJlcGxpY2EsIGVhY2gg
NTB4NTAsIHRoYXQgYXJlIGNvbXBsZXRlbHkgb2NjbHVkZWQgYnkgb3BhcXVlIGxheWVycyB3aGlj
aCBhcmUgYWJvdmUgdGhlbSBpbiB0aGUgei1vcmRlci4KQEAgLTI5MjMsNyArMjkyNCw3IEBAIGNs
YXNzIENDT2NjbHVzaW9uVHJhY2tlclRlc3RSZWR1Y2VPY2NsdXNpb25XaGVuQmFja2dyb3VuZEZp
bHRlcklzUGFydGlhbGx5T2NjbHVkCiBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBydW5NeVRlc3QoKQog
ICAgIHsKLSAgICAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NhbGVCeUhhbGY7CisgICAgICAg
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IHNjYWxlQnlIYWxmOwogICAgICAgICBzY2FsZUJ5SGFs
Zi5zY2FsZSgwLjUpOwogCiAgICAgICAgIC8vIE1ha2UgYSBzdXJmYWNlIGFuZCBpdHMgcmVwbGlj
YSwgZWFjaCA1MHg1MCwgdGhhdCBhcmUgcGFydGlhbGx5IG9jY2x1ZGVkIGJ5IG9wYXF1ZSBsYXll
cnMgd2hpY2ggYXJlIGFib3ZlIHRoZW0gaW4gdGhlIHotb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUXVhZEN1bGxlclRlc3QuY3BwIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ1F1YWRDdWxsZXJUZXN0LmNwcAppbmRleCA2MzRhMjVjN2E4
M2FiZmI2ZWRiMDNlMjc1NGE0MTk0YWViMzU0NjVjLi4xYTExOWQ3MDgzYTMzN2JjYWEzNWQ5NGE1
ZTVhNTBlODMxYjZkYWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0NDUXVhZEN1bGxlclRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NRdWFkQ3VsbGVyVGVzdC5jcHAKQEAgLTMzLDggKzMzLDEwIEBACiAjaW5jbHVkZSAiY2MvQ0NU
aWxlRHJhd1F1YWQuaCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIApAQCAtNTUsNyArNTcsNyBAQCBwcml2YXRlOgogCiB0
eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1wbCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4s
IENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9yQWN0aW9uczo6RnJvbnRUb0JhY2s+IEND
TGF5ZXJJdGVyYXRvclR5cGU7CiAKLXN0YXRpYyBQYXNzT3duUHRyPENDVGlsZWRMYXllckltcGw+
IG1ha2VMYXllcihDQ1RpbGVkTGF5ZXJJbXBsKiBwYXJlbnQsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBkcmF3VHJhbnNmb3JtLCBjb25zdCBJbnRSZWN0JiBsYXllclJlY3QsIGZsb2F0IG9w
YWNpdHksIGJvb2wgb3BhcXVlLCBjb25zdCBJbnRSZWN0JiBsYXllck9wYXF1ZVJlY3QsIFZlY3Rv
cjxDQ0xheWVySW1wbCo+JiBzdXJmYWNlTGF5ZXJMaXN0KQorc3RhdGljIFBhc3NPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gbWFrZUxheWVyKENDVGlsZWRMYXllckltcGwqIHBhcmVudCwgY29uc3Qg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIGRyYXdUcmFuc2Zvcm0sIGNvbnN0IEludFJlY3QmIGxh
eWVyUmVjdCwgZmxvYXQgb3BhY2l0eSwgYm9vbCBvcGFxdWUsIGNvbnN0IEludFJlY3QmIGxheWVy
T3BhcXVlUmVjdCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHN1cmZhY2VMYXllckxpc3QpCiB7CiAg
ICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IGxheWVyID0gQ0NUaWxlZExheWVySW1wbDo6Y3Jl
YXRlKDApOwogICAgIE93blB0cjxDQ0xheWVyVGlsaW5nRGF0YT4gdGlsZXIgPSBDQ0xheWVyVGls
aW5nRGF0YTo6Y3JlYXRlKEludFNpemUoMTAwLCAxMDApLCBDQ0xheWVyVGlsaW5nRGF0YTo6Tm9C
b3JkZXJUZXhlbHMpOwpAQCAtMTA1LDcgKzEwNyw3IEBAIHN0YXRpYyB2b2lkIGFwcGVuZFF1YWRz
KENDUXVhZExpc3QmIHF1YWRMaXN0LCBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+
CiAgICAgQ0NRdWFkTGlzdCBxdWFkTGlzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFwKICAgICBWZWN0b3I8T3duUHRyPENDU2hhcmVkUXVhZFN0YXRlPiA+IHNoYXJlZFN0YXRlTGlz
dDsgXAogICAgIFZlY3RvcjxDQ0xheWVySW1wbCo+IHJlbmRlclN1cmZhY2VMYXllckxpc3Q7ICAg
ICAgICBcCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggY2hpbGRUcmFuc2Zvcm07ICAgICAgICAg
ICAgICAgIFwKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjaGlsZFRyYW5zZm9ybTsgICAg
ICAgICAgICAgICAgXAogICAgIEludFNpemUgcm9vdFNpemUgPSBJbnRTaXplKDMwMCwgMzAwKTsg
ICAgICAgICAgICAgICBcCiAgICAgSW50UmVjdCByb290UmVjdCA9IEludFJlY3QoSW50UG9pbnQo
KSwgcm9vdFNpemUpOyAgIFwKICAgICBJbnRTaXplIGNoaWxkU2l6ZSA9IEludFNpemUoMjAwLCAy
MDApOyAgICAgICAgICAgICAgXApAQCAtMTE1LDggKzExNyw4IEBAIFRFU1QoQ0NRdWFkQ3VsbGVy
VGVzdCwgdmVyaWZ5Tm9DdWxsaW5nKQogewogICAgIERFQ0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVT
VF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VM
YXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRS
ZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJ
bXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZh
Y2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBt
YWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxl
ZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCBmYWxzZSwgSW50UmVjdCgpLCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBv
Y2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogICAgIEND
TGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVy
U3VyZmFjZUxheWVyTGlzdCk7CiAKQEAgLTEzMiw4ICsxMzQsOCBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxDaGlsZExpbmVzVXBUb3BMZWZ0KQogewogICAgIERFQ0xBUkVfQU5E
X0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJv
b3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwg
MS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwotICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQo
KSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUsIEludFJlY3Qo
KSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+
IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290
UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RMYXll
ci5nZXQoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEw
MDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6
YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCkBAIC0xNDksNyArMTUxLDcgQEAgVEVT
VChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsV2hlbkNoaWxkT3BhY2l0eU5vdE9uZSkKIHsK
ICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRy
aXgoKSwgcm9vdFJlY3QsIDEsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigw
LCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMSwgdHJ1ZSwgSW50UmVjdCgp
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
Y2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBj
aGlsZFJlY3QsIDAuOWYsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CiAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0
KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0g
Q0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwpAQCAt
MTY2LDcgKzE2OCw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFdoZW5DaGls
ZE9wYXF1ZUZsYWdGYWxzZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVB
RFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIo
MCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgp
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
cm9vdExheWVyID0gbWFrZUxheWVyKDAsIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIHJvb3RS
ZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAg
T3duUHRyPENDVGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVy
LmdldCgpLCBjaGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBJbnRSZWN0KCks
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBs
IG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7CiAgICAg
Q0NMYXllckl0ZXJhdG9yVHlwZSBpdCA9IENDTGF5ZXJJdGVyYXRvclR5cGU6OmJlZ2luKCZyZW5k
ZXJTdXJmYWNlTGF5ZXJMaXN0KTsKQEAgLTE4NSw3ICsxODcsNyBAQCBURVNUKENDUXVhZEN1bGxl
clRlc3QsIHZlcmlmeUN1bGxDZW50ZXJUaWxlT25seSkKIAogICAgIGNoaWxkVHJhbnNmb3JtLnRy
YW5zbGF0ZSg1MCwgNTApOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXll
ciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0
cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1Rp
bGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0KTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VM
YXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1
ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwg
MTAwMCkpOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBl
OjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBAIC0yMjIsNyArMjI0LDcgQEAgVEVT
VChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTEp
CiAKICAgICAvLyBNYWtlIHRoZSByb290IGxheWVyJ3MgcXVhZCBoYXZlIGV4dGVudCAoOTkuMSwg
OTkuMSkgLT4gKDIwMC45LCAyMDAuOSkgdG8gbWFrZQogICAgIC8vIHN1cmUgaXQgZG9lc24ndCBn
ZXQgY3VsbGVkIGR1ZSB0byB0cmFuc2Zvcm0gcm91bmRpbmcuCi0gICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggcm9vdFRyYW5zZm9ybTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb290VHJh
bnNmb3JtOwogICAgIHJvb3RUcmFuc2Zvcm0udHJhbnNsYXRlKDk5LjEsIDk5LjEpOwogICAgIHJv
b3RUcmFuc2Zvcm0uc2NhbGUoMS4wMTgpOwogCkBAIC0yNTEsNyArMjUzLDcgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2VudGVyVGlsZU5vbkludGVncmFsU2l6ZTIpCiAgICAg
Y2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDEwMC4xLCAxMDAuMSk7CiAgICAgY2hpbGRUcmFuc2Zv
cm0uc2NhbGUoMC45ODIpOwogCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcm9vdFRyYW5zZm9y
bTsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCByb290VHJhbnNmb3JtOwogICAgIHJvb3RU
cmFuc2Zvcm0udHJhbnNsYXRlKDEwMCwgMTAwKTsKIAogICAgIHJvb3RSZWN0ID0gY2hpbGRSZWN0
ID0gSW50UmVjdCgwLCAwLCAxMDAsIDEwMCk7CkBAIC0yNzYsNyArMjc4LDcgQEAgVEVTVChDQ1F1
YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsQ2hpbGRMaW5lc1VwQm90dG9tUmlnaHQpCiAKICAgICBj
aGlsZFRyYW5zZm9ybS50cmFuc2xhdGUoMTAwLCAxMDApOwogCi0gICAgT3duUHRyPENDVGlsZWRM
YXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwg
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgp
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
Y2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBj
aGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBD
Q0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBAIC0y
OTUsNyArMjk3LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsU3ViUmVnaW9u
KQogCiAgICAgY2hpbGRUcmFuc2Zvcm0udHJhbnNsYXRlKDUwLCA1MCk7CiAKLSAgICBPd25QdHI8
Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1ha2VM
YXllcigwLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIEludFJlY3QgY2hpbGRPcGFx
dWVSZWN0KGNoaWxkUmVjdC54KCkgKyBjaGlsZFJlY3Qud2lkdGgoKSAvIDQsIGNoaWxkUmVjdC55
KCkgKyBjaGlsZFJlY3QuaGVpZ2h0KCkgLyA0LCBjaGlsZFJlY3Qud2lkdGgoKSAvIDIsIGNoaWxk
UmVjdC5oZWlnaHQoKSAvIDIpOwogICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExh
eWVyID0gbWFrZUxheWVyKHJvb3RMYXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVj
dCwgMS4wLCBmYWxzZSwgY2hpbGRPcGFxdWVSZWN0LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3Qo
LTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkpOwpAQCAtMzE1LDcgKzMxNyw3IEBAIFRFU1QoQ0NRdWFk
Q3VsbGVyVGVzdCwgdmVyaWZ5Q3VsbFN1YlJlZ2lvbjIpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50
cmFuc2xhdGUoNTAsIDEwKTsKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5
ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwg
dHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFdlYlRyYW5zZm9ybWF0aW9u
TWF0cml4KCksIHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCk7CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNo
aWxkUmVjdC53aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAv
IDQsIGNoaWxkUmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpICogMyAvIDQpOwog
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RM
YXllci5nZXQoKSwgY2hpbGRUcmFuc2Zvcm0sIGNoaWxkUmVjdCwgMS4wLCBmYWxzZSwgY2hpbGRP
cGFxdWVSZWN0LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAw
MCkpOwpAQCAtMzM1LDcgKzMzNyw3IEBAIFRFU1QoQ0NRdWFkQ3VsbGVyVGVzdCwgdmVyaWZ5Q3Vs
bFN1YlJlZ2lvbkNoZWNrT3ZlcmN1bGwpCiAKICAgICBjaGlsZFRyYW5zZm9ybS50cmFuc2xhdGUo
NTAsIDQ5KTsKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtl
TGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50
UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVy
SW1wbD4gcm9vdExheWVyID0gbWFrZUxheWVyKDAsIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IHJvb3RSZWN0LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CiAgICAgSW50UmVjdCBjaGlsZE9wYXF1ZVJlY3QoY2hpbGRSZWN0LngoKSArIGNoaWxkUmVjdC53
aWR0aCgpIC8gNCwgY2hpbGRSZWN0LnkoKSArIGNoaWxkUmVjdC5oZWlnaHQoKSAvIDQsIGNoaWxk
UmVjdC53aWR0aCgpIC8gMiwgY2hpbGRSZWN0LmhlaWdodCgpIC8gMik7CiAgICAgT3duUHRyPEND
VGlsZWRMYXllckltcGw+IGNoaWxkTGF5ZXIgPSBtYWtlTGF5ZXIocm9vdExheWVyLmdldCgpLCBj
aGlsZFRyYW5zZm9ybSwgY2hpbGRSZWN0LCAxLjAsIGZhbHNlLCBjaGlsZE9wYXF1ZVJlY3QsIHJl
bmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9j
Y2x1c2lvblRyYWNrZXIoSW50UmVjdCgtMTAwLCAtMTAwLCAxMDAwLCAxMDAwKSk7CkBAIC0zNTYs
NyArMzU4LDcgQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlOb25BeGlzQWxpZ25lZFF1
YWRzRG9udE9jY2x1ZGUpCiAgICAgLy8gVXNlIGEgc21hbGwgcm90YXRpb24gc28gYXMgdG8gbm90
IGRpc3R1cmIgdGhlIGdlb21ldHJ5IHNpZ25pZmljYW50bHkuCiAgICAgY2hpbGRUcmFuc2Zvcm0u
cm90YXRlKDEpOwogCi0gICAgT3duUHRyPENDVGlsZWRMYXllckltcGw+IHJvb3RMYXllciA9IG1h
a2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJ
bnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5
ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgo
KSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihy
b290TGF5ZXIuZ2V0KCksIGNoaWxkVHJhbnNmb3JtLCBjaGlsZFJlY3QsIDEuMCwgdHJ1ZSwgSW50
UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VySW1wbCBvY2NsdXNpb25UcmFja2VyKEludFJlY3QoLTEwMCwgLTEwMCwgMTAwMCwgMTAwMCkp
OwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQgPSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdp
bigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CkBAIC0zNzksMTEgKzM4MSwxMSBAQCBURVNUKEND
UXVhZEN1bGxlclRlc3QsIHZlcmlmeU5vbkF4aXNBbGlnbmVkUXVhZHNTYWZlbHlDdWxsZWQpCiAg
ICAgREVDTEFSRV9BTkRfSU5JVElBTElaRV9URVNUX1FVQURTCiAKICAgICAvLyBVc2UgYSBzbWFs
bCByb3RhdGlvbiBzbyBhcyB0byBub3QgZGlzdHVyYiB0aGUgZ2VvbWV0cnkgc2lnbmlmaWNhbnRs
eS4KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBwYXJlbnRUcmFuc2Zvcm07CisgICAgV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggcGFyZW50VHJhbnNmb3JtOwogICAgIHBhcmVudFRyYW5zZm9ybS5y
b3RhdGUoMSk7CiAKICAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gcm9vdExheWVyID0gbWFr
ZUxheWVyKDAsIHBhcmVudFRyYW5zZm9ybSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgp
LCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4g
Y2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxh
eWVyKHJvb3RMYXllci5nZXQoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0
LCAxLjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KC0xMDAsIC0x
MDAsIDEwMDAsIDEwMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0
ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCkBAIC0zOTksOCAr
NDAxLDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JP
dmVyVGlsZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAg
IE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXll
ciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNo
aWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwor
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2Vi
VHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hp
bGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0
cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXll
ckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIo
SW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0
ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwog
CkBAIC00MTYsOCArNDE4LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0
c2lkZVNjaXNzb3JPdmVyQ3VsbGVkVGlsZSkKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpF
X1RFU1RfUVVBRFMKIAotICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBt
YWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwg
SW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8Q0NUaWxlZExh
eWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9y
bWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1
cmZhY2VMYXllckxpc3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIg
PSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwg
dHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NU
aWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCks
IHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBs
IG9jY2x1c2lvblRyYWNrZXIoSW50UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKICAgICBDQ0xh
eWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1
cmZhY2VMYXllckxpc3QpOwogCkBAIC00MzMsOCArNDM1LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJU
ZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyUGFydGlhbFRpbGVzKQogewogICAgIERF
Q0xBUkVfQU5EX0lOSVRJQUxJWkVfVEVTVF9RVUFEUwogCi0gICAgT3duUHRyPENDVGlsZWRMYXll
ckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBy
b290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOwot
ICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVyKHJvb3RM
YXllci5nZXQoKSwgVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAxLjAsIHRydWUs
IEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgT3duUHRyPENDVGlsZWRM
YXllckltcGw+IHJvb3RMYXllciA9IG1ha2VMYXllcigwLCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgpLCByb290UmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxp
c3QpOworICAgIE93blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiBjaGlsZExheWVyID0gbWFrZUxheWVy
KHJvb3RMYXllci5nZXQoKSwgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoKSwgY2hpbGRSZWN0LCAx
LjAsIHRydWUsIEludFJlY3QoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihJbnRSZWN0KDUwLCA1MCwgMjAw
LCAyMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NMYXllckl0ZXJhdG9yVHlw
ZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCkBAIC00NTAsOCArNDUyLDggQEAg
VEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlDdWxsT3V0c2lkZVNjaXNzb3JPdmVyTm9UaWxl
cykKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1h
a2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVj
dCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93
blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXll
ciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVj
dCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKICAgICBDQ0xheWVySXRlcmF0b3JUeXBlIGl0ID0gQ0NM
YXllckl0ZXJhdG9yVHlwZTo6YmVnaW4oJnJlbmRlclN1cmZhY2VMYXllckxpc3QpOwogCkBAIC00
NjcsOCArNDY5LDggQEAgVEVTVChDQ1F1YWRDdWxsZXJUZXN0LCB2ZXJpZnlXaXRob3V0TWV0cmlj
cykKIHsKICAgICBERUNMQVJFX0FORF9JTklUSUFMSVpFX1RFU1RfUVVBRFMKIAotICAgIE93blB0
cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJTdXJmYWNl
TGF5ZXJMaXN0KTsKLSAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXllciA9IG1h
a2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGNoaWxkUmVj
dCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworICAgIE93
blB0cjxDQ1RpbGVkTGF5ZXJJbXBsPiByb290TGF5ZXIgPSBtYWtlTGF5ZXIoMCwgV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSwgcm9vdFJlY3QsIDEuMCwgdHJ1ZSwgSW50UmVjdCgpLCByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKKyAgICBPd25QdHI8Q0NUaWxlZExheWVySW1wbD4gY2hpbGRMYXll
ciA9IG1ha2VMYXllcihyb290TGF5ZXIuZ2V0KCksIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCks
IGNoaWxkUmVjdCwgMS4wLCB0cnVlLCBJbnRSZWN0KCksIHJlbmRlclN1cmZhY2VMYXllckxpc3Qp
OwogICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNrZXIoSW50UmVj
dCg1MCwgNTAsIDIwMCwgMjAwKSwgZmFsc2UpOwogICAgIENDTGF5ZXJJdGVyYXRvclR5cGUgaXQg
PSBDQ0xheWVySXRlcmF0b3JUeXBlOjpiZWdpbigmcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNl
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDUmVuZGVyU3VyZmFjZVRl
c3QuY3BwCmluZGV4IDMwNzUxZDc0ODMyNjhiNDVmNmQ3OTE4MGRhOTE4ZTNiNTNmMzdmZmIuLjVj
YmU3ZmM1NGY1MmYwMzIyMDJmNjk4MjQ4ZDZlMWRhZjc3MGE3YTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NSZW5kZXJTdXJmYWNlVGVzdC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1JlbmRlclN1cmZhY2VUZXN0LmNwcApAQCAtMjYs
MTQgKzI2LDE1IEBACiAKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2UuaCIKIAotI2luY2x1
ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIK
ICNpbmNsdWRlICJjYy9DQ1NoYXJlZFF1YWRTdGF0ZS5oIgogI2luY2x1ZGUgImNjL0NDU2luZ2xl
VGhyZWFkUHJveHkuaCIKICNpbmNsdWRlIDxnbW9jay9nbW9jay5oPgogI2luY2x1ZGUgPGd0ZXN0
L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeDsKIAogbmFtZXNwYWNlIHsKIApAQCAtNzcsNyArNzgsNyBAQCBURVNUKENDUmVuZGVy
U3VyZmFjZVRlc3QsIHZlcmlmeVN1cmZhY2VDaGFuZ2VzQXJlVHJhY2tlZFByb3Blcmx5KQogICAg
IEVYRUNVVEVfQU5EX1ZFUklGWV9TVVJGQUNFX0RJRF9OT1RfQ0hBTkdFKHJlbmRlclN1cmZhY2Ut
PnNldENvbnRlbnRSZWN0KHRlc3RSZWN0KSk7CiAKICAgICBPd25QdHI8Q0NMYXllckltcGw+IGR1
bW15TWFzayA9IENDTGF5ZXJJbXBsOjpjcmVhdGUoMSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggZHVtbXlNYXRyaXg7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZHVtbXlNYXRyaXg7
CiAgICAgZHVtbXlNYXRyaXgudHJhbnNsYXRlKDEuMCwgMi4wKTsKIAogICAgIC8vIFRoZSByZXN0
IG9mIHRoZSBzdXJmYWNlIHByb3BlcnRpZXMgYXJlIGVpdGhlciBpbnRlcm5hbCBhbmQgc2hvdWxk
IG5vdCBjYXVzZSBjaGFuZ2UsCkBAIC0xMDEsOCArMTAyLDggQEAgVEVTVChDQ1JlbmRlclN1cmZh
Y2VUZXN0LCBzYW5pdHlDaGVja1N1cmZhY2VDcmVhdGVzQ29ycmVjdFNoYXJlZFF1YWRTdGF0ZSkK
IAogICAgIEludFJlY3QgY29udGVudFJlY3QgPSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIElu
dFNpemUoNTAsIDUwKSk7CiAgICAgSW50UmVjdCBjbGlwUmVjdCA9IEludFJlY3QoSW50UG9pbnQo
NSwgNSksIEludFNpemUoNDAsIDQwKSk7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggZHJhdzsK
LSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcmlnaW47CisgICAgV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXggZHJhdzsKKyAgICBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBvcmlnaW47CiAKICAgICBk
cmF3LnRyYW5zbGF0ZSgzMCwgNDApOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9GbG9hdFF1YWRUZXN0LmNwcAppbmRleCA2YzcwOTFjYTQ5ZDY2MzU4MmVjNGQzM2E0MmZiZTNl
M2I5M2NjOTc3Li4zZTJmOWJjZTY3YjFmZDJhOWQxYTYxOGEwOTlhOTllOTYxMzNjNjVhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0Zsb2F0UXVhZFRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvRmxvYXRRdWFkVGVzdC5jcHAKQEAgLTI1
LDIwICsyNSwyMCBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgiCiAKKyNpbmNsdWRlICJjYy9DQ01h
dGhVdGlsLmgiCiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCi0KLSNpbmNsdWRlICJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oIgotCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJs
aWMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2Ugewog
CiBURVNUKEZsb2F0UXVhZFRlc3QsIElzUmVjdGlsaW5lYXJUZXN0KQogewogICAgIGNvbnN0IGlu
dCBudW1SZWN0aWxpbmVhciA9IDg7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggcmVjdGlsaW5l
YXJUcmFuc1tudW1SZWN0aWxpbmVhcl07CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggcmVj
dGlsaW5lYXJUcmFuc1tudW1SZWN0aWxpbmVhcl07CiAgICAgcmVjdGlsaW5lYXJUcmFuc1sxXS5y
b3RhdGUoOTApOwogICAgIHJlY3RpbGluZWFyVHJhbnNbMl0ucm90YXRlKDE4MCk7CiAgICAgcmVj
dGlsaW5lYXJUcmFuc1szXS5yb3RhdGUoMjcwKTsKQEAgLTUwLDEyICs1MCwxNCBAQCBURVNUKEZs
b2F0UXVhZFRlc3QsIElzUmVjdGlsaW5lYXJUZXN0KQogICAgIHJlY3RpbGluZWFyVHJhbnNbN10u
cm90YXRlKDE4MCk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bVJlY3RpbGluZWFyOyAr
K2kpIHsKLSAgICAgICAgRmxvYXRRdWFkIHF1YWQgPSByZWN0aWxpbmVhclRyYW5zW2ldLm1hcFF1
YWQoRmxvYXRSZWN0KDAuMDEwMTAxMDFmLCAwLjAxMDEwMTAxZiwgMTAwLjAxMDEwMTAxZiwgMTAw
LjAxMDEwMTAxZikpOworICAgICAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKKyAgICAgICAgRmxv
YXRRdWFkIHF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKHJlY3RpbGluZWFyVHJhbnNbaV0sIEZs
b2F0UmVjdCgwLjAxMDEwMTAxZiwgMC4wMTAxMDEwMWYsIDEwMC4wMTAxMDEwMWYsIDEwMC4wMTAx
MDEwMWYpLCBjbGlwcGVkKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoIWNsaXBwZWQpOwogICAgICAg
ICBFWFBFQ1RfVFJVRShxdWFkLmlzUmVjdGlsaW5lYXIoKSk7CiAgICAgfQogCiAgICAgY29uc3Qg
aW50IG51bU5vblJlY3RpbGluZWFyID0gMTA7Ci0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbm9u
UmVjdGlsaW5lYXJUcmFuc1tudW1Ob25SZWN0aWxpbmVhcl07CisgICAgV2ViVHJhbnNmb3JtYXRp
b25NYXRyaXggbm9uUmVjdGlsaW5lYXJUcmFuc1tudW1Ob25SZWN0aWxpbmVhcl07CiAgICAgbm9u
UmVjdGlsaW5lYXJUcmFuc1swXS5yb3RhdGUoMzU5Ljk5OSk7CiAgICAgbm9uUmVjdGlsaW5lYXJU
cmFuc1sxXS5yb3RhdGUoMC4wMDAwMDAxKTsKICAgICBub25SZWN0aWxpbmVhclRyYW5zWzJdLnJv
dGF0ZSg4OS45OTk5OTkpOwpAQCAtNjgsNyArNzAsOSBAQCBURVNUKEZsb2F0UXVhZFRlc3QsIElz
UmVjdGlsaW5lYXJUZXN0KQogICAgIG5vblJlY3RpbGluZWFyVHJhbnNbOV0uc2tld1koMC4wMDAw
MSk7CiAKICAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bU5vblJlY3RpbGluZWFyOyArK2kpIHsK
LSAgICAgICAgRmxvYXRRdWFkIHF1YWQgPSBub25SZWN0aWxpbmVhclRyYW5zW2ldLm1hcFF1YWQo
RmxvYXRSZWN0KDAuMDEwMTAxMDFmLCAwLjAxMDEwMTAxZiwgMTAwLjAxMDEwMTAxZiwgMTAwLjAx
MDEwMTAxZikpOworICAgICAgICBib29sIGNsaXBwZWQgPSBmYWxzZTsKKyAgICAgICAgRmxvYXRR
dWFkIHF1YWQgPSBDQ01hdGhVdGlsOjptYXBRdWFkKG5vblJlY3RpbGluZWFyVHJhbnNbaV0sIEZs
b2F0UmVjdCgwLjAxMDEwMTAxZiwgMC4wMTAxMDEwMWYsIDEwMC4wMTAxMDEwMWYsIDEwMC4wMTAx
MDEwMWYpLCBjbGlwcGVkKTsKKyAgICAgICAgQVNTRVJUX1RSVUUoIWNsaXBwZWQpOwogICAgICAg
ICBFWFBFQ1RfRkFMU0UocXVhZC5pc1JlY3RpbGluZWFyKCkpOwogICAgIH0KIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGF5ZXJDaHJvbWl1bVRlc3QuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKaW5kZXgg
NDkxZDQ4ZGI1MzE0OTRhNGYxZDJmZmI4MWYzZmE0YTFhNGY3MDdhMy4uODIxM2RkODEyMDcxZTVh
MzUwYzJkNWYxNzYwZTBiYmZhOGQ0OGY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9MYXllckNocm9taXVtVGVzdC5jcHAKQEAgLTM2LDkgKzM2LDExIEBACiAjaW5j
bHVkZSAiY2MvQ0NTaW5nbGVUaHJlYWRQcm94eS5oIgogI2luY2x1ZGUgPGdtb2NrL2dtb2NrLmg+
CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3Jt
YXRpb25NYXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3Bh
Y2UgV2ViS2l0VGVzdHM7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4Owog
dXNpbmcgOjp0ZXN0aW5nOjpNb2NrOwogdXNpbmcgOjp0ZXN0aW5nOjpfOwogdXNpbmcgOjp0ZXN0
aW5nOjpBdExlYXN0OwpAQCAtNDk2LDggKzQ5OCw4IEBAIFRFU1RfRihMYXllckNocm9taXVtVGVz
dCwgY2hlY2tQcm9wZXJ0eUNoYW5nZUNhdXNlc0NvcnJlY3RCZWhhdmlvcikKICAgICBFWEVDVVRF
X0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldERy
YXdPcGFjaXR5KDAuNWYpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1J
VF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldENsaXBSZWN0KEludFJlY3QoMywgMywgOCwgOCkp
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0
ZXN0TGF5ZXItPnNldFRhcmdldFJlbmRlclN1cmZhY2UoMCkpOwotICAgIEVYRUNVVEVfQU5EX1ZF
UklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDAsIHRlc3RMYXllci0+c2V0RHJhd1RyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NF
VF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMCwgdGVzdExheWVyLT5zZXRTY3JlZW5TcGFjZVRyYW5z
Zm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKSk7CisgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NF
VF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMCwgdGVzdExheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05F
RURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3Jt
KFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VU
X05FRURTX0NPTU1JVF9CRUhBVklPUigwLCB0ZXN0TGF5ZXItPnNldERyYXdhYmxlQ29udGVudFJl
Y3QoSW50UmVjdCg0LCA1LCA2LCA3KSkpOwogICAgIEVYUEVDVF9GQUxTRSh0ZXN0TGF5ZXItPm5l
ZWRzRGlzcGxheSgpKTsKIApAQCAtNTEyLDEzICs1MTQsMTMgQEAgVEVTVF9GKExheWVyQ2hyb21p
dW1UZXN0LCBjaGVja1Byb3BlcnR5Q2hhbmdlQ2F1c2VzQ29ycmVjdEJlaGF2aW9yKQogICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+
c2V0T3BhcXVlKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1J
VF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoNC4wZiwgOS4w
ZikpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigx
LCB0ZXN0TGF5ZXItPnNldFJlcGxpY2FMYXllcihkdW1teUxheWVyLmdldCgpKSk7Ci0gICAgRVhF
Q1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5z
ZXRTdWJsYXllclRyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAw
KSkpOworICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEs
IHRlc3RMYXllci0+c2V0U3VibGF5ZXJUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgo
MCwgMCwgMCwgMCwgMCwgMCkpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NP
TU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFNjcm9sbGFibGUodHJ1ZSkpOwogICAgIEVY
RUNVVEVfQU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+
c2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKHRydWUpKTsKICAgICBFWEVDVVRFX0FORF9WRVJJ
RllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldE5vbkZhc3RTY3Jv
bGxhYmxlUmVnaW9uKFJlZ2lvbihJbnRSZWN0KDEsIDEsIDIsIDIpKSkpOwogICAgIEVYRUNVVEVf
QU5EX1ZFUklGWV9TRVRfTkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0SGF2
ZVdoZWVsRXZlbnRIYW5kbGVycyh0cnVlKSk7CiAgICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9O
RUVEU19DT01NSVRfQkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRTY3JvbGxQb3NpdGlvbihJbnRQ
b2ludCgxMCwgMTApKSk7Ci0gICAgRVhFQ1VURV9BTkRfVkVSSUZZX1NFVF9ORUVEU19DT01NSVRf
QkVIQVZJT1IoMSwgdGVzdExheWVyLT5zZXRUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgo
MCwgMCwgMCwgMCwgMCwgMCkpKTsKKyAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NP
TU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldFRyYW5zZm9ybShXZWJUcmFuc2Zvcm1hdGlv
bk1hdHJpeCgwLCAwLCAwLCAwLCAwLCAwKSkpOwogICAgIEVYRUNVVEVfQU5EX1ZFUklGWV9TRVRf
TkVFRFNfQ09NTUlUX0JFSEFWSU9SKDEsIHRlc3RMYXllci0+c2V0RG91YmxlU2lkZWQoZmFsc2Up
KTsKICAgICBFWEVDVVRFX0FORF9WRVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0
ZXN0TGF5ZXItPnNldERlYnVnTmFtZSgiVGVzdCBMYXllciIpKTsKICAgICBFWEVDVVRFX0FORF9W
RVJJRllfU0VUX05FRURTX0NPTU1JVF9CRUhBVklPUigxLCB0ZXN0TGF5ZXItPnNldERyYXdDaGVj
a2VyYm9hcmRGb3JNaXNzaW5nVGlsZXMoIXRlc3RMYXllci0+ZHJhd0NoZWNrZXJib2FyZEZvck1p
c3NpbmdUaWxlcygpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L0xpbmtIaWdobGlnaHRUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlu
a0hpZ2hsaWdodFRlc3QuY3BwCmluZGV4IGVkY2ZkNGE2Mzc4MTA4NjVlNzVjNDFhYjM5M2U3MTQ3
OTM2NDIxNGYuLmJlNDY3YTBkNWFmMmY4YTUwODcyMjAwZTJlY2MyMGUyYTFmNDkwOWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlua0hpZ2hsaWdodFRlc3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvTGlua0hpZ2hsaWdodFRlc3QuY3Bw
CkBAIC0zMSwxMSArMzEsMTIgQEAKICNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2xpZW50LmgiCiAj
aW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIlBhdGguaCIKLSNpbmNsdWRlICJUcmFuc2Zv
cm1hdGlvbk1hdHJpeC5oIgogI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVi
bGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBXZWJLaXQ6OldlYlRyYW5zZm9y
bWF0aW9uTWF0cml4OwogCiBuYW1lc3BhY2UgewogCkBAIC02MywxMSArNjQsMTAgQEAgVEVTVChM
aW5rSGlnaGxpZ2h0VGVzdCwgdmVyaWZ5TGlua0hpZ2hsaWdodExheWVyKQogICAgIEVYUEVDVF9U
UlVFKGNvbnRlbnRMYXllci0+dHJhbnNmb3JtKCkuaXNJZGVudGl0eU9yVHJhbnNsYXRpb24oKSk7
CiAgICAgRVhQRUNUX1RSVUUoY29udGVudExheWVyLT50cmFuc2Zvcm0oKS5pc0ludGVnZXJUcmFu
c2xhdGlvbigpKTsKIAotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4OjpEZWNvbXBvc2VkVHlwZSBk
ZWNvbXBvc2l0aW9uOwotICAgIEVYUEVDVF9UUlVFKGNvbnRlbnRMYXllci0+dHJhbnNmb3JtKCku
ZGVjb21wb3NlKGRlY29tcG9zaXRpb24pKTsKLQotICAgIEZsb2F0UG9pbnQgZXhwZWN0ZWRUcmFu
c2xhdGlvbihwYXRoQm91bmRpbmdSZWN0LngoKSArIHBhdGhCb3VuZGluZ1JlY3Qud2lkdGgoKSAv
IDIsIHBhdGhCb3VuZGluZ1JlY3QueSgpICsgcGF0aEJvdW5kaW5nUmVjdC5oZWlnaHQoKSAvIDIp
OwotICAgIEVYUEVDVF9FUShGbG9hdFBvaW50KGRlY29tcG9zaXRpb24udHJhbnNsYXRlWCwgZGVj
b21wb3NpdGlvbi50cmFuc2xhdGVZKSwgZXhwZWN0ZWRUcmFuc2xhdGlvbik7CisgICAgZmxvYXQg
ZXhwZWN0ZWRYVHJhbnNsYXRpb24gPSBwYXRoQm91bmRpbmdSZWN0LngoKSArIHBhdGhCb3VuZGlu
Z1JlY3Qud2lkdGgoKSAvIDI7CisgICAgZmxvYXQgZXhwZWN0ZWRZVHJhbnNsYXRpb24gPSBwYXRo
Qm91bmRpbmdSZWN0LnkoKSArIHBhdGhCb3VuZGluZ1JlY3QuaGVpZ2h0KCkgLyAyOworICAgIEVY
UEVDVF9GTE9BVF9FUShleHBlY3RlZFhUcmFuc2xhdGlvbiwgY29udGVudExheWVyLT50cmFuc2Zv
cm0oKS5tNDEoKSk7CisgICAgRVhQRUNUX0ZMT0FUX0VRKGV4cGVjdGVkWVRyYW5zbGF0aW9uLCBj
b250ZW50TGF5ZXItPnRyYW5zZm9ybSgpLm00MigpKTsKIH0KIAogVEVTVChMaW5rSGlnaGxpZ2h0
VGVzdCwgdmVyaWZ5R3JhcGhpY3NMYXllckNocm9taXVtRW1iZWRkaW5nKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvVGlsZWRMYXllckNocm9taXVtVGVzdC5jcHAK
aW5kZXggYzkxMjVhODUyOWIxMTE4ZDhmYWYzMjUyZDIxZDczMDNiMjk5MzYyMi4uODBiMDk5ZjE5
ZmJmMzUzZjJhNTI2MDcyYTZmMTY0YmQ2NjM1MjU5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9UaWxlZExheWVyQ2hyb21pdW1UZXN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL1RpbGVkTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCkBAIC0zMywx
MCArMzMsMTIgQEAKICNpbmNsdWRlICJXZWJDb21wb3NpdG9yLmgiCiAjaW5jbHVkZSAiY2MvQ0NT
aW5nbGVUaHJlYWRQcm94eS5oIiAvLyBGb3IgRGVidWdTY29wZWRTZXRJbXBsVGhyZWFkCiAjaW5j
bHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViVHJhbnNmb3JtYXRpb25N
YXRyaXguaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0VGVzdHM7CiB1c2luZyBuYW1lc3BhY2UgV1RGOwordXNpbmcgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeDsKIAogI2RlZmluZSBFWFBFQ1RfRVFfUkVDVChhLCBiKSBcCiAgICAgRVhQ
RUNUX0VRKGEueCgpLCBiLngoKSk7IFwKQEAgLTEwOSw3ICsxMTEsNyBAQCBURVNUKFRpbGVkTGF5
ZXJDaHJvbWl1bVRlc3QsIHB1c2hPY2NsdWRlZERpcnR5VGlsZXMpCiAKICAgICAvLyBUaGUgdGls
ZSBzaXplIGlzIDEwMHgxMDAsIHNvIHRoaXMgaW52YWxpZGF0ZXMgYW5kIHRoZW4gcGFpbnRzIHR3
byB0aWxlcy4KICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAyMDApKTsKLSAgICBs
YXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBs
YXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8g
Mi4wKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3Vu
ZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KElu
dFJlY3QoMCwgMCwgMTAwLCAyMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVj
dCgwLCAwLCAxMDAsIDIwMCkpOwogICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwg
SW50UmVjdCgwLCAwLCAxMDAsIDIwMCksICZvY2NsdWRlZCk7CkBAIC0zMjcsNyArMzI5LDcgQEAg
VEVTVChUaWxlZExheWVyQ2hyb21pdW1UZXN0LCBwdXNoSWRsZVBhaW50ZWRPY2NsdWRlZFRpbGVz
KQogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMCwgMTAwKSk7CiAK
ICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoMTAwLCAxMDApKTsKLSAgICBsYXllci0+c2V0
RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91
bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7Cisg
ICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwg
MCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWln
aHQoKSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoMCwg
MCwgMTAwLCAxMDApKTsKICAgICBsYXllci0+aW52YWxpZGF0ZVJlY3QoSW50UmVjdCgwLCAwLCAx
MDAsIDEwMCkpOwogICAgIGxheWVyLT51cGRhdGVMYXllclJlY3QodXBkYXRlciwgSW50UmVjdCgw
LCAwLCAxMDAsIDEwMCksICZvY2NsdWRlZCk7CkBAIC0xMDE4LDcgKzEwMjAsNyBAQCBURVNUKFRp
bGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb24pCiAgICAgLy8g
VGhlIHRpbGUgc2l6ZSBpcyAxMDB4MTAwLgogCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXpl
KDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25N
YXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5i
b3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdl
YlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgp
IC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAogICAgIG9jY2x1ZGVk
LnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVyLT5z
ZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7
CkBAIC0xMDYzLDcgKzEwNjUsNyBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHRpbGVz
UGFpbnRlZFdpdGhPY2NsdXNpb25BbmRWaXNpYmxpdHlDb25zdHJhaW50cykKICAgICAvLyBUaGUg
dGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKICAgICBsYXllci0+c2V0Qm91bmRzKEludFNpemUoNjAw
LCA2MDApKTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJp
eCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5k
cygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJh
bnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAy
LjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOwogCiAgICAgLy8gVGhlIHBhcnRp
YWxseSBvY2NsdWRlZCB0aWxlcyAoYnkgdGhlIDE1MCBvY2NsdXNpb24gaGVpZ2h0KSBhcmUgdmlz
aWJsZSBiZXlvbmQgdGhlIG9jY2x1c2lvbiwgc28gbm90IGN1bGxlZC4KICAgICBvY2NsdWRlZC5z
ZXRPY2NsdXNpb24oSW50UmVjdCgyMDAsIDIwMCwgMzAwLCAxNTApKTsKQEAgLTExMTQsNyArMTEx
Niw3IEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgdGlsZXNOb3RQYWludGVkV2l0aG91
dEludmFsaWRhdGlvbikKICAgICAvLyBUaGUgdGlsZSBzaXplIGlzIDEwMHgxMDAuCiAKICAgICBs
YXllci0+c2V0Qm91bmRzKEludFNpemUoNjAwLCA2MDApKTsKLSAgICBsYXllci0+c2V0RHJhd1Ry
YW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCku
d2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5
ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwg
bGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAv
IDIuMCkpOwogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMjAwLCAyMDAsIDMw
MCwgMTAwKSk7CiAgICAgbGF5ZXItPnNldFZpc2libGVMYXllclJlY3QoSW50UmVjdCgwLCAwLCA2
MDAsIDYwMCkpOwpAQCAtMTE0OSwxMCArMTE1MSwxMCBAQCBURVNUKFRpbGVkTGF5ZXJDaHJvbWl1
bVRlc3QsIHRpbGVzUGFpbnRlZFdpdGhPY2NsdXNpb25BbmRUcmFuc2Zvcm1zKQogICAgIC8vIFRo
aXMgbWFrZXMgc3VyZSB0aGUgcGFpbnRpbmcgd29ya3Mgd2hlbiB0aGUgb2NjbHVkZWQgcmVnaW9u
IChpbiBzY3JlZW4gc3BhY2UpCiAgICAgLy8gaXMgdHJhbnNmb3JtZWQgZGlmZmVyZW50bHkgdGhh
biB0aGUgbGF5ZXIuCiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRTaXplKDYwMCwgNjAwKSk7Ci0g
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggc2NyZWVuVHJhbnNmb3JtOworICAgIFdlYlRyYW5zZm9y
bWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsKICAgICBzY3JlZW5UcmFuc2Zvcm0uc2NhbGUo
MC41KTsKICAgICBsYXllci0+c2V0U2NyZWVuU3BhY2VUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3Jt
KTsKLSAgICBsYXllci0+c2V0RHJhd1RyYW5zZm9ybShzY3JlZW5UcmFuc2Zvcm0gKiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRzKCkud2lkdGgoKSAvIDIuMCwg
bGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAgbGF5ZXItPnNldERyYXdUcmFu
c2Zvcm0oc2NyZWVuVHJhbnNmb3JtICogV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwg
MSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQo
KSAvIDIuMCkpOwogCiAgICAgb2NjbHVkZWQuc2V0T2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAs
IDE1MCwgNTApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdChJbnRSZWN0KEludFBv
aW50KCksIGxheWVyLT5ib3VuZHMoKSkpOwpAQCAtMTE3OSw3ICsxMTgxLDcgQEAgVEVTVChUaWxl
ZExheWVyQ2hyb21pdW1UZXN0LCB0aWxlc1BhaW50ZWRXaXRoT2NjbHVzaW9uQW5kU2NhbGluZykK
ICAgICAvLyBwaXhlbHMsIHdoaWNoIG1lYW5zIG5vbmUgc2hvdWxkIGJlIG9jY2x1ZGVkLgogICAg
IGxheWVyLT5zZXRDb250ZW50c1NjYWxlKDAuNSk7CiAgICAgbGF5ZXItPnNldEJvdW5kcyhJbnRT
aXplKDYwMCwgNjAwKSk7Ci0gICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVy
LT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOworICAgIGxheWVyLT5zZXREcmF3VHJhbnNmb3Jt
KFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0
aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0KCkgLyAyLjApKTsKIAogICAgIG9jY2x1
ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDIwMCwgMjAwLCAzMDAsIDEwMCkpOwogICAgIGxheWVy
LT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3QoSW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygp
KSk7CkBAIC0xMjEyLDEwICsxMjE0LDEwIEBAIFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwg
dGlsZXNQYWludGVkV2l0aE9jY2x1c2lvbkFuZFNjYWxpbmcpCiAgICAgbGF5ZXItPmZha2VMYXll
clRleHR1cmVVcGRhdGVyKCktPmNsZWFyUHJlcGFyZVJlY3RDb3VudCgpOwogCiAgICAgLy8gVGhp
cyBtYWtlcyBzdXJlIGNvbnRlbnQgc2NhbGluZyBhbmQgdHJhbnNmb3JtcyB3b3JrIHRvZ2V0aGVy
LgotICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHNjcmVlblRyYW5zZm9ybTsKKyAgICBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBzY3JlZW5UcmFuc2Zvcm07CiAgICAgc2NyZWVuVHJhbnNmb3JtLnNj
YWxlKDAuNSk7CiAgICAgbGF5ZXItPnNldFNjcmVlblNwYWNlVHJhbnNmb3JtKHNjcmVlblRyYW5z
Zm9ybSk7Ci0gICAgbGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oc2NyZWVuVHJhbnNmb3JtICogVHJh
bnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAy
LjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOworICAgIGxheWVyLT5zZXREcmF3
VHJhbnNmb3JtKHNjcmVlblRyYW5zZm9ybSAqIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAs
IDAsIDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVp
Z2h0KCkgLyAyLjApKTsKIAogICAgIG9jY2x1ZGVkLnNldE9jY2x1c2lvbihJbnRSZWN0KDEwMCwg
MTAwLCAxNTAsIDEwMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KEludFJlY3Qo
SW50UG9pbnQoKSwgbGF5ZXItPmJvdW5kcygpKSk7CkBAIC0xMjQ0LDcgKzEyNDYsNyBAQCBURVNU
KFRpbGVkTGF5ZXJDaHJvbWl1bVRlc3QsIHZpc2libGVDb250ZW50T3BhcXVlUmVnaW9uKQogICAg
IEludFJlY3QgdmlzaWJsZUJvdW5kcyA9IEludFJlY3QoMCwgMCwgMTAwLCAxNTApOwogCiAgICAg
bGF5ZXItPnNldEJvdW5kcyhjb250ZW50Qm91bmRzLnNpemUoKSk7Ci0gICAgbGF5ZXItPnNldERy
YXdUcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwgMSwgbGF5ZXItPmJvdW5k
cygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQoKSAvIDIuMCkpOworICAg
IGxheWVyLT5zZXREcmF3VHJhbnNmb3JtKFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KDEsIDAsIDAs
IDEsIGxheWVyLT5ib3VuZHMoKS53aWR0aCgpIC8gMi4wLCBsYXllci0+Ym91bmRzKCkuaGVpZ2h0
KCkgLyAyLjApKTsKICAgICBsYXllci0+c2V0VmlzaWJsZUxheWVyUmVjdCh2aXNpYmxlQm91bmRz
KTsKICAgICBsYXllci0+c2V0RHJhd09wYWNpdHkoMSk7CiAKQEAgLTEzMzgsNyArMTM0MCw3IEBA
IFRFU1QoVGlsZWRMYXllckNocm9taXVtVGVzdCwgcGl4ZWxzUGFpbnRlZE1ldHJpY3MpCiAgICAg
SW50UmVjdCB2aXNpYmxlQm91bmRzID0gSW50UmVjdCgwLCAwLCAxMDAsIDMwMCk7CiAKICAgICBs
YXllci0+c2V0Qm91bmRzKGNvbnRlbnRCb3VuZHMuc2l6ZSgpKTsKLSAgICBsYXllci0+c2V0RHJh
d1RyYW5zZm9ybShUcmFuc2Zvcm1hdGlvbk1hdHJpeCgxLCAwLCAwLCAxLCBsYXllci0+Ym91bmRz
KCkud2lkdGgoKSAvIDIuMCwgbGF5ZXItPmJvdW5kcygpLmhlaWdodCgpIC8gMi4wKSk7CisgICAg
bGF5ZXItPnNldERyYXdUcmFuc2Zvcm0oV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgoMSwgMCwgMCwg
MSwgbGF5ZXItPmJvdW5kcygpLndpZHRoKCkgLyAyLjAsIGxheWVyLT5ib3VuZHMoKS5oZWlnaHQo
KSAvIDIuMCkpOwogICAgIGxheWVyLT5zZXRWaXNpYmxlTGF5ZXJSZWN0KHZpc2libGVCb3VuZHMp
OwogICAgIGxheWVyLT5zZXREcmF3T3BhY2l0eSgxKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3QuY3BwIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9XZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3QuY3Bw
CmluZGV4IDRlYmU0ODYyNmI5OWRhNmI1M2U0MGI1MzNhZjAwYmMzYmY4MjQ0NDUuLjkzN2NlZTIw
MmE2Y2M1YTZjNjQwMDhjNzJiNGMwNjE0ODVjOTVkODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvV2ViVHJhbnNmb3JtYXRpb25NYXRyaXhUZXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4VGVzdC5j
cHAKQEAgLTE1Myw2ICsxNTMsMTUgQEAgVEVTVChXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3Qs
IHZlcmlmeUNvbnN0cnVjdG9yRm9yMmRFbGVtZW50cykKICAgICBFWFBFQ1RfUk9XNF9FUSgwLCAw
LCAwLCAxLCBBKTsKIH0KIAorVEVTVChXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3QsIHZlcmlm
eUNvbnN0cnVjdG9yRm9yQWxsRWxlbWVudHMpCit7CisgICAgV2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggQSgxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAx
Nik7CisgICAgRVhQRUNUX1JPVzFfRVEoMSwgNSwgIDksIDEzLCBBKTsKKyAgICBFWFBFQ1RfUk9X
Ml9FUSgyLCA2LCAxMCwgMTQsIEEpOworICAgIEVYUEVDVF9ST1czX0VRKDMsIDcsIDExLCAxNSwg
QSk7CisgICAgRVhQRUNUX1JPVzRfRVEoNCwgOCwgMTIsIDE2LCBBKTsKK30KKwogVEVTVChXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeFRlc3QsIHZlcmlmeUNvcHlDb25zdHJ1Y3RvcikKIHsKICAgICBX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBBOwo=
</data>
<flag name="review"
          id="152233"
          type_id="1"
          status="+"
          setter="jamesr"
    />
          </attachment>
      

    </bug>

</bugzilla>