<?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>159500</bug_id>
          
          <creation_ts>2016-07-06 18:23:07 -0700</creation_ts>
          <short_desc>[JSC] Unify how we throw TypeError from C++</short_desc>
          <delta_ts>2016-07-06 20:13:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Poulain">benjamin</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>jsbell</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1208484</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-06 18:23:07 -0700</bug_when>
    <thetext>[JSC] Unify how we throw TypeError from C++</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208490</commentid>
    <comment_count>1</comment_count>
      <attachid>282980</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-06 18:37:39 -0700</bug_when>
    <thetext>Created attachment 282980
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208492</commentid>
    <comment_count>2</comment_count>
      <attachid>282980</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-07-06 18:59:40 -0700</bug_when>
    <thetext>Comment on attachment 282980
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=282980&amp;action=review

r=me with comments

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        Throwing a TypeError is a uncommon case. We should minimize the impact

&quot;a&quot; =&gt; &quot;an&quot;

&gt; Source/JavaScriptCore/ChangeLog:17
&gt; +        On x86_64, this reduces the __TEXT__ segment by 29kb.

nice!

&gt; Source/JavaScriptCore/runtime/Error.h:87
&gt; +inline EncodedJSValue throwVMTypeError(ExecState* exec, ASCIILiteral errorMessage) { return JSValue::encode(throwTypeError(exec, errorMessage)); }

It&apos;s funny that &quot;...VM..Error&quot; just means that we return an EncodedJSValue. I wish we had a better name

&gt; Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp:61
&gt; +        return throwVMTypeError(exec, \

Style: This &quot;\&quot; should be aligned with the other &quot;\&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1208512</commentid>
    <comment_count>3</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-07-06 20:13:14 -0700</bug_when>
    <thetext>Committed r202890: &lt;http://trac.webkit.org/changeset/202890&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>282980</attachid>
            <date>2016-07-06 18:37:39 -0700</date>
            <delta_ts>2016-07-06 18:59:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-159500-20160706183706.patch</filename>
            <type>text/plain</type>
            <size>94468</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAyODQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBj
MGI4N2RmNGFmNTVhYmE2NjBmNjM5NjI4Mzg0ZmU3Y2NiOWY4N2I1Li41ZmIzZGUwNzBhOWM0ZTk4
Zjc1ZjAxNWE1ZDhiYjNkYjE1OGQ3ZGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5OSBAQAorMjAxNi0wNy0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxl
LmNvbT4KKworICAgICAgICBbSlNDXSBVbmlmeSBob3cgd2UgdGhyb3cgVHlwZUVycm9yIGZyb20g
QysrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1
MDAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaHJv
d2luZyBhIFR5cGVFcnJvciBpcyBhIHVuY29tbW9uIGNhc2UuIFdlIHNob3VsZCBtaW5pbWl6ZSB0
aGUgaW1wYWN0CisgICAgICAgIG9uIHRoZSBjYWxsIHNpdGVzLgorCisgICAgICAgIFRoaXMgcGF0
Y2ggZG9lcyB0aGF0IGJ5OgorICAgICAgICAtUmVwbGFjZSB0aGUgMiBjYWxscyBjcmVhdGVUeXBl
RXJyb3IoKS0+dGhyb3dFeGNlcHRpb24oKSBieSB0aHJvd1R5cGVFcnJvcigpLgorICAgICAgICAt
VXNlIEFTQ0lJTGl0ZXJhbCB3aGVuIHBvc3NpYmxlLgorICAgICAgICAtQWRkIGFuIG92ZXJsb2Fk
IG9mIHRocm93VHlwZUVycm9yKCkgdGFraW5nIEFTQ0lJTGl0ZXJhbCBkaXJlY3RseQorICAgICAg
ICAgKHRoYXQgd2F5LCB0aGUgU3RyaW5nIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbiBpcyBkb25l
IGJ5IHRoZSBjYWxsZWUpLgorCisgICAgICAgIE9uIHg4Nl82NCwgdGhpcyByZWR1Y2VzIHRoZSBf
X1RFWFRfXyBzZWdtZW50IGJ5IDI5a2IuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNJbmplY3Rl
ZFNjcmlwdEhvc3QuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0luamVjdGVkU2NyaXB0SG9z
dDo6ZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9KU0ph
dmFTY3JpcHRDYWxsRnJhbWUuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0phdmFTY3JpcHRD
YWxsRnJhbWU6OmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKToKKyAgICAgICAgKiBpbnRlcnBy
ZXRlci9JbnRlcnByZXRlci5jcHA6CisgICAgICAgIChKU0M6OkludGVycHJldGVyOjpleGVjdXRl
KToKKyAgICAgICAgKiBqaXQvSklUT3BlcmF0aW9ucy5jcHA6CisgICAgICAgICogcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6ZGF0ZVByb3RvRnVuY1RvSlNPTik6Cisg
ICAgICAgICogcnVudGltZS9FcnJvci5jcHA6CisgICAgICAgIChKU0M6OnRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IpOgorICAgICAgICAoSlNDOjp0aHJv
d1R5cGVFcnJvcik6CisgICAgICAgICogcnVudGltZS9FcnJvci5oOgorICAgICAgICAoSlNDOjp0
aHJvd1ZNVHlwZUVycm9yKToKKyAgICAgICAgKiBydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwOgorICAgICAgICAoSlNDOjphcnJheUJ1ZmZlclByb3RvRnVuY1NsaWNlKToKKyAgICAg
ICAgKiBydW50aW1lL0pTQ0pTVmFsdWUuY3BwOgorICAgICAgICAoSlNDOjpKU1ZhbHVlOjpwdXRU
b1ByaW1pdGl2ZSk6CisgICAgICAgIChKU0M6OkpTVmFsdWU6OnRvU3RyaW5nU2xvd0Nhc2UpOgor
ICAgICAgICAqIHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaDoKKyAgICAgICAgKEpTQzo6dG9Q
cmVmZXJyZWRQcmltaXRpdmVUeXBlKToKKyAgICAgICAgKiBydW50aW1lL0pTRGF0YVZpZXdQcm90
b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpnZXREYXRhKToKKyAgICAgICAgKEpTQzo6c2V0RGF0
YSk6CisgICAgICAgICogcnVudGltZS9KU0Z1bmN0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6SlNG
dW5jdGlvbjo6ZGVmaW5lT3duUHJvcGVydHkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaDoKKyAgICAgICAgKEpTQzo6Y29uc3Ry
dWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3RnJvbUl0ZXJhdG9yKToKKyAgICAgICAgKEpTQzo6Y29u
c3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyk6CisgICAgICAgIChKU0M6
OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9KU0dl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oOgorICAgICAgICAoSlNDOjpz
cGVjaWVzQ29uc3RydWN0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jU2V0KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Q29weVdpdGhpbik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luZGV4T2YpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNM
YXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y1N1YmFycmF5KToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cDoKKyAgICAgICAgKEpTQzo6Z2xvYmFsRnVuY1Byb3RvR2V0dGVyKToKKyAgICAgICAgKEpTQzo6
Z2xvYmFsRnVuY1Byb3RvU2V0dGVyKToKKyAgICAgICAgKiBydW50aW1lL0pTT05PYmplY3QuY3Bw
OgorICAgICAgICAoSlNDOjpTdHJpbmdpZmllcjo6YXBwZW5kU3RyaW5naWZpZWRWYWx1ZSk6Cisg
ICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT2JqZWN0Ojpz
ZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayk6CisgICAgICAgIChKU0M6OmNhbGxUb1ByaW1pdGl2
ZUZ1bmN0aW9uKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6Om9yZGluYXJ5VG9QcmltaXRpdmUp
OgorICAgICAgICAoSlNDOjpKU09iamVjdDo6ZGVmYXVsdEhhc0luc3RhbmNlKToKKyAgICAgICAg
KEpTQzo6dmFsaWRhdGVBbmRBcHBseVByb3BlcnR5RGVzY3JpcHRvcik6CisgICAgICAgICogcnVu
dGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25z
dHJ1Y3RUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3
UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xl
bmd0aCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAg
ICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpT
Qzo6dHlwZWRBcnJheVZpZXdQcm90b0Z1bmNGaWxsKToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJh
eVZpZXdQcm90b0Z1bmNMYXN0SW5kZXhPZik6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jSW5kZXhPZik6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9GdW5j
Sm9pbik6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnVmZmVy
KToKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgpOgor
ICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVMZW5ndGgpOgor
ICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5dGVPZmZzZXQpOgor
ICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UpOgorICAgICAgICAo
SlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1N1YmFycmF5KToKKyAgICAgICAgKEpTQzo6dHlw
ZWRBcnJheVZpZXdQcm90b0Z1bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OnRvUHJvcGVydHlEZXNjcmlwdG9yKToKKyAgICAg
ICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JEZWZpbmVQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6
Om9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyk6CisgICAgICAgIChKU0M6Om9iamVj
dENvbnN0cnVjdG9yQ3JlYXRlKToKKyAgICAgICAgKiBydW50aW1lL09iamVjdFByb3RvdHlwZS5j
cHA6CisgICAgICAgIChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZUdldHRlcik6CisgICAgICAg
IChKU0M6Om9iamVjdFByb3RvRnVuY0RlZmluZVNldHRlcik6CisgICAgICAgICogcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjpyZWdFeHBQcm90b0Z1bmNDb21waWxl
KToKKyAgICAgICAgKiBydW50aW1lL1N5bWJvbC5jcHA6CisgICAgICAgIChKU0M6OlN5bWJvbDo6
dG9OdW1iZXIpOgorCiAyMDE2LTA3LTA1ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5j
b20+CiAKICAgICAgICAgQ3Jhc2ggQCBiYW5rb2ZhbWVyaWNhLmNvbSwgVW5pdmVyc2l0eSBvZiBW
aWVubmEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBmODYwYzg1YmU5YTQ3MmI2NjE4NTQ4ZDc4ZjFlNjY4NjdlNDc1
MzlmLi5mYzBkNzViMjkxYWU2MDMxZTRiZjgyMGVhNjc5NDZiY2JjMDNmODZjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsNjkgQEAKKzIwMTYtMDctMDYgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFp
bkBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gVW5pZnkgaG93IHdlIHRocm93IFR5cGVFcnJv
ciBmcm9tIEMrKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTU5NTAwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SlNCaXF1YWRGaWx0ZXJOb2RlOjpzZXRUeXBlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9qcy9KU0Jsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNCbG9i
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Z2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6SlNDcnlwdG9LZXlTZXJp
YWxpemF0aW9uSldLKToKKyAgICAgICAgKFdlYkNvcmU6OnRyeUpXS0tleU9wc1ZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6cmVjb25jaWxlVXNh
Z2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5
RGF0YU9jdGV0U2VxdWVuY2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNDcnlwdG9LZXlTZXJpYWxp
emF0aW9uSldLOjprZXlEYXRhUlNBQ29tcG9uZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpKU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OmtleURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6YWRk
SldLQWxnb3JpdGhtVG9KU09OKToKKyAgICAgICAgKFdlYkNvcmU6OkpTQ3J5cHRvS2V5U2VyaWFs
aXphdGlvbkpXSzo6c2VyaWFsaXplKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0NyeXB0b09w
ZXJhdGlvbkRhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3J5cHRvT3BlcmF0aW9uRGF0YUZy
b21KU1ZhbHVlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZW5mb3JjZVJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93VHlw
ZUVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OnRocm93QXJndW1lbnRNdXN0QmVFbnVtRXJyb3Ip
OgorICAgICAgICAoV2ViQ29yZTo6dGhyb3dBcmd1bWVudE11c3RCZUZ1bmN0aW9uRXJyb3IpOgor
ICAgICAgICAoV2ViQ29yZTo6dGhyb3dBcmd1bWVudFR5cGVFcnJvcik6CisgICAgICAgIChXZWJD
b3JlOjp0aHJvd0FycmF5RWxlbWVudFR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJv
d0dldHRlclR5cGVFcnJvcik6CisgICAgICAgIChXZWJDb3JlOjp0aHJvd1RoaXNUeXBlRXJyb3Ip
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRGF0YUN1ZUN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpjb25zdHJ1Y3RKU0RhdGFDdWUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRG9j
dW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6ZGVmaW5lRWxl
bWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdEpTRmlsZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNb2R1
bGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU011dGF0aW9uT2JzZXJ2ZXJDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Y29uc3RydWN0SlNNdXRhdGlvbk9ic2VydmVyKToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTT3NjaWxsYXRvck5vZGU6OnNldFR5cGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
UGFubmVyTm9kZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNl
dFBhbm5pbmdNb2RlbCk6CisgICAgICAgIChXZWJDb3JlOjpKU1Bhbm5lck5vZGU6OnNldERpc3Rh
bmNlTW9kZWwpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRl
Q29uc3RydWN0b3JzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTUmVhZGFibGVT
dHJlYW1Db250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnN0cnVjdEpTUmVhZGFibGVT
dHJlYW1SZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9t
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyeXB0b0tleUZvcm1hdEZyb21KU1ZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmU6OmltcG9ydEtleSk6CisgICAgICAgIChXZWJDb3JlOjpleHBvcnRLZXkp
OgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6Omludm9rZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNsb25lRGVzZXJpYWxpemVyOjp0aHJvd1ZhbGlkYXRpb25FcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1heWJlVGhyb3dFeGNlcHRpb25JZlNl
cmlhbGl6YXRpb25GYWlsZWQpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFuY2UuY3BwOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VNZXRob2QpOgorICAgICAg
ICAqIGJyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW06CisgICAgICAgIChPYmpjSW5zdGFuY2U6
Omludm9rZU1ldGhvZCk6CisgICAgICAgICogYnJpZGdlL29iamMvb2JqY19ydW50aW1lLm1tOgor
ICAgICAgICAoSlNDOjpCaW5kaW5nczo6T2JqY0FycmF5OjpzZXRWYWx1ZUF0KToKKwogMjAxNi0w
Ny0wNSAgSm9oYW4gSy4gSmVuc2VuICA8ampAam9oYW5qZW5zZW4uZGs+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogU2VuZGluZyBYSFIgd2l0aCBVVEY4IGVuY29kZWQgZGF0YSBzaG93cyBnYXJi
bGVkIGRhdGEgaW4gUmVzb3VyY2Ugc2lkZWJhcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDI4MzJiY2I4
ZDRjMjhhMzNmOGI4ZGY5ZjY3ZWQ3YzM1MGJhMWQzMzQuLjQ5MzQzMmI0OTg0MmM5ZDdlZGViNjAz
NDliZWY5Y2RhYmMzNDNkYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAx
Ni0wNy0wNiAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KKworICAgICAg
ICBbSlNDXSBVbmlmeSBob3cgd2UgdGhyb3cgVHlwZUVycm9yIGZyb20gQysrCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk1MDAKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1By
b3h5SW5zdGFuY2UubW06CisgICAgICAgIChXZWJLaXQ6OlByb3h5SW5zdGFuY2U6Omludm9rZU1l
dGhvZCk6CisKIDIwMTYtMDctMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5mQGdtYWlsLmNvbT4K
IAogICAgICAgICBBZGQgYSBydW50aW1lIGZsYWcgZm9yIERPTSBpdGVyYXRvcnMKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNJbmplY3RlZFNjcmlwdEhvc3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9z
dC5jcHAKaW5kZXggNGE3ZDU5MjQ0NWEzYmE5ODMzNjBiMjMwOGVmZjFhYjgyNDk4Y2ExZi4uZGQ1
Mjk1OTU5OWQ5ZWNmZmM0ZWZiYWEwZTllNzZhNjNjNDI3Nzk0MSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0luamVjdGVkU2NyaXB0SG9zdC5jcHAK
QEAgLTk3LDcgKzk3LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVX
aXRoU2NvcGVFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgc2NyaXB0
VmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXNjcmlwdFZhbHVlLmlzU3RyaW5n
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCAiSW5qZWN0ZWRTY3JpcHRI
b3N0LmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBz
dHJpbmcuIik7CisgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbiBmaXJzdCBh
cmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLiIpKTsKIAogICAgIFN0cmluZyBwcm9ncmFtID0gc2Ny
aXB0VmFsdWUudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAppbmRleCBhMWRhYjUxMGMxZDA1NDUyZDVkY2Nl
OTczOWEzODVkMmE2MDI4YzFmLi44ZTYzNDU0ZjZmMzcyZTdhNzIyNWQ3ZTkzZGI3ZDgxMzdiODBm
ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTSmF2YVNj
cmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9K
U0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCkBAIC03OSw3ICs3OSw3IEBAIEpTVmFsdWUgSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lOjpldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSBzY3JpcHRWYWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmICghc2NyaXB0VmFsdWUuaXNTdHJpbmcoKSkKLSAgICAgICAgcmV0dXJuIHRocm93VHlwZUVy
cm9yKGV4ZWMsICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24gZmlyc3QgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZy4iKTsKKyAgICAgICAgcmV0dXJuIHRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcu
IikpOwogCiAgICAgU3RyaW5nIHNjcmlwdCA9IHNjcmlwdFZhbHVlLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0ludGVycHJldGVyLmNwcAppbmRleCA3NGY4YzUz
ZTEyMWM1NTM4ZmI1NGU3ZGY0NTk2OWFjNzM0MDgwNjc5Li5hMTEyMzYzYmNjMzlmOGQ0ZThmMzNh
YzYyYmMxNDlkZDA0ODgwYWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50
ZXJwcmV0ZXIvSW50ZXJwcmV0ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9JbnRlcnByZXRlci5jcHAKQEAgLTExODUsOCArMTE4NSw3IEBAIEpTVmFsdWUgSW50
ZXJwcmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZy
YW1lLCBKU1ZhbHVlCiAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGNvZGVC
bG9jay0+dmFyaWFibGUoaSk7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChnbG9iYWxM
ZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBlOjpWTUlu
cXVpcnkpOwogICAgICAgICAgICAgaWYgKEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50OjpnZXRP
d25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBjYWxsRnJhbWUsIGlkZW50
LCBzbG90KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBjaGVja2VkUmV0dXJuKGNhbGxGcmFt
ZS0+dm0oKS50aHJvd0V4Y2VwdGlvbihjYWxsRnJhbWUsCi0gICAgICAgICAgICAgICAgICAgIGNy
ZWF0ZVR5cGVFcnJvcihjYWxsRnJhbWUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNh
dGUgZ2xvYmFsIHZhcmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIici
KSkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2hlY2tlZFJldHVybih0aHJvd1R5cGVFcnJv
cihjYWxsRnJhbWUsIG1ha2VTdHJpbmcoIkNhbid0IGNyZWF0ZSBkdXBsaWNhdGUgZ2xvYmFsIHZh
cmlhYmxlIGluIGV2YWw6ICciLCBTdHJpbmcoaWRlbnQuaW1wbCgpKSwgIiciKSkpOwogICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKQEAgLTExOTQsOCArMTE5Myw3IEBAIEpTVmFsdWUgSW50ZXJw
cmV0ZXI6OmV4ZWN1dGUoRXZhbEV4ZWN1dGFibGUqIGV2YWwsIENhbGxGcmFtZSogY2FsbEZyYW1l
LCBKU1ZhbHVlCiAgICAgICAgICAgICBGdW5jdGlvbkV4ZWN1dGFibGUqIGZ1bmN0aW9uID0gY29k
ZUJsb2NrLT5mdW5jdGlvbkRlY2woaSk7CiAgICAgICAgICAgICBQcm9wZXJ0eVNsb3Qgc2xvdChn
bG9iYWxMZXhpY2FsRW52aXJvbm1lbnQsIFByb3BlcnR5U2xvdDo6SW50ZXJuYWxNZXRob2RUeXBl
OjpWTUlucXVpcnkpOwogICAgICAgICAgICAgaWYgKEpTR2xvYmFsTGV4aWNhbEVudmlyb25tZW50
OjpnZXRPd25Qcm9wZXJ0eVNsb3QoZ2xvYmFsTGV4aWNhbEVudmlyb25tZW50LCBjYWxsRnJhbWUs
IGZ1bmN0aW9uLT5uYW1lKCksIHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNoZWNr
ZWRSZXR1cm4oY2FsbEZyYW1lLT52bSgpLnRocm93RXhjZXB0aW9uKGNhbGxGcmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlVHlwZUVycm9yKGNhbGxGcmFtZSwgbWFrZVN0cmluZygiQ2Fu
J3QgY3JlYXRlIGR1cGxpY2F0ZSBnbG9iYWwgdmFyaWFibGUgaW4gZXZhbDogJyIsIFN0cmluZyhm
dW5jdGlvbi0+bmFtZSgpLmltcGwoKSksICInIikpKSk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGNoZWNrZWRSZXR1cm4odGhyb3dUeXBlRXJyb3IoY2FsbEZyYW1lLCBtYWtlU3RyaW5nKCJDYW4n
dCBjcmVhdGUgZHVwbGljYXRlIGdsb2JhbCB2YXJpYWJsZSBpbiBldmFsOiAnIiwgU3RyaW5nKGZ1
bmN0aW9uLT5uYW1lKCkuaW1wbCgpKSwgIiciKSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9KSVRPcGVyYXRp
b25zLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvSklUT3BlcmF0aW9ucy5jcHAKaW5k
ZXggMDFmM2MzZDAxOWIwMDUzN2ZiMjcxNTc3NTczMmJiZDQ3YTNiZTQ5NS4uZWI0ZTM4MWUyMjBh
YjFiODljMjY2MWY4M2QyMTFiMTM5YWU3MzhhNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9KSVRPcGVyYXRpb25zLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aml0L0pJVE9wZXJhdGlvbnMuY3BwCkBAIC0xMTcyLDcgKzExNzIsNyBAQCB2b2lkIEpJVF9PUEVS
QVRJT04gb3BlcmF0aW9uVGhyb3dTdGF0aWNFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEVuY29kZWRK
U1ZhbHVlIGVuYwogICAgIGlmIChyZWZlcmVuY2VFcnJvckZsYWcpCiAgICAgICAgIHZtLnRocm93
RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVJlZmVyZW5jZUVycm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkp
OwogICAgIGVsc2UKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIGVycm9yTWVzc2FnZSkpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBl
cnJvck1lc3NhZ2UpOwogfQogCiB2b2lkIEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVidWcoRXhl
Y1N0YXRlKiBleGVjLCBpbnQzMl90IGRlYnVnSG9va0lEKQpAQCAtMTg3Myw3ICsxODczLDcgQEAg
c2l6ZV90IEpJVF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlJZChFeGVjU3RhdGUqIGV4ZWMs
IEVuY29kZWRKU1ZhbHVlIGVuY29kZWQKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGJvb2wg
Y291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJsZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJh
c2VPYmosIGV4ZWMsIElkZW50aWZpZXI6OmZyb21VaWQoJnZtLCB1aWQpKTsKICAgICBpZiAoIWNv
dWxkRGVsZXRlICYmIGV4ZWMtPmNvZGVCbG9jaygpLT5pc1N0cmljdE1vZGUoKSkKLSAgICAgICAg
dm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiVW5hYmxlIHRvIGRlbGV0ZSBwcm9wZXJ0eS4iKSkpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpOwogICAg
IHJldHVybiBjb3VsZERlbGV0ZTsKIH0KIApAQCAtMTkwNSw3ICsxOTA1LDcgQEAgc2l6ZV90IEpJ
VF9PUEVSQVRJT04gb3BlcmF0aW9uRGVsZXRlQnlWYWwoRXhlY1N0YXRlKiBleGVjLCBFbmNvZGVk
SlNWYWx1ZSBlbmNvZGUKICAgICAgICAgY291bGREZWxldGUgPSBiYXNlT2JqLT5tZXRob2RUYWJs
ZSh2bSktPmRlbGV0ZVByb3BlcnR5KGJhc2VPYmosIGV4ZWMsIHByb3BlcnR5KTsKICAgICB9CiAg
ICAgaWYgKCFjb3VsZERlbGV0ZSAmJiBleGVjLT5jb2RlQmxvY2soKS0+aXNTdHJpY3RNb2RlKCkp
Ci0gICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlVuYWJsZSB0byBkZWxldGUgcHJvcGVydHkuIikpKTsKKyAgICAgICAgdGhy
b3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVsZXRlIHByb3BlcnR5
LiIpKTsKICAgICByZXR1cm4gY291bGREZWxldGU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0RhdGVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAKaW5kZXggOTkzNjUxNTY4MWJjNTlkMTQy
YWYwOTY1ZTc1OWNhNWUxMGVlYWQzZC4uZjYyMTg5MTJhOWVjZmZiZTY2YjJlOWU4NWQyZTYzZThm
Yzc2MWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVBy
b3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3Rv
dHlwZS5jcHAKQEAgLTExMTIsMTMgKzExMTIsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBkYXRlUHJvdG9GdW5jVG9KU09OKEV4ZWNTdGF0ZSogZXhlYykKICAgICBDYWxsRGF0YSBj
YWxsRGF0YTsKICAgICBDYWxsVHlwZSBjYWxsVHlwZSA9IGdldENhbGxEYXRhKHRvSVNPVmFsdWUs
IGNhbGxEYXRhKTsKICAgICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAg
IHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgidG9JU09TdHJpbmcgaXMgbm90IGEgZnVuY3Rpb24iKSkpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoInRvSVNPU3RyaW5nIGlzIG5vdCBh
IGZ1bmN0aW9uIikpOwogCiAgICAgSlNWYWx1ZSByZXN1bHQgPSBjYWxsKGV4ZWMsIGFzT2JqZWN0
KHRvSVNPVmFsdWUpLCBjYWxsVHlwZSwgY2FsbERhdGEsIG9iamVjdCwgZXhlYy0+ZW1wdHlMaXN0
KCkpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bGwoKSk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoInRvSVNPU3RyaW5nIGRpZCBub3QgcmV0dXJuIGEgcHJpbWl0aXZlIHZhbHVlIikpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJ0b0lT
T1N0cmluZyBkaWQgbm90IHJldHVybiBhIHByaW1pdGl2ZSB2YWx1ZSIpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKHJlc3VsdCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0Vycm9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0Vycm9yLmNwcAppbmRleCBiMzMwNzkxZTQxMjg3ZTk4MDFlYTAwZjQ1NGE0NzViNjg4OWRhYjhh
Li45M2E1MGRiMzU2MDRjZDMzMjYzZTZmMWM0YmZiMTRlZWQ0NWU0MTZkIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FcnJvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuY3BwCkBAIC0yMDgsNyArMjA4LDcgQEAgYm9vbCBoYXNF
cnJvckluZm8oRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogZXJyb3IpCiAKIEpTT2JqZWN0KiB0
aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9uVHlwZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgY29uc3QgY2hhciogY29uc3RydWN0b3JOYW1lKQogewotICAgIHJldHVybiBleGVj
LT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBtYWtlU3Ry
aW5nKCJjYWxsaW5nICIsIGNvbnN0cnVjdG9yTmFtZSwgIiBjb25zdHJ1Y3RvciB3aXRob3V0IG5l
dyBpcyBpbnZhbGlkIikpKTsKKyAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgbWFrZVN0
cmluZygiY2FsbGluZyAiLCBjb25zdHJ1Y3Rvck5hbWUsICIgY29uc3RydWN0b3Igd2l0aG91dCBu
ZXcgaXMgaW52YWxpZCIpKTsKIH0KIAogSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYykKQEAgLTIxNiw2ICsyMTYsMTEgQEAgSlNPYmplY3QqIHRocm93VHlwZUVycm9yKEV4
ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVj
LCBjcmVhdGVUeXBlRXJyb3IoZXhlYykpOwogfQogCitKU09iamVjdCogdGhyb3dUeXBlRXJyb3Io
RXhlY1N0YXRlKiBleGVjLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKQoreworICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpbmcoZXJyb3JNZXNzYWdlKSk7Cit9CisKIEpTT2Jq
ZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFN0cmluZyYgbWVzc2Fn
ZSkKIHsKICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgbWVzc2FnZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvRXJyb3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Vycm9y
LmgKaW5kZXggMWU1ODU3ZGRiNzVjMTZkYjE1M2I3ODk2MGFiODEyZmQ1OWRlMWU0Zi4uNmU5YmVj
YjhjNTRjNzcxMTM5OWVhNmM5NDllMWQzODIwNzU0OGVjYiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXJyb3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9FcnJvci5oCkBAIC03NCw2ICs3NCw3IEBAIEpTT2JqZWN0KiBhZGRFcnJvckluZm8o
RXhlY1N0YXRlKiwgSlNPYmplY3QqIGVycm9yLCBpbnQgbGluZSwgY29uc3QgU291cmNlQ29kZSYp
CiAvLyBDb252ZW5pZW5jZSB3cmFwcGVycywgY3JlYXRlIGFuIHRocm93IGFuIGV4Y2VwdGlvbiB3
aXRoIGEgZGVmYXVsdCBtZXNzYWdlLgogSlNfRVhQT1JUX1BSSVZBVEUgSlNPYmplY3QqIHRocm93
Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoRXhlY1N0YXRlKiwg
Y29uc3QgY2hhciogY29uc3RydWN0b3JOYW1lKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqKTsKK0pTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKTsK
IEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0KiB0aHJvd1R5cGVFcnJvcihFeGVjU3RhdGUqLCBj
b25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiBKU19FWFBPUlRfUFJJVkFURSBKU09iamVjdCog
dGhyb3dTeW50YXhFcnJvcihFeGVjU3RhdGUqKTsKIEpTX0VYUE9SVF9QUklWQVRFIEpTT2JqZWN0
KiB0aHJvd1N5bnRheEVycm9yKEV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KTsKQEAgLTgzLDYgKzg0LDcgQEAgaW5saW5lIEpTT2JqZWN0KiB0aHJvd1JhbmdlRXJyb3IoRXhl
Y1N0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIHsKIGlubGluZSB2b2lk
IHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEV4Y2VwdGlvbiogZXhjZXB0aW9uKSB7IGV4
ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsgfQogaW5saW5lIEVuY29k
ZWRKU1ZhbHVlIHRocm93Vk1FcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgZXJyb3IpIHsg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGVy
cm9yKSk7IH0KIGlubGluZSBFbmNvZGVkSlNWYWx1ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0
ZSogZXhlYykgeyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMpKTsg
fQoraW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1UeXBlRXJyb3IoRXhlY1N0YXRlKiBleGVj
LCBBU0NJSUxpdGVyYWwgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dUeXBlRXJyb3IoZXhlYywgZXJyb3JNZXNzYWdlKSk7IH0KIGlubGluZSBFbmNvZGVkSlNWYWx1
ZSB0aHJvd1ZNVHlwZUVycm9yKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgU3RyaW5nJiBlcnJvck1l
c3NhZ2UpIHsgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBlcnJv
ck1lc3NhZ2UpKTsgfQogaW5saW5lIEVuY29kZWRKU1ZhbHVlIHRocm93Vk1SYW5nZUVycm9yKEV4
ZWNTdGF0ZSogc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSB7IHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dSYW5nZUVycm9yKHN0YXRlLCBlcnJvck1lc3NhZ2UpKTsgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQ
cm90b3R5cGUuY3BwCmluZGV4IGQyOWUyODNmMmQ3Yzg5YTFkNzA2M2M0Zjg2YmVhNzQ2YmI4YjU5
MDcuLmYwZTM3NDEyZjBkYmRiZWI0NTc0NTAyMzA5NWY4MGIzZmUzYWU2NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5cGUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJQcm90b3R5
cGUuY3BwCkBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgYXJyYXlCdWZmZXJQcm90b0Z1bmNTbGljZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAg
ICAgSlNBcnJheUJ1ZmZlciogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZl
cio+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIXRoaXNPYmplY3QpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJh
bCgiUmVjZWl2ZXIgb2Ygc2xpY2UgbXVzdCBiZSBhbiBhcnJheSBidWZmZXIuIikpKTsKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBv
ZiBzbGljZSBtdXN0IGJlIGFuIGFycmF5IGJ1ZmZlci4iKSk7CiAgICAgCiAgICAgaWYgKCFleGVj
LT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qg
b25lIGFyZ3VtZW50LiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiU2xpY2UgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsK
ICAgICAKICAgICBpbnQzMl90IGJlZ2luID0gZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVj
KTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCmluZGV4IGRkZjNiNWZmNTc2ZDA3MDkzMDUwODFkYTkz
NTEyMmVlMDU1MDkxY2QuLmI4ZGQyMmFhODBlOGVlYzI0ZDhhMjQzNzIxMDQwMDEzNjJjM2Q3NjIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWUuY3BwCkBAIC0x
NTcsNyArMTU3LDcgQEAgYm9vbCBKU1ZhbHVlOjpwdXRUb1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4
ZWMsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUsIEpTVmFsdWUKICAgICAgICAgaWYgKG9mZnNl
dCAhPSBpbnZhbGlkT2Zmc2V0KSB7CiAgICAgICAgICAgICBpZiAoYXR0cmlidXRlcyAmIFJlYWRP
bmx5KSB7CiAgICAgICAgICAgICAgICAgaWYgKHNsb3QuaXNTdHJpY3RNb2RlKCkpCi0gICAgICAg
ICAgICAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOworICAgICAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIH0KIApAQCAtMzQ2LDcgKzM0Niw3IEBAIEpTU3RyaW5nKiBKU1ZhbHVlOjp0b1N0cmluZ1Ns
b3dDYXNlKEV4ZWNTdGF0ZSogZXhlYywgYm9vbCByZXR1cm5FbXB0eVN0cmluZ09uRXJyCiAgICAg
aWYgKGlzVW5kZWZpbmVkKCkpCiAgICAgICAgIHJldHVybiB2bS5zbWFsbFN0cmluZ3MudW5kZWZp
bmVkU3RyaW5nKCk7CiAgICAgaWYgKGlzU3ltYm9sKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJy
b3IoZXhlYywgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9sIHRvIGEgc3RyaW5nIik7CisgICAgICAg
IHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IGNvbnZlcnQgYSBzeW1i
b2wgdG8gYSBzdHJpbmciKSk7CiAgICAgICAgIHJldHVybiBlcnJvclZhbHVlKCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMu
aAppbmRleCA3Y2UzNDU3YThkNjBmODY5ZDQzMDg4NWYxMjRiYzM2YzAyZjhmM2QxLi44MDJlYjI3
MWFiOTljMWRhM2Y2ZjBhODkxZGU0MjQyYTVlNjU3ODc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NKU1ZhbHVlSW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTQ0pTVmFsdWVJbmxpbmVzLmgKQEAgLTYzMiw3ICs2MzIsNyBA
QCBpbmxpbmUgSlNWYWx1ZSBKU1ZhbHVlOjp0b1ByaW1pdGl2ZShFeGVjU3RhdGUqIGV4ZWMsIFBy
ZWZlcnJlZFByaW1pdGl2ZVR5cGUgcHJlZgogaW5saW5lIFByZWZlcnJlZFByaW1pdGl2ZVR5cGUg
dG9QcmVmZXJyZWRQcmltaXRpdmVUeXBlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB2YWx1ZSkK
IHsKICAgICBpZiAoIXZhbHVlLmlzU3RyaW5nKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgIlByaW1pdGl2ZSBoaW50IGlzIG5vdCBhIHN0cmluZy4iKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcmltaXRpdmUgaGludCBpcyBub3QgYSBzdHJp
bmcuIikpOwogICAgICAgICByZXR1cm4gTm9QcmVmZXJlbmNlOwogICAgIH0KIApAQCAtNjQ3LDcg
KzY0Nyw3IEBAIGlubGluZSBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIHRvUHJlZmVycmVkUHJpbWl0
aXZlVHlwZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUKICAgICBpZiAoV1RGOjplcXVhbChoaW50
U3RyaW5nLCAic3RyaW5nIikpCiAgICAgICAgIHJldHVybiBQcmVmZXJTdHJpbmc7CiAKLSAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8gbWF0Y2ggb25l
IG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcnLiIpOworICAgIHRocm93VHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRXhwZWN0ZWQgcHJpbWl0aXZlIGhpbnQgdG8gbWF0Y2ggb25l
IG9mICdkZWZhdWx0JywgJ251bWJlcicsICdzdHJpbmcnLiIpKTsKICAgICByZXR1cm4gTm9QcmVm
ZXJlbmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0RhdGFWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RGF0YVZpZXdQcm90b3R5cGUuY3BwCmluZGV4IDEzODcyYmQ4ZDc1MTA3ZTRmM2MxNDljNjRiNGE5
ZTAxM2Q4MGI1ZTkuLjRkNThlMGQ1MWJlYWE2MjcwN2YxMDAxOGVhOTBlMTdmNjU0YmNmMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0YVZpZXdQcm90
b3R5cGUuY3BwCkBAIC0xMjQsMTAgKzEyNCwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBnZXREYXRhKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU0RhdGFWaWV3KiBkYXRhVmlldyA9IGpzRHluYW1pY0Nh
c3Q8SlNEYXRhVmlldyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKICAgICBpZiAoIWRhdGFWaWV3KQot
ICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZp
ZXciKSkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlJlY2VpdmVyIG9mIERhdGFWaWV3IG1ldGhvZCBtdXN0IGJlIGEgRGF0YVZpZXciKSk7CiAg
ICAgCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJv
d1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTmVlZCBh
dCBsZWFzdCBvbmUgYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0KSIpKSk7CisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTmVlZCBhdCBsZWFzdCBvbmUg
YXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0KSIpKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlT2Zm
c2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTY5LDEwICsxNjksMTAgQEAgRW5jb2RlZEpTVmFs
dWUgc2V0RGF0YShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNEYXRhVmlldyogZGF0YVZpZXcg
PSBqc0R5bmFtaWNDYXN0PEpTRGF0YVZpZXcqPihleGVjLT50aGlzVmFsdWUoKSk7CiAgICAgaWYg
KCFkYXRhVmlldykKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVz
dCBiZSBhIERhdGFWaWV3IikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBvZiBEYXRhVmlldyBtZXRob2QgbXVzdCBiZSBhIERh
dGFWaWV3IikpOwogICAgIAogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAyKQotICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIk5lZWQgYXQgbGVhc3QgdHdvIGFyZ3VtZW50ICh0aGUgYnl0ZU9mZnNldCBhbmQg
dmFsdWUpIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlM
aXRlcmFsKCJOZWVkIGF0IGxlYXN0IHR3byBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQgYW5kIHZh
bHVlKSIpKTsKICAgICAKICAgICB1bnNpZ25lZCBieXRlT2Zmc2V0ID0gZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNGdW5jdGlvbi5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAppbmRleCBl
ZjAzZWNkODBhMTQwZTI1ZmE4ZjI1OGY3NDdlZDc1Y2FlNjI5MzdhLi41OGJmMjNhY2FkNTA0NzU0
NzAxZDViYjRjZjdjNTBjMTIwN2JmOTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0Z1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0Z1bmN0aW9uLmNwcApAQCAtNTA2LDI3ICs1MDYsMjcgQEAgYm9vbCBKU0Z1bmN0aW9u
OjpkZWZpbmVPd25Qcm9wZXJ0eShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFBy
b3BlcnR5TmEKICAgICAgCiAgICAgaWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlUHJlc2VudCgp
ICYmIGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgaWYgKHRocm93RXhjZXB0
aW9uKQotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSBjb25maWd1
cmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikp
OwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLmVudW1l
cmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgaWYg
KHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihl
eGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNo
YW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkp
OworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0
aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9w
ZXJ0eS4iKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgaWYgKGRlc2NyaXB0
b3IuaXNBY2Nlc3NvckRlc2NyaXB0b3IoKSkgewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24p
Ci0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vz
c01lY2hhbmlzbUVycm9yKSkpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJv
cikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmIChkZXNjcmlwdG9yLndy
aXRhYmxlUHJlc2VudCgpICYmIGRlc2NyaXB0b3Iud3JpdGFibGUoKSkgewogICAgICAgICBpZiAo
dGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOwor
ICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5n
IHRvIGNoYW5nZSB3cml0YWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHku
IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGlmICghdmFsdWVDaGVjaykg
ewogICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICBleGVjLT52bSgpLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0
dGVtcHRpbmcgdG8gY2hhbmdlIHZhbHVlIG9mIGEgcmVhZG9ubHkgcHJvcGVydHkuIikpKTsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0
byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25seSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5s
aW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJh
eVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCAzMTZjOGFjZDdhMmYxOTQwMTIwZDc3NGU5
ZTI0ZTQ3YTg5YzI0N2U4Li45MDJiMDZiMzFhZmFkNzYyZGNhMzZhYWJjNGViODQyZTUxYWMxMzlj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBl
ZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmgKQEAg
LTgxLDcgKzgxLDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVmlld0NsYXNzPgogaW5saW5lIEpTT2Jq
ZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdGcm9tSXRlcmF0b3IoRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSlNWYWx1ZSBpdGVyYXRvcikKIHsKICAgICBp
ZiAoIWl0ZXJhdG9yLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihl
eGVjLCAiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3QgYXJndW1lbnQgZGlkIG5vdCByZXR1
cm4gYW4gb2JqZWN0LiIpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJTeW1ib2wuSXRlcmF0b3IgZm9yIHRoZSBmaXJzdCBhcmd1bWVudCBkaWQgbm90
IHJldHVybiBhbiBvYmplY3QuIikpOwogCiAgICAgTWFya2VkQXJndW1lbnRCdWZmZXIgc3RvcmFn
ZTsKICAgICB3aGlsZSAodHJ1ZSkgewpAQCAtMTM5LDcgKzEzOSw3IEBAIGlubGluZSBKU09iamVj
dCogY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3V2l0aEFyZ3VtZW50cyhFeGVjU3RhdGUq
IGV4ZWMsIFN0CiAgICAgQVNTRVJUKCFvZmZzZXQgJiYgIWxlbmd0aE9wdCk7CiAgICAgCiAgICAg
aWYgKFZpZXdDbGFzczo6VHlwZWRBcnJheVN0b3JhZ2VUeXBlID09IFR5cGVEYXRhVmlldykKLSAg
ICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBBcnJheUJ1ZmZlciBm
b3IgdGhlIGZpcnN0IGFyZ3VtZW50LiIpOworICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJFeHBlY3RlZCBBcnJheUJ1ZmZlciBmb3IgdGhlIGZpcnN0IGFy
Z3VtZW50LiIpKTsKICAgICAKICAgICAvLyBGb3IgZXZlcnl0aGluZyBidXQgRGF0YVZpZXcsIHdl
IGFsbG93IGNvbnN0cnVjdGlvbiB3aXRoIGFueSBvZjoKICAgICAvLyAtIEFub3RoZXIgYXJyYXku
IFRoaXMgY3JlYXRlcyBhIGNvcHkgb2YgdGhlIG9mIHRoYXQgYXJyYXkuCkBAIC0xNzQsNyArMTc0
LDcgQEAgaW5saW5lIEpTT2JqZWN0KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRo
QXJndW1lbnRzKEV4ZWNTdGF0ZSogZXhlYywgU3QKICAgICAgICAgICAgICAgICAgICAgQ2FsbERh
dGEgY2FsbERhdGE7CiAgICAgICAgICAgICAgICAgICAgIENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0
Q2FsbERhdGEoaXRlcmF0b3JGdW5jLCBjYWxsRGF0YSk7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChjYWxsVHlwZSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCAiU3ltYm9sLkl0ZXJhdG9yIGZvciB0aGUgZmlyc3Qg
YXJndW1lbnQgY2Fubm90IGJlIGNhbGxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlN5bWJvbC5JdGVyYXRvciBm
b3IgdGhlIGZpcnN0IGFyZ3VtZW50IGNhbm5vdCBiZSBjYWxsZWQuIikpOwogCiAgICAgICAgICAg
ICAgICAgICAgIEFyZ0xpc3QgYXJndW1lbnRzOwogICAgICAgICAgICAgICAgICAgICBKU1ZhbHVl
IGl0ZXJhdG9yID0gY2FsbChleGVjLCBpdGVyYXRvckZ1bmMsIGNhbGxUeXBlLCBjYWxsRGF0YSwg
b2JqZWN0LCBhcmd1bWVudHMpOwpAQCAtMjA2LDExICsyMDYsMTEgQEAgaW5saW5lIEpTT2JqZWN0
KiBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXdXaXRoQXJndW1lbnRzKEV4ZWNTdGF0ZSog
ZXhlYywgU3QKICAgICBpZiAoZmlyc3RWYWx1ZS5pc0ludDMyKCkpCiAgICAgICAgIGxlbmd0aCA9
IGZpcnN0VmFsdWUuYXNJbnQzMigpOwogICAgIGVsc2UgaWYgKCFmaXJzdFZhbHVlLmlzTnVtYmVy
KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBs
ZW5ndGggYXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1lbnQiKSk7CiAgICAgZWxzZSB7
CiAgICAgICAgIGxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oZmlyc3RWYWx1ZS5hc051bWJlcigp
KTsKICAgICAgICAgaWYgKGxlbmd0aCAhPSBmaXJzdFZhbHVlLmFzTnVtYmVyKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgIkludmFsaWQgYXJyYXkgbGVuZ3RoIGFy
Z3VtZW50IChmcmFjdGlvbmFsIGxlbmd0aHMgbm90IGFsbG93ZWQpIik7CisgICAgICAgICAgICBy
ZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIGFycmF5IGxl
bmd0aCBhcmd1bWVudCAoZnJhY3Rpb25hbCBsZW5ndGhzIG5vdCBhbGxvd2VkKSIpKTsKICAgICB9
CiAKICAgICBpZiAobGVuZ3RoIDwgMCkKQEAgLTIzNCw3ICsyMzQsNyBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUq
IGV4ZWMpCiAKICAgICBpZiAoIWFyZ0NvdW50KSB7CiAgICAgICAgIGlmIChWaWV3Q2xhc3M6OlR5
cGVkQXJyYXlTdG9yYWdlVHlwZSA9PSBUeXBlRGF0YVZpZXcpCi0gICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRGF0YVZpZXcgY29uc3Ry
dWN0b3IgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiRGF0YVZpZXcgY29uc3Ry
dWN0b3IgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIGFyZ3VtZW50LiIpKTsKIAogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFZpZXdDbGFzczo6Y3JlYXRlKGV4ZWMsIHN0cnVjdHVyZSwgMCkp
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
CmluZGV4IDBiMDIzZDgyZDljYTY0MjZkOWI3ZjA4NWY0ZDgyYThlMjRjN2NhOGYuLjFmOWJjMjRi
M2EyNDU0MGZmMzc0OGMyZmY3OWQzODE4MGI0YWIxMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rp
b25zLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRB
cnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaApAQCAtNTYsNyArNTYsNyBAQCBpbmxpbmUgSlNB
cnJheUJ1ZmZlclZpZXcqIHNwZWNpZXNDb25zdHJ1Y3QoRXhlY1N0YXRlKiBleGVjLCBKU09iamVj
dCogZXhlbXBsYXIsCiAgICAgaWYgKGNvbnN0cnVjdG9yLmlzVW5kZWZpbmVkKCkpCiAgICAgICAg
IHJldHVybiBkZWZhdWx0Q29uc3RydWN0b3IoKTsKICAgICBpZiAoIWNvbnN0cnVjdG9yLmlzT2Jq
ZWN0KCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgImNvbnN0cnVjdG9yIFByb3Bl
cnR5IHNob3VsZCBub3QgYmUgbnVsbCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoImNvbnN0cnVjdG9yIFByb3BlcnR5IHNob3VsZCBub3QgYmUgbnVsbCIpKTsK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC03NCw3ICs3NCw3IEBAIGlubGlu
ZSBKU0FycmF5QnVmZmVyVmlldyogc3BlY2llc0NvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMsIEpT
T2JqZWN0KiBleGVtcGxhciwKICAgICBpZiAoSlNBcnJheUJ1ZmZlclZpZXcqIHZpZXcgPSBqc0R5
bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4ocmVzdWx0KSkKICAgICAgICAgcmV0dXJuIHZp
ZXc7CiAKLSAgICB0aHJvd1R5cGVFcnJvcihleGVjLCAic3BlY2llcyBjb25zdHJ1Y3RvciBkaWQg
bm90IHJldHVybiBhIFR5cGVkQXJyYXkgVmlldyIpOworICAgIHRocm93VHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgic3BlY2llcyBjb25zdHJ1Y3RvciBkaWQgbm90IHJldHVybiBhIFR5cGVk
QXJyYXkgVmlldyIpKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIApAQCAtOTksNyArOTksNyBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3Rv
RnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganND
YXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKIAogICAgIGlmICghZXhlYy0+YXJn
dW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0
IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKIAogICAgIHVuc2lnbmVkIG9mZnNldDsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKQEAgLTExNyw3ICsxMTcsNyBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChF
eGVjU3RhdGUqIGV4ZWMpCiAKICAgICBKU09iamVjdCogc291cmNlQXJyYXkgPSBqc0R5bmFtaWND
YXN0PEpTT2JqZWN0Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghc291
cmNlQXJyYXkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJGaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3Vt
ZW50IHNob3VsZCBiZSBhbiBvYmplY3QiKSk7CiAKICAgICB1bnNpZ25lZCBsZW5ndGg7CiAgICAg
aWYgKGlzVHlwZWRWaWV3KHNvdXJjZUFycmF5LT5jbGFzc0luZm8oKS0+dHlwZWRBcnJheVN0b3Jh
Z2VUeXBlKSkgewpAQCAtMTQ1LDcgKzE0NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbihFeGVjU3RhdGUqCiAg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNC
ZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA8IDIpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9y
KGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCB0d28gYXJndW1lbnRzIikpOworICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkV4cGVjdGVkIGF0IGxlYXN0
IHR3byBhcmd1bWVudHMiKSk7CiAKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0yMDAsNyArMjAw
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXgKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKLSAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVND
SUlMaXRlcmFsKCJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAKICAgICB1bnNp
Z25lZCBsZW5ndGggPSB0aGlzT2JqZWN0LT5sZW5ndGgoKTsKIApAQCAtMjY0LDcgKzI2NCw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAg
ICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJn
dW1lbnQiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwogCiAgICAgdW5zaWduZWQg
bGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CiAKQEAgLTQ0Miw3ICs0NDIsNyBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1N1
YmFycmF5KEV4ZWNTdGF0ZSogZQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50
IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKIAogICAgIC8vIEdldCB0aGUgbGVu
Z3RoIGhlcmU7IGxhdGVyIGFzc2VydCB0aGF0IHRoZSBsZW5ndGggZGlkbid0IGNoYW5nZS4KICAg
ICB1bnNpZ25lZCB0aGlzTGVuZ3RoID0gdGhpc09iamVjdC0+bGVuZ3RoKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAKaW5kZXggY2ZkNWY2ODZhZjlkYzI0ZDNkNzdhOTY4OWIyZjVlOTZmYWY1ZWE1Ni4uZmRi
M2U3YjIyYzMwMGYyMjk0NDg3MTAwYmY0OTJhZjljZTFkZTU2ZSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNw
cApAQCAtODg4LDcgKzg4OCw3IEBAIHByaXZhdGU6CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGdsb2JhbEZ1bmNQcm90b0dldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4
ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIAotICAgICAgICByZXR1cm4gdGhy
b3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQ2FuJ3QgY29udmVydCB1bmRl
ZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0
byBvYmplY3QiKSk7CiAKICAgICBKU09iamVjdCogdGhpc09iamVjdCA9IGpzRHluYW1pY0Nhc3Q8
SlNPYmplY3QqPihleGVjLT50aGlzVmFsdWUoKS50b1RoaXMoZXhlYywgTm90U3RyaWN0TW9kZSkp
OwogCkBAIC05NDUsNyArOTQ1LDcgQEAgYm9vbCBjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dl
ZChFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3QpCiBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGdsb2JhbEZ1bmNQcm90b1NldHRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAg
aWYgKGV4ZWMtPnRoaXNWYWx1ZSgpLmlzVW5kZWZpbmVkT3JOdWxsKCkpIAotICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQ2FuJ3QgY29udmVy
dCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FuJ3QgY29udmVydCB1bmRlZmluZWQgb3Ig
bnVsbCB0byBvYmplY3QiKSk7CiAKICAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+YXJndW1lbnQo
MCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKaW5k
ZXggMWI4MjBhZjUyZDg2NzljODkwMTQ0NmU4ZWJiYmE4MjFjMmJkZDUwMi4uNWU0MmQwZWIyMmE1
YjFiZTVlNzhhODMxMmMxMGNjYmY0MTcxOTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNPTk9iamVjdC5jcHAKQEAgLTM2OCw3ICszNjgsNyBAQCBTdHJpbmdpZmllcjo6
U3RyaW5naWZ5UmVzdWx0IFN0cmluZ2lmaWVyOjphcHBlbmRTdHJpbmdpZmllZFZhbHVlKFN0cmlu
Z0J1aWxkZXImCiAgICAgLy8gSGFuZGxlIGN5Y2xlIGRldGVjdGlvbiwgYW5kIHB1dCB0aGUgaG9s
ZGVyIG9uIHRoZSBzdGFjay4KICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ob2xkZXJT
dGFjay5zaXplKCk7IGkrKykgewogICAgICAgICBpZiAobV9ob2xkZXJTdGFja1tpXS5vYmplY3Qo
KSA9PSBvYmplY3QpIHsKLSAgICAgICAgICAgIG1fZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbiht
X2V4ZWMsIGNyZWF0ZVR5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiSlNPTi5zdHJpbmdp
ZnkgY2Fubm90IHNlcmlhbGl6ZSBjeWNsaWMgc3RydWN0dXJlcy4iKSkpOworICAgICAgICAgICAg
dGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkpTT04uc3RyaW5naWZ5IGNhbm5v
dCBzZXJpYWxpemUgY3ljbGljIHN0cnVjdHVyZXMuIikpOwogICAgICAgICAgICAgcmV0dXJuIFN0
cmluZ2lmeUZhaWxlZDsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTT2JqZWN0LmNwcAppbmRleCBkN2Q1MzY1M2RkZDI0MjhjZGNkNTQ5MzkzZWMwNzBi
YTVhZmM0YjhiLi5jNGYyZjdhZjQ2MjcwMjY2MmRmZTA2M2JlZWEzZTQ0OGVhNmVkNjkyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCkBAIC0xMzU3LDcgKzEz
NTcsNyBAQCBib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0s
IEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90bwogCiAgICAgaWYgKCFpc0V4dGVuc2libGUp
IHsKICAgICAgICAgaWYgKHNob3VsZFRocm93SWZDYW50U2V0KQotICAgICAgICAgICAgdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9w
ZXJ0eVdyaXRlRXJyb3IpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIFN0cmlj
dE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcik7CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAKQEAgLTE2NDAsNyArMTY0MCw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTVmFs
dWUgY2FsbFRvUHJpbWl0aXZlRnVuY3Rpb24oRXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU09iCiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gZXhlYy0+ZXhjZXB0
aW9uKCk7CiAgICAgaWYgKHJlc3VsdC5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gbW9kZSA9
PSBUeXBlSGludE1vZGU6OkRvZXNOb3RUYWtlSGludCA/IEpTVmFsdWUoKSA6IHRocm93VHlwZUVy
cm9yKGV4ZWMsICJTeW1ib2wudG9QcmltaXRpdmUgcmV0dXJuZWQgYW4gb2JqZWN0Iik7CisgICAg
ICAgIHJldHVybiBtb2RlID09IFR5cGVIaW50TW9kZTo6RG9lc05vdFRha2VIaW50ID8gSlNWYWx1
ZSgpIDogdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJTeW1ib2wudG9QcmltaXRp
dmUgcmV0dXJuZWQgYW4gb2JqZWN0IikpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKQEAgLTE2
NzAsNyArMTY3MCw3IEBAIEpTVmFsdWUgSlNPYmplY3Q6Om9yZGluYXJ5VG9QcmltaXRpdmUoRXhl
Y1N0YXRlKiBleGVjLCBQcmVmZXJyZWRQcmltaXRpdmVUeXBlIGhpCiAKICAgICBBU1NFUlQoIWV4
ZWMtPmhhZEV4Y2VwdGlvbigpKTsKIAotICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0
aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk5vIGRlZmF1bHQg
dmFsdWUiKSkpOworICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
Ik5vIGRlZmF1bHQgdmFsdWUiKSk7CiB9CiAKIEpTVmFsdWUgSlNPYmplY3Q6OmRlZmF1bHRWYWx1
ZShjb25zdCBKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUqIGV4ZWMsIFByZWZlcnJlZFByaW1p
dGl2ZVR5cGUgaGludCkKQEAgLTE3NTYsNyArMTc1Niw3IEBAIGJvb2wgSlNPYmplY3Q6OmRlZmF1
bHRIYXNJbnN0YW5jZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUsIEpTVmFsdWUgcHJv
dG8pCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcHJvdG8uaXNPYmplY3QoKSkg
ewotICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoImluc3RhbmNlb2YgY2FsbGVkIG9uIGFuIG9iamVjdCB3aXRo
IGFuIGludmFsaWQgcHJvdG90eXBlIHByb3BlcnR5LiIpKSk7CisgICAgICAgIHRocm93VHlwZUVy
cm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW5zdGFuY2VvZiBjYWxsZWQgb24gYW4gb2JqZWN0IHdp
dGggYW4gaW52YWxpZCBwcm90b3R5cGUgcHJvcGVydHkuIikpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0yOTQzLDcgKzI5NDMsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQ
cm9wZXJ0eURlc2NyaXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9w
ZQogICAgICAgICAvLyBTdGVwIDIuYQogICAgICAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgewogICAg
ICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgIGV4ZWMtPnZtKCku
dGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
QXR0ZW1wdGluZyB0byBkZWZpbmUgcHJvcGVydHkgb24gb2JqZWN0IHRoYXQgaXMgbm90IGV4dGVu
c2libGUuIikpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIkF0dGVtcHRpbmcgdG8gZGVmaW5lIHByb3BlcnR5IG9uIG9iamVjdCB0aGF0IGlzIG5v
dCBleHRlbnNpYmxlLiIpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW9iamVjdCkKQEAgLTI5NjYsMTIgKzI5NjYsMTIgQEAgYm9vbCB2YWxpZGF0
ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIG9i
amVjdCwgUHJvcGUKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAg
aWYgKGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJvd0V4
Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMs
IGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdl
IGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUgcHJvcGVydHkuIikpKTsK
KyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVt
cHRpbmcgdG8gY2hhbmdlIGNvbmZpZ3VyYWJsZSBhdHRyaWJ1dGUgb2YgdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChkZXNjcmlwdG9yLmVudW1lcmFibGVQcmVzZW50KCkgJiYgZGVzY3JpcHRvci5lbnVt
ZXJhYmxlKCkgIT0gY3VycmVudC5lbnVtZXJhYmxlKCkpIHsKICAgICAgICAgICAgIGlmICh0aHJv
d0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hh
bmdlIGVudW1lcmFibGUgYXR0cmlidXRlIG9mIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7
CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRl
bXB0aW5nIHRvIGNoYW5nZSBlbnVtZXJhYmxlIGF0dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBw
cm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CkBAIC0yOTkxLDcgKzI5OTEsNyBAQCBib29sIHZhbGlkYXRlQW5kQXBwbHlQcm9wZXJ0eURlc2Ny
aXB0b3IoRXhlY1N0YXRlKiBleGVjLCBKU09iamVjdCogb2JqZWN0LCBQcm9wZQogICAgIGlmIChk
ZXNjcmlwdG9yLmlzRGF0YURlc2NyaXB0b3IoKSAhPSBjdXJyZW50LmlzRGF0YURlc2NyaXB0b3Io
KSkgewogICAgICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsKICAgICAgICAgICAg
IGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52bSgpLnRocm93RXhj
ZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1
cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSkpOworICAgICAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbChVbmNvbmZpZ3VyYWJsZVByb3Bl
cnR5Q2hhbmdlQWNjZXNzTWVjaGFuaXNtRXJyb3IpKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCkBAIC0zMDA4LDEzICszMDA4LDEzIEBAIGJvb2wgdmFsaWRhdGVBbmRB
cHBseVByb3BlcnR5RGVzY3JpcHRvcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBvYmplY3Qs
IFByb3BlCiAgICAgICAgIGlmICghY3VycmVudC5jb25maWd1cmFibGUoKSkgewogICAgICAgICAg
ICAgaWYgKCFjdXJyZW50LndyaXRhYmxlKCkgJiYgZGVzY3JpcHRvci53cml0YWJsZSgpKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKHRocm93RXhjZXB0aW9uKQotICAgICAgICAgICAgICAgICAgICBl
eGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0dHJpYnV0ZSBvZiB1bmNv
bmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSkpOworICAgICAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHdyaXRhYmxlIGF0
dHJpYnV0ZSBvZiB1bmNvbmZpZ3VyYWJsZSBwcm9wZXJ0eS4iKSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFjdXJyZW50Lndy
aXRhYmxlKCkpIHsKICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRvci52YWx1ZSgpICYmICFz
YW1lVmFsdWUoZXhlYywgY3VycmVudC52YWx1ZSgpLCBkZXNjcmlwdG9yLnZhbHVlKCkpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiQXR0ZW1wdGluZyB0byBjaGFuZ2UgdmFsdWUgb2YgYSByZWFkb25s
eSBwcm9wZXJ0eS4iKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB2YWx1ZSBvZiBhIHJlYWRv
bmx5IHByb3BlcnR5LiIpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTMwMzMsMTcgKzMwMzMsMTcgQEAgYm9v
bCB2YWxpZGF0ZUFuZEFwcGx5UHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNP
YmplY3QqIG9iamVjdCwgUHJvcGUKICAgICBpZiAoIWN1cnJlbnQuY29uZmlndXJhYmxlKCkpIHsK
ICAgICAgICAgaWYgKGRlc2NyaXB0b3Iuc2V0dGVyUHJlc2VudCgpICYmICEoY3VycmVudC5zZXR0
ZXJQcmVzZW50KCkgJiYgSlNWYWx1ZTo6c3RyaWN0RXF1YWwoZXhlYywgY3VycmVudC5zZXR0ZXIo
KSwgZGVzY3JpcHRvci5zZXR0ZXIoKSkpKSB7CiAgICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRp
b24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5nZSB0aGUg
c2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKSk7CisgICAgICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJBdHRlbXB0aW5nIHRvIGNoYW5n
ZSB0aGUgc2V0dGVyIG9mIGFuIHVuY29uZmlndXJhYmxlIHByb3BlcnR5LiIpKTsKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVzY3JpcHRvci5nZXR0
ZXJQcmVzZW50KCkgJiYgIShjdXJyZW50LmdldHRlclByZXNlbnQoKSAmJiBKU1ZhbHVlOjpzdHJp
Y3RFcXVhbChleGVjLCBjdXJyZW50LmdldHRlcigpLCBkZXNjcmlwdG9yLmdldHRlcigpKSkpIHsK
ICAgICAgICAgICAgIGlmICh0aHJvd0V4Y2VwdGlvbikKLSAgICAgICAgICAgICAgICBleGVjLT52
bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1cmFibGUg
cHJvcGVydHkuIikpKTsKKyAgICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkF0dGVtcHRpbmcgdG8gY2hhbmdlIHRoZSBnZXR0ZXIgb2YgYW4gdW5jb25maWd1
cmFibGUgcHJvcGVydHkuIikpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgICAgIGlmIChjdXJyZW50LmF0dHJpYnV0ZXMoKSAmIEN1c3RvbUFjY2Vzc29yKSB7CiAg
ICAgICAgICAgICBpZiAodGhyb3dFeGNlcHRpb24pCi0gICAgICAgICAgICAgICAgZXhlYy0+dm0o
KS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFs
KFVuY29uZmlndXJhYmxlUHJvcGVydHlDaGFuZ2VBY2Nlc3NNZWNoYW5pc21FcnJvcikpKTsKKyAg
ICAgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoVW5jb25maWd1
cmFibGVQcm9wZXJ0eUNoYW5nZUFjY2Vzc01lY2hhbmlzbUVycm9yKSk7CiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yLmNwcApp
bmRleCA5NmUzZmUxN2IxYzgzNzYxY2EzZTZiNDRhY2YzMGY4NzhiMjJlZTU2Li45OWQ1NjU5OTRj
N2FkMjA5ZDllNjRkZmRmNWNhODA0ZWQ2MDgxZTczIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3IuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3Rvci5j
cHAKQEAgLTcxLDE1ICs3MSwxNSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBKU09iamVj
dCogb2JqZWN0ID0ganNEeW5hbWljQ2FzdDxKU09iamVjdCo+KHZhbHVlKTsKICAgICBpZiAoIW9i
amVjdCkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVj
LCAibmV3LnRhcmdldCBwYXNzZWQgdG8gVHlwZWRBcnJheSBpcyBub3QgYW4gb2JqZWN0LiIpKTsK
KyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIm5ldy50YXJnZXQgcGFzc2VkIHRvIFR5cGVkQXJyYXkgaXMgbm90IGFuIG9iamVj
dC4iKSkpOwogCiAgICAgQ29uc3RydWN0RGF0YSBkYXRhOwogICAgIGlmIChvYmplY3QtPm1ldGhv
ZFRhYmxlKCktPmdldENvbnN0cnVjdERhdGEob2JqZWN0LCBkYXRhKSA9PSBDb25zdHJ1Y3RUeXBl
OjpOb25lKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4
ZWMsICJuZXcudGFyZ2V0IHBhc3NlZCB0byBUeXBlZEFycmF5IGlzIG5vdCBhIHZhbGlkIGNvbnN0
cnVjdG9yLiIpKTsKKyAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIm5ldy50YXJnZXQgcGFzc2VkIHRvIFR5cGVkQXJyYXkgaXMg
bm90IGEgdmFsaWQgY29uc3RydWN0b3IuIikpKTsKIAogICAgIGZvciAoOyAhdmFsdWUuaXNOdWxs
KCk7IHZhbHVlID0ganNDYXN0PEpTT2JqZWN0Kj4odmFsdWUpLT5nZXRQcm90b3R5cGVEaXJlY3Qo
KSkgewogICAgICAgICBpZiAoanNEeW5hbWljQ2FzdDxKU1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0
b3IqPih2YWx1ZSkpCi0gICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlw
ZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZmluZCBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIHRoYXQg
aW5oZXJpdHMgZnJvbSBUeXBlZEFycmF5LiIpKTsKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZmlu
ZCBUeXBlZEFycmF5IGNvbnN0cnVjdG9yIHRoYXQgaW5oZXJpdHMgZnJvbSBUeXBlZEFycmF5LiIp
KSk7CiAgICAgICAgIGlmIChqc0R5bmFtaWNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3I8SlNJbnQ4QXJyYXk+Kj4odmFsdWUpKQogICAgICAgICAgICAgcmV0dXJuIGNvbnN0
cnVjdEdlbmVyaWNUeXBlZEFycmF5VmlldzxKU0ludDhBcnJheT4oZXhlYyk7CiAgICAgICAgIGlm
IChqc0R5bmFtaWNDYXN0PEpTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3I8SlNJbnQx
NkFycmF5Pio+KHZhbHVlKSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RUeXBlZEFycmF5VmlldyhFeGVjU3RhdGUqIGV4ZWMp
CiAgICAgICAgICAgICByZXR1cm4gY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3PEpTRmxv
YXQ2NEFycmF5PihleGVjKTsKICAgICB9CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd1R5cGVFcnJvcihleGVjLCAiVW5hYmxlIHRvIGZpbmQgVHlwZWRBcnJheSBjb25zdHJ1
Y3RvciBpbiBwcm90b3R5cGUtY2hhaW4sIGhpdCBudWxsLiIpKTsKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5hYmxlIHRvIGZp
bmQgVHlwZWRBcnJheSBjb25zdHJ1Y3RvciBpbiBwcm90b3R5cGUtY2hhaW4sIGhpdCBudWxsLiIp
KSk7CiB9CiAKIENvbnN0cnVjdFR5cGUgSlNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9yOjpnZXRD
b25zdHJ1Y3REYXRhKEpTQ2VsbCosIENvbnN0cnVjdERhdGEmIGNvbnN0cnVjdERhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwCmluZGV4IDQyYmUzNmRiOTI1ZmMwZjYyODg5MmJkYmEwYWY1ZGNjY2M0
YzkwMDMuLjdhOGE0OWZjN2I4YjI4NmFkNDcwYjVhNTFmNWM3YjMyN2Q4M2FlYzAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5
cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZp
ZXdQcm90b3R5cGUuY3BwCkBAIC01OCw4ICs1OCw4IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICByZXR1cm4gZnVuY3Rpb25OYW1lPEpTVWludDE2QXJyYXk+KGV4ZWMpOyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgTm90VHlwZWRBcnJh
eTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgXAogICAgIGNhc2UgVHlwZURhdGFWaWV3OiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgXAotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihl
eGVjLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAg
ICAgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciKSk7ICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihleGVjLCBcCisgICAgICAgICAgICBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3Vs
ZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciKSk7IFwKICAgICB9ICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwK
IH0gd2hpbGUgKGZhbHNlKQpAQCAtNzgsNyArNzgsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgSlNBcnJheUJ1ZmZlclZpZXcqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8SlNBcnJheUJ1ZmZl
clZpZXcqPihhcmd1bWVudCk7CiAgICAgaWYgKCF0aGlzT2JqZWN0IHx8IHRoaXNPYmplY3QtPm1v
ZGUoKSA9PSBEYXRhVmlld01vZGUpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2
aWV3IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXciKSk7CiAgICAgaWYgKHRo
aXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgIlVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUg
dmlldyIpOwogCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlz
VmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZp
ZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZ
X1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQpOwog
fQogCkBAIC0xMTEsNyArMTExLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKEV4ZWNTdGF0ZSoKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jQ29weVdpdGhpbik7
CiB9CiAKQEAgLTExOSw3ICsxMTksNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY0ZpbGwoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFs
dWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVU
eXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0
IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcg
YnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BS
T1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNGaWxsKTsKIH0K
IApAQCAtMTI3LDcgKzEyNyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlCiB7CiAgICAgSlNW
YWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1ZS5p
c09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQgd2Fz
IG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJPVE9U
WVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKTsK
IH0KIApAQCAtMTM1LDcgKzEzNSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4CiB7CiAgICAg
SlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNWYWx1
ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5
cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBidXQg
d2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBi
dXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJP
VE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOwog
fQogCkBAIC0xNDMsNyArMTQzLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSm9pbik7CiB9CiAK
QEAgLTE1MSw3ICsxNTEsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0
eXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J1ZmZlcihFeGVjU3RhdAogewogICAgIEpTVmFs
dWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNP
YmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBu
b3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBB
U0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5cGVkIGFycmF5IHZpZXcgYnV0IHdh
cyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VORVJJQ19UWVBFREFSUkFZX1BST1RPVFlQ
RV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCdWZmZXIpOwog
fQogCkBAIC0xNTksNyArMTU5LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNMZW5ndGgoRXhlY1N0YXQKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVl
LmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlw
ZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3
YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1
dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9U
T1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jTGVuZ3Ro
KTsKIH0KIApAQCAtMTY3LDcgKzE2Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9HZXR0ZXJGdW5jQnl0ZUxlbmd0aChFeGVjCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKICAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBi
dXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlf
UFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvR2V0dGVyRnVuY0J5
dGVMZW5ndGgpOwogfQogCkBAIC0xNzUsNyArMTc1LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcm90b0dldHRlckZ1bmNCeXRlT2Zmc2V0KEV4
ZWMKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlm
ICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhl
YywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJh
eSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBh
cnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9iamVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQ
RURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04oZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9HZXR0
ZXJGdW5jQnl0ZU9mZnNldCk7CiB9CiAKQEAgLTE4Myw3ICsxODMsNyBAQCBzdGF0aWMgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoRXhl
Y1N0YXRlKiBleAogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
CiAgICAgaWYgKCF0aGlzVmFsdWUuaXNPYmplY3QoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1F
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBhIHR5
cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXcgYnV0IHdhcyBub3QgYW4gb2JqZWN0IikpOwogICAgIENBTExfR0VO
RVJJQ19UWVBFREFSUkFZX1BST1RPVFlQRV9GVU5DVElPTihnZW5lcmljVHlwZWRBcnJheVZpZXdQ
cm90b0Z1bmNSZXZlcnNlKTsKIH0KIApAQCAtMTkxLDcgKzE5MSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU3ViYXJyYXkoRXhl
Y1N0YXRlKiBlCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5F
UklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY1N1YmFycmF5KTsKIH0KIApAQCAtMTk5LDcgKzE5OSw3IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhlY1N0
YXRlKiBleGVjCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsK
ICAgICBpZiAoIXRoaXNWYWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlw
ZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUmVjZWl2ZXIgc2hvdWxkIGJlIGEg
dHlwZWQgYXJyYXkgdmlldyBidXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5F
UklDX1RZUEVEQVJSQVlfUFJPVE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY1NsaWNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDNjMjkzZmJiNjY0ZjU2NjA0OGZiODhjYzM1
ZGY2NzJlYjlhMDNkNDEuLmM3OTUwNDlkM2Y0ZTYyYTk3YzgxZjNhNmM3NGMzNDhiNmRkOTE5ODMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1
Y3Rvci5jcHAKQEAgLTMzNSw3ICszMzUsNyBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogewog
ICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7CiAgICAgaWYgKCFpbi5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0aW9uIG11c3QgYmUgYW4gb2JqZWN0LiIpKSk7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydHkgZGVzY3JpcHRp
b24gbXVzdCBiZSBhbiBvYmplY3QuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQog
ICAgIEpTT2JqZWN0KiBkZXNjcmlwdGlvbiA9IGFzT2JqZWN0KGluKTsKQEAgLTM4MCw3ICszODAs
NyBAQCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBp
biwgUHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogICAgICAgICBpZiAoIWdldC5pc1VuZGVmaW5l
ZCgpKSB7CiAgICAgICAgICAgICBDYWxsRGF0YSBjYWxsRGF0YTsKICAgICAgICAgICAgIGlmIChn
ZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkgewotICAgICAgICAg
ICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVuY3Rpb24uIikpKTsKKyAgICAgICAgICAgICAg
ICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkdldHRlciBtdXN0IGJlIGEgZnVu
Y3Rpb24uIikpOwogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQpAQCAtMzk1LDcgKzM5NSw3IEBAIGJvb2wgdG9Qcm9wZXJ0eURlc2NyaXB0b3Io
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIGluLCBQcm9wZXJ0eURlc2NyaXB0b3ImIGRlc2MpCiAg
ICAgICAgIGlmICghc2V0LmlzVW5kZWZpbmVkKCkpIHsKICAgICAgICAgICAgIENhbGxEYXRhIGNh
bGxEYXRhOwogICAgICAgICAgICAgaWYgKGdldENhbGxEYXRhKHNldCwgY2FsbERhdGEpID09IENh
bGxUeXBlOjpOb25lKSB7Ci0gICAgICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywg
Y3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5j
dGlvbi4iKSkpOworICAgICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiU2V0dGVyIG11c3QgYmUgYSBmdW5jdGlvbi4iKSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC00MDcsMTIgKzQwNywxMiBA
QCBib29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwg
UHJvcGVydHlEZXNjcmlwdG9yJiBkZXNjKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlm
IChkZXNjLnZhbHVlKCkpIHsKLSAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBwcm9wZXJ0eS4gICd2YWx1ZScg
cHJlc2VudCBvbiBwcm9wZXJ0eSB3aXRoIGdldHRlciBvciBzZXR0ZXIuIikpKTsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3Zh
bHVlJyBwcmVzZW50IG9uIHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBpZiAoZGVzYy53cml0YWJsZVByZXNlbnQo
KSkgewotICAgICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhl
YywgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIHByb3BlcnR5LiAgJ3dyaXRhYmxlJyBwcmVzZW50IG9u
IHByb3BlcnR5IHdpdGggZ2V0dGVyIG9yIHNldHRlci4iKSkpOworICAgICAgICB0aHJvd1R5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgcHJvcGVydHkuICAnd3JpdGFibGUnIHBy
ZXNlbnQgb24gcHJvcGVydHkgd2l0aCBnZXR0ZXIgb3Igc2V0dGVyLiIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKQEAgLTQyMSw3ICs0MjEsNyBAQCBi
b29sIHRvUHJvcGVydHlEZXNjcmlwdG9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBpbiwgUHJv
cGVydHlEZXNjcmlwdG9yJiBkZXNjKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmpl
Y3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnR5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAo
IWV4ZWMtPmFyZ3VtZW50KDApLmlzT2JqZWN0KCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJy
b3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiUHJvcGVydGllcyBj
YW4gb25seSBiZSBkZWZpbmVkIG9uIE9iamVjdHMuIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRl
ZmluZWQgb24gT2JqZWN0cy4iKSk7CiAgICAgSlNPYmplY3QqIE8gPSBhc09iamVjdChleGVjLT5h
cmd1bWVudCgwKSk7CiAgICAgYXV0byBwcm9wZXJ0eU5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50
b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTQ3
Niw3ICs0NzYsNyBAQCBzdGF0aWMgSlNWYWx1ZSBkZWZpbmVQcm9wZXJ0aWVzKEV4ZWNTdGF0ZSog
ZXhlYywgSlNPYmplY3QqIG9iamVjdCwgSlNPYmplY3QqIHBybwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBvYmplY3RDb25zdHJ1Y3RvckRlZmluZVByb3BlcnRpZXMoRXhlY1N0YXRlKiBl
eGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJQcm9wZXJ0aWVzIGNhbiBvbmx5IGJlIGRlZmluZWQgb24gT2JqZWN0cy4iKSkpOworICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3BlcnRp
ZXMgY2FuIG9ubHkgYmUgZGVmaW5lZCBvbiBPYmplY3RzLiIpKTsKICAgICBKU09iamVjdCogdGFy
Z2V0T2JqID0gYXNPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIEpTT2JqZWN0KiBwcm9w
cyA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvT2JqZWN0KGV4ZWMpOwogICAgIGlmICghcHJvcHMpCkBA
IC00ODgsMTQgKzQ4OCwxNCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENv
bnN0cnVjdG9yQ3JlYXRlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHByb3RvID0g
ZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYgKCFwcm90by5pc09iamVjdCgpICYmICFwcm90by5p
c051bGwoKSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgQVNDSUlMaXRlcmFsKCJPYmplY3QgcHJvdG90eXBlIG1heSBvbmx5IGJlIGFuIE9i
amVjdCBvciBudWxsLiIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qgb3Ig
bnVsbC4iKSk7CiAgICAgSlNPYmplY3QqIG5ld09iamVjdCA9IHByb3RvLmlzT2JqZWN0KCkKICAg
ICAgICAgPyBjb25zdHJ1Y3RFbXB0eU9iamVjdChleGVjLCBhc09iamVjdChwcm90bykpCiAgICAg
ICAgIDogY29uc3RydWN0RW1wdHlPYmplY3QoZXhlYywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVj
dCgpLT5udWxsUHJvdG90eXBlT2JqZWN0U3RydWN0dXJlKCkpOwogICAgIGlmIChleGVjLT5hcmd1
bWVudCgxKS5pc1VuZGVmaW5lZCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG5l
d09iamVjdCk7CiAgICAgaWYgKCFleGVjLT5hcmd1bWVudCgxKS5pc09iamVjdCgpKQotICAgICAg
ICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJSUxp
dGVyYWwoIlByb3BlcnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSkpOwor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlByb3Bl
cnR5IGRlc2NyaXB0b3IgbGlzdCBtdXN0IGJlIGFuIE9iamVjdC4iKSk7CiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShkZWZpbmVQcm9wZXJ0aWVzKGV4ZWMsIG5ld09iamVjdCwgYXNPYmplY3Qo
ZXhlYy0+YXJndW1lbnQoMSkpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09iamVjdFByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9PYmplY3RQcm90b3R5cGUuY3BwCmluZGV4IGM0OWY2ZDBjN2UwYTkwZmRlYjYwOTQ0
MjA2NzI3MWU2NjEyZWU0ODUuLjZlMGU3Y2IzYzhkMjI3NDM2MTA2MzQzZDE4ZTJkMjQ1Y2MyN2I1
MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdFByb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0UHJvdG90
eXBlLmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
b2JqZWN0UHJvdG9GdW5jRGVmaW5lR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVl
IGdldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlm
IChnZXRDYWxsRGF0YShnZXQsIGNhbGxEYXRhKSA9PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAg
cmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRl
cmFsKCJpbnZhbGlkIGdldHRlciB1c2FnZSIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW52YWxpZCBnZXR0ZXIgdXNhZ2UiKSk7CiAKICAg
ICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhl
Yyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTYwLDcgKzE2MCw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0UHJvdG9GdW5jRGVmaW5lU2V0dGVyKEV4
ZWNTdGF0ZSogZXhlYykKICAgICBKU1ZhbHVlIHNldCA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAg
IENhbGxEYXRhIGNhbGxEYXRhOwogICAgIGlmIChnZXRDYWxsRGF0YShzZXQsIGNhbGxEYXRhKSA9
PSBDYWxsVHlwZTo6Tm9uZSkKLSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJpbnZhbGlkIHNldHRlciB1c2FnZSIpKSk7
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiaW52
YWxpZCBzZXR0ZXIgdXNhZ2UiKSk7CiAKICAgICBhdXRvIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDApLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4cFByb3RvdHlw
ZS5jcHAKaW5kZXggY2MzYTIwMmVhMjU1MmE0YmFlYjk5NDYxZjBhMjdiMzQ4NjMzNTdmOS4uYWZj
M2VkNzI4Mjc0MTJiZjU4YjcxYzRiMTI3OGI2M2MzYjkyZDM5NSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCkBAIC0xNDMsNyArMTQz
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0Z1bmNDb21waWxl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBpZiAoYXJnMC5pbmhlcml0cyhSZWdFeHBPYmpl
Y3Q6OmluZm8oKSkpIHsKICAgICAgICAgaWYgKCFhcmcxLmlzVW5kZWZpbmVkKCkpCi0gICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBBU0NJ
SUxpdGVyYWwoIkNhbm5vdCBzdXBwbHkgZmxhZ3Mgd2hlbiBjb25zdHJ1Y3Rpbmcgb25lIFJlZ0V4
cCBmcm9tIGFub3RoZXIuIikpKTsKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2Fubm90IHN1cHBseSBmbGFncyB3aGVuIGNvbnN0cnVjdGlu
ZyBvbmUgUmVnRXhwIGZyb20gYW5vdGhlci4iKSk7CiAgICAgICAgIHJlZ0V4cCA9IGFzUmVnRXhw
T2JqZWN0KGFyZzApLT5yZWdFeHAoKTsKICAgICB9IGVsc2UgewogICAgICAgICBTdHJpbmcgcGF0
dGVybiA9ICFleGVjLT5hcmd1bWVudENvdW50KCkgPyBlbXB0eVN0cmluZygpIDogYXJnMC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TeW1ib2wuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3lt
Ym9sLmNwcAppbmRleCBjZDA1MWE3OGFkNTRmYTkwOWZmN2RkNTNmNjYxOGVkZGE4YWQ0YjcxLi42
YWM3OTBhZDExMmE0Y2MwY2FmNDNlYmZiOTQ1NzhlN2UxOTQwM2I1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TeW1ib2wuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1N5bWJvbC5jcHAKQEAgLTc5LDcgKzc5LDcgQEAgSlNPYmplY3QqIFN5
bWJvbDo6dG9PYmplY3QoRXhlY1N0YXRlKiBleGVjLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KSBjb25zdAogCiBkb3VibGUgU3ltYm9sOjp0b051bWJlcihFeGVjU3RhdGUqIGV4ZWMpIGNv
bnN0CiB7Ci0gICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBjb252ZXJ0IGEgc3ltYm9s
IHRvIGEgbnVtYmVyIik7CisgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJD
YW5ub3QgY29udmVydCBhIHN5bWJvbCB0byBhIG51bWJlciIpKTsKICAgICByZXR1cm4gMC4wOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRl
ck5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaXF1YWRGaWx0
ZXJOb2RlQ3VzdG9tLmNwcAppbmRleCA5MjFiYWVmM2JkZTI5M2Q4YTE3YzIzNmYyNjRlMjExYjk4
YmM2MGExLi4wZDVkOTM5NmNhNTI0MTNiM2ZjNGIzM2M3NTBhYzY2MTI2NzBmOWU1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpcXVhZEZpbHRlck5vZGVDdXN0b20u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmlxdWFkRmlsdGVyTm9kZUN1
c3RvbS5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgdm9pZCBKU0JpcXVhZEZpbHRlck5vZGU6OnNldFR5
cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFsdWUuaXNOdW1i
ZXIoKSkgewogICAgICAgICB1aW50MzJfdCB0eXBlID0gdmFsdWUudG9VSW50MzIoJnN0YXRlKTsK
ICAgICAgICAgaWYgKCF3cmFwcGVkKCkuc2V0VHlwZSh0eXBlKSkKLSAgICAgICAgICAgIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCAiSWxs
ZWdhbCBCaXF1YWRGaWx0ZXJOb2RlIHR5cGUiKSk7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsICJJbGxlZ2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogI2VuZGlmCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgSlNCaXF1YWRGaWx0ZXJO
b2RlOjpzZXRUeXBlKEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiAgICAgICAgIH0K
ICAgICB9CiAgICAgCi0gICAgc3RhdGUudm0oKS50aHJvd0V4Y2VwdGlvbigmc3RhdGUsIGNyZWF0
ZVR5cGVFcnJvcigmc3RhdGUsICJJbGxlZ2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIpKTsKKyAg
ICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsICJJbGxlZ2FsIEJpcXVhZEZpbHRlck5vZGUgdHlwZSIp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNCbG9iQ3VzdG9tLmNwcAppbmRleCBhOTMzNTg3MmEyYmU5MDEyYWFlZGIyYjA5NDc0NTE0
NzAwNGYxN2U5Li5jZDRkYjk2NDRhNjczMGEyN2U0YWNiYTdmMWNiMDMwYTI2NjhkYzQyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Jsb2JDdXN0b20uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTQmxvYkN1c3RvbS5jcHAKQEAgLTg0LDcgKzg0
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0Jsb2IoRXhlY1N0
YXRlKiBleGVjKQogICAgICAgICBKU1ZhbHVlIGJsb2JQcm9wZXJ0eUJhZ1ZhbHVlID0gZXhlYy0+
YXJndW1lbnQoMSk7CiAKICAgICAgICAgaWYgKCFibG9iUHJvcGVydHlCYWdWYWx1ZS5pc09iamVj
dCgpKQotICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJy
b3IoZXhlYywgIlNlY29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5
cGUgT2JqZWN0IikpOworICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywg
IlNlY29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0
Iik7CiAKICAgICAgICAgLy8gR2l2ZW4gdGhlIGFib3ZlIHRlc3QsIHRoaXMgd2lsbCBhbHdheXMg
eWllbGQgYW4gb2JqZWN0LgogICAgICAgICBKU09iamVjdCogYmxvYlByb3BlcnR5QmFnT2JqZWN0
ID0gYmxvYlByb3BlcnR5QmFnVmFsdWUudG9PYmplY3QoZXhlYyk7CkBAIC05OSw3ICs5OSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNCbG9iKEV4ZWNTdGF0ZSog
ZXhlYykKIAogICAgICAgICBpZiAoY29udGFpbnNFbmRpbmdzKSB7CiAgICAgICAgICAgICBpZiAo
ZW5kaW5ncyAhPSAidHJhbnNwYXJlbnQiICYmIGVuZGluZ3MgIT0gIm5hdGl2ZSIpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IlRoZSBlbmRpbmdzIHByb3BlcnR5IG11c3QgYmUgZWl0aGVyIFwidHJhbnNwYXJlbnRcIiBvciBc
Im5hdGl2ZVwiIikpOworICAgICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4
ZWMsICJUaGUgZW5kaW5ncyBwcm9wZXJ0eSBtdXN0IGJlIGVpdGhlciBcInRyYW5zcGFyZW50XCIg
b3IgXCJuYXRpdmVcIiIpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gQXR0ZW1wdCB0byBnZXQg
dGhlIHR5cGUgcHJvcGVydHkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLLmNwcAppbmRleCA1NjVkNjNjNGY3ZmJh
MzVmYjk1ZmVhMTQ0MWMwZGQxYTQ1NDI1MGM2Li4xMGFhOTE0M2QxZTlhNjYxZDE2NTljMjU1NTg0
ZWEyNzViMDM0ZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Ny
eXB0b0tleVNlcmlhbGl6YXRpb25KV0suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSy5jcHAKQEAgLTExNywxMiArMTE3LDEyIEBA
IHN0YXRpYyBib29sIGdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihFeGVjU3RhdGUqIGV4ZWMs
IEpTT2JqZWN0KiBqc29uLCBjb25zdCBjCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlm
ICghYmFzZTY0VVJMRGVjb2RlKGJhc2U2NHVybEVuY29kZWROdW1iZXIsIHJlc3VsdCkpIHsKLSAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgIkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBk
YXRhIGluIEpXSyIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwo
IkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtleSBkYXRhIGluIEpXSyIpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGlmIChyZXN1bHRbMF0gPT0gMCkgewotICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCAiSldLIEJpZ0ludGVnZXIgbXVzdCB1dGlsaXplIHRoZSBtaW5p
bXVtIG51bWJlciBvZiBvY3RldHMgdG8gcmVwcmVzZW50IHRoZSB2YWx1ZSIpOworICAgICAgICB0
aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkpXSyBCaWdJbnRlZ2VyIG11c3QgdXRp
bGl6ZSB0aGUgbWluaW11bSBudW1iZXIgb2Ygb2N0ZXRzIHRvIHJlcHJlc2VudCB0aGUgdmFsdWUi
KSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTEzNyw3ICsxMzcsNyBAQCBK
U0NyeXB0b0tleVNlcmlhbGl6YXRpb25KV0s6OkpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSyhF
eGVjU3RhdGUqIGV4ZWMsIGNvbnN0CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghanNvblZh
bHVlIHx8ICFqc29uVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihl
eGVjLCAiSW52YWxpZCBKV0sgc2VyaWFsaXphdGlvbiIpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cihleGVjLCBBU0NJSUxpdGVyYWwoIkludmFsaWQgSldLIHNlcmlhbGl6YXRpb24iKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI1Myw3ICsyNTMsNyBAQCBzdGF0aWMgYm9vbCB0cnlK
V0tLZXlPcHNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIENyeXB0b0tleVVzYWdlJiB1c2FnZXMsIGNv
bnN0IFN0cgogewogICAgIGlmIChvcGVyYXRpb24gPT0gdHJ5T3BlcmF0aW9uKSB7CiAgICAgICAg
IGlmICh1c2FnZXMgJiB0cnlVc2FnZSkgewotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoZXhl
YywgIkpXSyBrZXlfb3BzIGNvbnRhaW5zIGEgZHVwbGljYXRlIG9wZXJhdGlvbiIpOworICAgICAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBjb250
YWlucyBhIGR1cGxpY2F0ZSBvcGVyYXRpb24iKSk7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgICAgIH0KICAgICAgICAgdXNhZ2VzIHw9IHRyeVVzYWdlOwpAQCAtMjcyLDcgKzI3Miw3
IEBAIHZvaWQgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpyZWNvbmNpbGVVc2FnZXMoQ3J5
cHRvS2V5VXNhZ2UmIHN1Z2dlc3RlZFVzYWdlCiAgICAgICAgICAgICBTdHJpbmcgb3BlcmF0aW9u
OwogICAgICAgICAgICAgaWYgKCFqc1ZhbHVlLmdldFN0cmluZyhtX2V4ZWMsIG9wZXJhdGlvbikp
IHsKICAgICAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgIkpXSyBrZXlfb3BzIGF0dHJpYnV0
ZSBjb3VsZCBub3QgYmUgcHJvY2Vzc2VkIik7CisgICAgICAgICAgICAgICAgICAgIHRocm93VHlw
ZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJKV0sga2V5X29wcyBhdHRyaWJ1dGUgY291bGQg
bm90IGJlIHByb2Nlc3NlZCIpKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBpZiAoIXRyeUpXS0tleU9wc1ZhbHVlKG1fZXhlYywgandrVXNhZ2Vz
LCBvcGVyYXRpb24sIEFTQ0lJTGl0ZXJhbCgic2lnbiIpLCBDcnlwdG9LZXlVc2FnZVNpZ24pKQpA
QCAtMzYyLDEzICszNjIsMTMgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5
cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YU9jdGV0U2VxdWVuY2UKICAgICBTdHJpbmcg
a2V5QmFzZTY0VVJMOwogICAgIGlmICghZ2V0U3RyaW5nRnJvbUpTT04obV9leGVjLCBtX2pzb24u
Z2V0KCksICJrIiwga2V5QmFzZTY0VVJMKSkgewogICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJTZWNyZXQga2V5
IGRhdGEgaXMgbm90IHByZXNlbnQgaXMgSldLIik7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJv
cihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiU2VjcmV0IGtleSBkYXRhIGlzIG5vdCBwcmVzZW50IGlz
IEpXSyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAgVmVjdG9yPHVp
bnQ4X3Q+IG9jdGV0U2VxdWVuY2U7CiAgICAgaWYgKCFiYXNlNjRVUkxEZWNvZGUoa2V5QmFzZTY0
VVJMLCBvY3RldFNlcXVlbmNlKSkgewotICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJD
YW5ub3QgZGVjb2RlIGJhc2U2NHVybCBrZXkgZGF0YSBpbiBKV0siKTsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBkZWNvZGUgYmFzZTY0dXJsIGtl
eSBkYXRhIGluIEpXSyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCkBAIC0z
ODgsNyArMzg4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvS2V5
U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YVJTQUNvbXBvbmVudHMKIAogICAgIGlmICghZ2V0Qmln
SW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgbV9qc29uLmdldCgpLCAibiIsIG1vZHVsdXMp
KSB7CiAgICAgICAgIGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgIHRo
cm93VHlwZUVycm9yKG1fZXhlYywgIlJlcXVpcmVkIEpXSyBcIm5cIiBtZW1iZXIgaXMgbWlzc2lu
ZyIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBBU0NJSUxpdGVyYWwoIlJl
cXVpcmVkIEpXSyBcIm5cIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CiAgICAgfQogCkBAIC0zOTksNyArMzk5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0
b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlvbkpXSzo6a2V5RGF0YVJTQUNvbXBvbmVu
dHMKIAogICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgbV9qc29u
LmdldCgpLCAiZSIsIGV4cG9uZW50KSkgewogICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCi0gICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihtX2V4ZWMsICJSZXF1aXJlZCBKV0sg
XCJlXCIgbWVtYmVyIGlzIG1pc3NpbmciKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1f
ZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJlXCIgbWVtYmVyIGlzIG1pc3Npbmci
KSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtNDU1LDIyICs0NTUsMjIg
QEAgc3RkOjp1bmlxdWVfcHRyPENyeXB0b0tleURhdGE+IEpTQ3J5cHRvS2V5U2VyaWFsaXphdGlv
bkpXSzo6a2V5RGF0YVJTQUNvbXBvbmVudHMKICAgICAgICAgaWYgKG1fZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKCFlbGVtZW50
LmlzT2JqZWN0KCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgIkpXSyBc
Im90aFwiIGFycmF5IG1lbWJlciBpcyBub3QgYW4gb2JqZWN0Iik7CisgICAgICAgICAgICB0aHJv
d1R5cGVFcnJvcihtX2V4ZWMsIEFTQ0lJTGl0ZXJhbCgiSldLIFwib3RoXCIgYXJyYXkgbWVtYmVy
IGlzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAg
ICAgfQogICAgICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNPTihtX2V4ZWMsIGFz
T2JqZWN0KGVsZW1lbnQpLCAiciIsIGluZm8ucHJpbWVGYWN0b3IpKSB7CiAgICAgICAgICAgICBp
ZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJy
b3IobV9leGVjLCAiQ2Fubm90IGdldCBwcmltZSBmYWN0b3IgZm9yIGEgcHJpbWUgaW4gXCJvdGhc
IiBkaWN0aW9uYXJ5Iik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCBB
U0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgcHJpbWUgZmFjdG9yIGZvciBhIHByaW1lIGluIFwib3Ro
XCIgZGljdGlvbmFyeSIpKTsKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICB9
CiAgICAgICAgIGlmICghZ2V0QmlnSW50ZWdlclZlY3RvckZyb21KU09OKG1fZXhlYywgYXNPYmpl
Y3QoZWxlbWVudCksICJkIiwgaW5mby5mYWN0b3JDUlRFeHBvbmVudCkpIHsKICAgICAgICAgICAg
IGlmICghbV9leGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgICAgICAgICB0aHJvd1R5cGVF
cnJvcihtX2V4ZWMsICJDYW5ub3QgZ2V0IGZhY3RvciBDUlQgZXhwb25lbnQgZm9yIGEgcHJpbWUg
aW4gXCJvdGhcIiBkaWN0aW9uYXJ5Iik7CisgICAgICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
bV9leGVjLCBBU0NJSUxpdGVyYWwoIkNhbm5vdCBnZXQgZmFjdG9yIENSVCBleHBvbmVudCBmb3Ig
YSBwcmltZSBpbiBcIm90aFwiIGRpY3Rpb25hcnkiKSk7CiAgICAgICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICAgICAgfQogICAgICAgICBpZiAoIWdldEJpZ0ludGVnZXJWZWN0b3JGcm9tSlNP
TihtX2V4ZWMsIGFzT2JqZWN0KGVsZW1lbnQpLCAidCIsIGluZm8uZmFjdG9yQ1JUQ29lZmZpY2ll
bnQpKSB7CiAgICAgICAgICAgICBpZiAoIW1fZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9leGVjLCAiQ2Fubm90IGdldCBmYWN0b3IgQ1JUIGNv
ZWZmaWNpZW50IGZvciBhIHByaW1lIGluIFwib3RoXCIgZGljdGlvbmFyeSIpOworICAgICAgICAg
ICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJDYW5ub3QgZ2V0IGZh
Y3RvciBDUlQgY29lZmZpY2llbnQgZm9yIGEgcHJpbWUgaW4gXCJvdGhcIiBkaWN0aW9uYXJ5Iikp
OwogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgb3RoZXJQ
cmltZUluZm9zLmFwcGVuZChpbmZvKTsKQEAgLTQ4NCw3ICs0ODQsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8Q3J5cHRvS2V5RGF0YT4gSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjprZXlEYXRhKCkg
Y29uc3QKICAgICBTdHJpbmcgandrS2V5VHlwZTsKICAgICBpZiAoIWdldFN0cmluZ0Zyb21KU09O
KG1fZXhlYywgbV9qc29uLmdldCgpLCAia3R5IiwgandrS2V5VHlwZSkpIHsKICAgICAgICAgaWYg
KCFtX2V4ZWMtPmhhZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IobV9l
eGVjLCAiUmVxdWlyZWQgSldLIFwia3R5XCIgbWVtYmVyIGlzIG1pc3NpbmciKTsKKyAgICAgICAg
ICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJSZXF1aXJlZCBKV0sgXCJr
dHlcIiBtZW1iZXIgaXMgbWlzc2luZyIpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAg
fQogCkBAIC02NDksNyArNjQ5LDcgQEAgc3RhdGljIHZvaWQgYWRkSldLQWxnb3JpdGhtVG9KU09O
KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIGpzb24sIGNvbnN0IENyeXB0b0sKIAogICAgIGlm
IChqd2tBbGdvcml0aG0uaXNOdWxsKCkpIHsKICAgICAgICAgLy8gVGhlIHNwZWMgZG9lc24ndCBj
dXJyZW50bHkgdGVsbCB3aGV0aGVyIGV4cG9ydCBzaG91bGQgZmFpbCwgb3IganVzdCBza2lwICJh
bGciICh3aGljaCBpcyBhbiBvcHRpb25hbCBrZXkgaW4gSldLKS4KLSAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZXhlYywgIktleSBhbGdvcml0aG0gYW5kIHNpemUgZG8gbm90IG1hcCB0byBhbnkgSldL
IGFsZ29yaXRobSBpZGVudGlmaWVyIik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFT
Q0lJTGl0ZXJhbCgiS2V5IGFsZ29yaXRobSBhbmQgc2l6ZSBkbyBub3QgbWFwIHRvIGFueSBKV0sg
YWxnb3JpdGhtIGlkZW50aWZpZXIiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY4
OSw3ICs2ODksNyBAQCBTdHJpbmcgSlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLOjpzZXJpYWxp
emUoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBDcnlwdG9LZXkmCiAgICAgc3RkOjp1bmlxdWVfcHRy
PENyeXB0b0tleURhdGE+IGtleURhdGEgPSBrZXkuZXhwb3J0RGF0YSgpOwogICAgIGlmICgha2V5
RGF0YSkgewogICAgICAgICAvLyBUaGlzIGdlbmVyYWxseSBzaG91bGRuJ3QgaGFwcGVuIGFzIGxv
bmcgYXMgYWxsIGtleSB0eXBlcyBpbXBsZW1lbnQgZXhwb3J0RGF0YSgpLCBidXQgYXMgdW5kZXJs
eWluZyBsaWJyYXJpZXMgcmV0dXJuIGVycm9ycywgdGhlcmUgbWF5IGJlIHNvbWUgcmFyZSBmYWls
dXJlIGNvbmRpdGlvbnMuCi0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJDb3VsZG4ndCBl
eHBvcnQga2V5IG1hdGVyaWFsIik7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiQ291bGRuJ3QgZXhwb3J0IGtleSBtYXRlcmlhbCIpKTsKICAgICAgICAgcmV0dXJu
IFN0cmluZygpOwogICAgIH0KIApAQCAtNzEwLDcgKzcxMCw3IEBAIFN0cmluZyBKU0NyeXB0b0tl
eVNlcmlhbGl6YXRpb25KV0s6OnNlcmlhbGl6ZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IENyeXB0
b0tleSYKICAgICBlbHNlIGlmIChpczxDcnlwdG9LZXlEYXRhUlNBQ29tcG9uZW50cz4oKmtleURh
dGEpKQogICAgICAgICBidWlsZEpTT05Gb3JSU0FDb21wb25lbnRzKGV4ZWMsIGRvd25jYXN0PENy
eXB0b0tleURhdGFSU0FDb21wb25lbnRzPigqa2V5RGF0YSksIHJlc3VsdCk7CiAgICAgZWxzZSB7
Ci0gICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsICJLZXkgZG9lc24ndCBzdXBwb3J0IGV4cG9y
dEtleSIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIktleSBk
b2Vzbid0IHN1cHBvcnQgZXhwb3J0S2V5IikpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAg
ICAgfQogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0NyeXB0b09wZXJhdGlvbkRhdGEuY3BwCmluZGV4IDg1YjE3YjU4
YWJhOTVjMDU1NmM2NzlhYjA5MDZiNDA4NWI3M2RiYTAuLmI0ZDRlOThhOWRhOTc1MmNjNTgxNzNl
OTI0OTIxYjY5NDVmNzNlODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTQ3J5cHRvT3BlcmF0aW9uRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNDcnlwdG9PcGVyYXRpb25EYXRhLmNwcApAQCAtNDEsNyArNDEsNyBAQCBib29sIGNyeXB0
b09wZXJhdGlvbkRhdGFGcm9tSlNWYWx1ZShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUs
IENyeXB0b09wZXJhdAogICAgIGVsc2UgaWYgKFJlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGJ1ZmZl
clZpZXcgPSB0b0FycmF5QnVmZmVyVmlldyh2YWx1ZSkpCiAgICAgICAgIHJlc3VsdCA9IHN0ZDo6
bWFrZV9wYWlyKHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXJWaWV3LT5iYXNlQWRkcmVzcygp
KSwgYnVmZmVyVmlldy0+Ynl0ZUxlbmd0aCgpKTsKICAgICBlbHNlIHsKLSAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZXhlYywgIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5QnVmZmVyVmlldyBvYmpl
Y3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIpOworICAgICAgICB0aHJv
d1R5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIk9ubHkgQXJyYXlCdWZmZXIgYW5kIEFycmF5
QnVmZmVyVmlldyBvYmplY3RzIGNhbiBiZSBwYXNzZWQgYXMgQ3J5cHRvT3BlcmF0aW9uRGF0YSIp
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwCmluZGV4IDE1MmQwZjRiYjBm
MzViZjIwNjY2ODU2MzZlOWRmMDkxOTBmNDdhZTcuLmQ4MjBlMjM3ZDZmYzY5ZWY4OWU1MTI1M2Ux
MDI0ZjBhODZjMWI0NjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
RE9NQmluZGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5k
aW5nLmNwcApAQCAtMzc0LDEyICszNzQsMTIgQEAgc3RhdGljIFN0cmluZyByYW5nZUVycm9yU3Ry
aW5nKGRvdWJsZSB2YWx1ZSwgZG91YmxlIG1pbiwgZG91YmxlIG1heCkKIHN0YXRpYyBkb3VibGUg
ZW5mb3JjZVJhbmdlKEV4ZWNTdGF0ZSYgc3RhdGUsIGRvdWJsZSB4LCBkb3VibGUgbWluaW11bSwg
ZG91YmxlIG1heGltdW0pCiB7CiAgICAgaWYgKHN0ZDo6aXNuYW4oeCkgfHwgc3RkOjppc2luZih4
KSkgewotICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlw
ZUVycm9yKCZzdGF0ZSwgcmFuZ2VFcnJvclN0cmluZyh4LCBtaW5pbXVtLCBtYXhpbXVtKSkpOwor
ICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWluaW11
bSwgbWF4aW11bSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgeCA9IHRydW5jKHgp
OwogICAgIGlmICh4IDwgbWluaW11bSB8fCB4ID4gbWF4aW11bSkgewotICAgICAgICBzdGF0ZS52
bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgcmFuZ2VF
cnJvclN0cmluZyh4LCBtaW5pbXVtLCBtYXhpbXVtKSkpOworICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsIHJhbmdlRXJyb3JTdHJpbmcoeCwgbWluaW11bSwgbWF4aW11bSkpOwogICAgICAg
ICByZXR1cm4gMDsKICAgICB9CiAgICAgcmV0dXJuIHg7CkBAIC03MzYsNyArNzM2LDcgQEAgYm9v
bCBCaW5kaW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9Ob2RlKEpTQzo6RXhlY1N0YXRl
KiBzdGF0ZSwgTm9kZSogdGFyZ2UKICAgICAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSB0aHJvd1R5
cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdl
KQogewotICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0
YXRlLCBlcnJvck1lc3NhZ2UpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUs
IGVycm9yTWVzc2FnZSk7CiB9CiAKIHN0YXRpYyB2b2lkIGFwcGVuZEFyZ3VtZW50TXVzdEJlKFN0
cmluZ0J1aWxkZXImIGJ1aWxkZXIsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIq
IGFyZ3VtZW50TmFtZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3QgY2hhciogZnVu
Y3Rpb25OYW1lKQpAQCAtNzkxLDcgKzc5MSw3IEBAIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dB
cmd1bWVudE11c3RCZUVudW1FcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIHVuc2lnbmVkCiAg
ICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJndW1lbnRO
YW1lLCBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGZ1bmN0aW9uTmFtZSk7CiAgICAgYnVpbGRlci5h
cHBlbmRMaXRlcmFsKCJvbmUgb2Y6ICIpOwogICAgIGJ1aWxkZXIuYXBwZW5kKGV4cGVjdGVkVmFs
dWVzKTsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmco
KSk7CisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBidWlsZGVyLnRvU3RyaW5n
KCkpOwogfQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93QXJndW1lbnRNdXN0QmVGdW5jdGlv
bkVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgdW5zaWduZWQgYXJndW1lbnRJbmRleCwgY29u
c3QgY2hhciogYXJndW1lbnROYW1lLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1lLCBjb25zdCBj
aGFyKiBmdW5jdGlvbk5hbWUpCkBAIC03OTksNyArNzk5LDcgQEAgSlNDOjpFbmNvZGVkSlNWYWx1
ZSB0aHJvd0FyZ3VtZW50TXVzdEJlRnVuY3Rpb25FcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUs
IHVuc2kKICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXI7CiAgICAgYXBwZW5kQXJndW1lbnRNdXN0
QmUoYnVpbGRlciwgYXJndW1lbnRJbmRleCwgYXJndW1lbnROYW1lLCBpbnRlcmZhY2VOYW1lLCBm
dW5jdGlvbk5hbWUpOwogICAgIGJ1aWxkZXIuYXBwZW5kTGl0ZXJhbCgiYSBmdW5jdGlvbiIpOwot
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9
CiAKIEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtZW50SW5kZXgsIGNvbnN0IGNoYXIqIGFyZ3VtZW50
TmFtZSwgY29uc3QgY2hhciogZnVuY3Rpb25JbnRlcmZhY2VOYW1lLCBjb25zdCBjaGFyKiBmdW5j
dGlvbk5hbWUsIGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSkKQEAgLTgwOCwxMiArODA4LDEyIEBA
IEpTQzo6RW5jb2RlZEpTVmFsdWUgdGhyb3dBcmd1bWVudFR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsIHVuc2lnbmVkIGFyZ3VtCiAgICAgYXBwZW5kQXJndW1lbnRNdXN0QmUoYnVpbGRl
ciwgYXJndW1lbnRJbmRleCwgYXJndW1lbnROYW1lLCBmdW5jdGlvbkludGVyZmFjZU5hbWUsIGZ1
bmN0aW9uTmFtZSk7CiAgICAgYnVpbGRlci5hcHBlbmRMaXRlcmFsKCJhbiBpbnN0YW5jZSBvZiAi
KTsKICAgICBidWlsZGVyLmFwcGVuZChleHBlY3RlZFR5cGUpOwotICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgYnVpbGRlci50b1N0cmluZygpKTsKKyAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcigmc3RhdGUsIGJ1aWxkZXIudG9TdHJpbmcoKSk7CiB9CiAKIHZvaWQgdGhyb3dBcnJh
eUVsZW1lbnRUeXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlKQogewotICAgIHRocm93VHlw
ZUVycm9yKHN0YXRlLCAiSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUiKTsKKyAgICB0aHJvd1R5
cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZSIp
KTsKIH0KIAogdm9pZCB0aHJvd0F0dHJpYnV0ZVR5cGVFcnJvcihKU0M6OkV4ZWNTdGF0ZSYgc3Rh
dGUsIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsIGNvbnN0IGNoYXIqIGF0dHJpYnV0ZU5hbWUs
IGNvbnN0IGNoYXIqIGV4cGVjdGVkVHlwZSkKQEAgLTgyOSw3ICs4MjksNyBAQCBKU0M6OkVuY29k
ZWRKU1ZhbHVlIHRocm93Q29uc3RydWN0b3JEb2N1bWVudFVuYXZhaWxhYmxlRXJyb3IoSlNDOjpF
eGVjU3RhdGUmIHN0YQogCiBKU0M6OkVuY29kZWRKU1ZhbHVlIHRocm93R2V0dGVyVHlwZUVycm9y
KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29uc3Qg
Y2hhciogYXR0cmlidXRlTmFtZSkKIHsKLSAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Ioc3RhdGUs
IG1ha2VTdHJpbmcoIlRoZSAiLCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIg
Z2V0dGVyIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUp
KTsKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcigmc3RhdGUsIG1ha2VTdHJpbmcoIlRoZSAi
LCBpbnRlcmZhY2VOYW1lLCAnLicsIGF0dHJpYnV0ZU5hbWUsICIgZ2V0dGVyIGNhbiBvbmx5IGJl
IHVzZWQgb24gaW5zdGFuY2VzIG9mICIsIGludGVyZmFjZU5hbWUpKTsKIH0KIAogdm9pZCB0aHJv
d1NlcXVlbmNlVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSkKQEAgLTg1MCw3ICs4NTAs
NyBAQCBib29sIHRocm93U2V0dGVyVHlwZUVycm9yKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgY29u
c3QgY2hhciogaW50ZXJmYWNlTmFtZSwgY29ucwogCiBFbmNvZGVkSlNWYWx1ZSB0aHJvd1RoaXNU
eXBlRXJyb3IoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBjaGFyKiBpbnRlcmZhY2VOYW1l
LCBjb25zdCBjaGFyKiBmdW5jdGlvbk5hbWUpCiB7Ci0gICAgcmV0dXJuIHRocm93VHlwZUVycm9y
KHN0YXRlLCBtYWtlU3RyaW5nKCJDYW4gb25seSBjYWxsICIsIGludGVyZmFjZU5hbWUsICcuJywg
ZnVuY3Rpb25OYW1lLCAiIG9uIGluc3RhbmNlcyBvZiAiLCBpbnRlcmZhY2VOYW1lKSk7CisgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoJnN0YXRlLCBtYWtlU3RyaW5nKCJDYW4gb25seSBjYWxs
ICIsIGludGVyZmFjZU5hbWUsICcuJywgZnVuY3Rpb25OYW1lLCAiIG9uIGluc3RhbmNlcyBvZiAi
LCBpbnRlcmZhY2VOYW1lKSk7CiB9CiAKIHZvaWQgY2FsbEZ1bmN0aW9uV2l0aEN1cnJlbnRBcmd1
bWVudHMoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTT2JqZWN0JiB0aGlzT2JqZWN0LCBK
U0M6OkpTRnVuY3Rpb24mIGZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRGF0YUN1ZUN1c3RvbS5jcHAKaW5kZXggNmVmYmRlNWNjZDQwZmZjY2RkODYzOWE3NmZhMjk2
NGMxODc0NWM1Yi4uMDViOWRkNjNlNzU2ZmM0OTBiZjhhMzU5Y2I5OTJiYjk5NDdjOTI4ZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEYXRhQ3VlQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RhdGFDdWVDdXN0b20uY3BwCkBAIC02
OSw3ICs2OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0SlNEYXRh
Q3VlKEV4ZWNTdGF0ZSogZXhlYykKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMykgewogICAgICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50
KDMpLmlzU3RyaW5nKCkpCi0gICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiU2Vjb25kIGFyZ3VtZW50IG9mIHRoZSBjb25zdHJ1Y3RvciBp
cyBub3Qgb2YgdHlwZSBTdHJpbmciKSk7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNlY29uZCBhcmd1bWVudCBvZiB0aGUgY29uc3RydWN0
b3IgaXMgbm90IG9mIHR5cGUgU3RyaW5nIikpOwogICAgICAgICB0eXBlID0gZXhlYy0+YXJndW1l
bnQoMykuZ2V0U3RyaW5nKGV4ZWMpOwogICAgIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVudEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50Q3VzdG9tLmNwcAppbmRleCBkOTc0MTU3ZmM2ZWEwZDgy
MjAwMjJlY2QzM2M0ZWNhYzczMzlmMWZmLi44MTI5ZjA1MDVmMWI3NTE5ODc3NzNmMWVhOWIxZmJl
MjQ3YzUyMDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3VtZW50
Q3VzdG9tLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIEpTVmFsdWUgSlNEb2N1bWVudDo6ZGVmaW5l
RWxlbWVudChFeGVjU3RhdGUmIHN0YXRlKQogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBzdGF0ZS5h
cmd1bWVudCgxKS5nZXRPYmplY3QoKTsKICAgICBDb25zdHJ1Y3REYXRhIGNhbGxEYXRhOwogICAg
IGlmICghb2JqZWN0IHx8IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0Q29uc3RydWN0RGF0YShv
YmplY3QsIGNhbGxEYXRhKSA9PSBDb25zdHJ1Y3RUeXBlOjpOb25lKQotICAgICAgICByZXR1cm4g
dGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiVGhlIHNlY29uZCBhcmd1bWVudCBtdXN0IGJlIGEgY29u
c3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlM
aXRlcmFsKCJUaGUgc2Vjb25kIGFyZ3VtZW50IG11c3QgYmUgYSBjb25zdHJ1Y3RvciIpKTsKIAog
ICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHdyYXBwZWQoKTsKICAgICBpZiAoIWRvY3VtZW50LmRv
bVdpbmRvdygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0Zp
bGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNGaWxlQ3VzdG9tLmNw
cAppbmRleCBjZjc1ZDI1NjY1NDI0Zjg0Y2RmMTg1MGQ5NzE2ODAwMjE4ODViNDk3Li5lZDkzNzJm
YzFlZjZiYmM3MWFlNDkzZTY5YWIyYjMyNTVhOGU1YzU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU0ZpbGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRmlsZUN1c3RvbS5jcHAKQEAgLTQ5LDcgKzQ5LDcgQEAgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RKU0ZpbGUoRXhlY1N0YXRlKiBleGVjKQogCiAgICAg
SlNWYWx1ZSBhcmcgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoYXJnLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJGaXJzdCBhcmd1bWVudCB0byBGaWxlIGNvbnN0cnVjdG9yIG11c3QgYmUgYSB2
YWxpZCBzZXF1ZW5jZSwgd2FzIHVuZGVmaW5lZCBvciBudWxsIikpOworICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkZpcnN0IGFyZ3VtZW50IHRvIEZp
bGUgY29uc3RydWN0b3IgbXVzdCBiZSBhIHZhbGlkIHNlcXVlbmNlLCB3YXMgdW5kZWZpbmVkIG9y
IG51bGwiKSk7CiAKICAgICB1bnNpZ25lZCBibG9iUGFydHNMZW5ndGggPSAwOwogICAgIEpTT2Jq
ZWN0KiBibG9iUGFydHMgPSB0b0pTU2VxdWVuY2UoZXhlYywgYXJnLCBibG9iUGFydHNMZW5ndGgp
OwpAQCAtNTksNyArNTksNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVj
dEpTRmlsZShFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBhcmcgPSBleGVjLT5hcmd1bWVudCgxKTsK
ICAgICBpZiAoYXJnLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3Io
ZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJTZWNvbmQgYXJndW1lbnQgdG8gRmlsZSBjb25z
dHJ1Y3RvciBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nLCB3YXMgdW5kZWZpbmVkIikpOworICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlNlY29uZCBhcmd1
bWVudCB0byBGaWxlIGNvbnN0cnVjdG9yIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcsIHdhcyB1bmRl
ZmluZWQiKSk7CiAKICAgICBTdHJpbmcgZmlsZW5hbWUgPSBhcmcudG9XVEZTdHJpbmcoZXhlYyku
cmVwbGFjZSgnLycsICc6Jyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtNzIs
NyArNzIsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNvbnN0cnVjdEpTRmlsZShF
eGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFhcmcuaXNVbmRlZmluZWRPck51bGwoKSkgewogICAg
ICAgICBKU09iamVjdCogZmlsZVByb3BlcnR5QmFnT2JqZWN0ID0gYXJnLmdldE9iamVjdCgpOwog
ICAgICAgICBpZiAoIWZpbGVQcm9wZXJ0eUJhZ09iamVjdCkKLSAgICAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJUaGlyZCBhcmd1bWVudCBv
ZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0IikpOworICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGlyZCBhcmd1bWVu
dCBvZiB0aGUgY29uc3RydWN0b3IgaXMgbm90IG9mIHR5cGUgT2JqZWN0IikpOwogCiAgICAgICAg
IC8vIENyZWF0ZSB0aGUgZGljdGlvbmFyeSB3cmFwcGVyIGZyb20gdGhlIGluaXRpYWxpemVyIG9i
amVjdC4KICAgICAgICAgSlNEaWN0aW9uYXJ5IGRpY3Rpb25hcnkoZXhlYywgZmlsZVByb3BlcnR5
QmFnT2JqZWN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9k
dWxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTW9kdWxlTG9hZGVy
LmNwcAppbmRleCA1NDU3ZTdlMWM1ODE4YTExN2Y4ZjI4ZTBmNmJmYTViNTMzNzg0YThhLi40NjY5
NDI1MzkyZGY3MWM4YzgyZTAwNWU5MTZjYzIyODA4NzE2YjA4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU01vZHVsZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNNb2R1bGVMb2FkZXIuY3BwCkBAIC0xMTYsMTAgKzExNiwxMCBAQCBK
U0M6OkpTVmFsdWUgSlNNb2R1bGVMb2FkZXI6OmV2YWx1YXRlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYwogICAgIGVsc2UgaWYgKG1vZHVsZUtleVZhbHVlLmlzU3Ry
aW5nKCkpCiAgICAgICAgIHNvdXJjZVVybCA9IFVSTChVUkwoKSwgYXNTdHJpbmcobW9kdWxlS2V5
VmFsdWUpLT52YWx1ZShleGVjKSk7CiAgICAgZWxzZQotICAgICAgICByZXR1cm4gSlNDOjp0aHJv
d1R5cGVFcnJvcihleGVjLCAiTW9kdWxlIGtleSBpcyBub3QgU3ltYm9sIG9yIFN0cmluZy4iKTsK
KyAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJN
b2R1bGUga2V5IGlzIG5vdCBTeW1ib2wgb3IgU3RyaW5nLiIpKTsKIAogICAgIGlmICghc291cmNl
VXJsLmlzVmFsaWQoKSkKLSAgICAgICAgcmV0dXJuIEpTQzo6dGhyb3dUeXBlRXJyb3IoZXhlYywg
Ik1vZHVsZSBrZXkgaXMgYW4gaW52YWxpZCBVUkwuIik7CisgICAgICAgIHJldHVybiBKU0M6OnRo
cm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiTW9kdWxlIGtleSBpcyBhbiBpbnZhbGlk
IFVSTC4iKSk7CiAKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IGV2YWx1YXRpbmcgbW9kdWxlIGNv
ZGUuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25P
YnNlcnZlckN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU011dGF0aW9u
T2JzZXJ2ZXJDdXN0b20uY3BwCmluZGV4IGMxNTBlYTAyNmJjMzFjODRiNzNhNDI5ZTJkMzA3ODY4
YWFlOTRmMTEuLmUyZmIxYzdiNWZiNzY1MDM0YzIxNzUzNDA1MTI0ODgxMjI1MzFjNjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTXV0YXRpb25PYnNlcnZlckN1c3Rv
bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNNdXRhdGlvbk9ic2VydmVy
Q3VzdG9tLmNwcApAQCAtNTAsNyArNTAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGNvbnN0cnVjdEpTTXV0YXRpb25PYnNlcnZlcihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNPYmpl
Y3QqIG9iamVjdCA9IGV4ZWMtPmFyZ3VtZW50KDApLmdldE9iamVjdCgpOwogICAgIENhbGxEYXRh
IGNhbGxEYXRhOwogICAgIGlmICghb2JqZWN0IHx8IG9iamVjdC0+bWV0aG9kVGFibGUoKS0+Z2V0
Q2FsbERhdGEob2JqZWN0LCBjYWxsRGF0YSkgPT0gQ2FsbFR5cGU6Ok5vbmUpCi0gICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJDYWxsYmFjayBh
cmd1bWVudCBtdXN0IGJlIGEgZnVuY3Rpb24iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQ2FsbGJhY2sgYXJndW1lbnQgbXVzdCBiZSBhIGZ1
bmN0aW9uIikpOwogCiAgICAgRE9NQ29uc3RydWN0b3JPYmplY3QqIGpzQ29uc3RydWN0b3IgPSBq
c0Nhc3Q8RE9NQ29uc3RydWN0b3JPYmplY3QqPihleGVjLT5jYWxsZWUoKSk7CiAgICAgYXV0byBj
YWxsYmFjayA9IEpTTXV0YXRpb25DYWxsYmFjazo6Y3JlYXRlKG9iamVjdCwganNDb25zdHJ1Y3Rv
ci0+Z2xvYmFsT2JqZWN0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNPc2NpbGxhdG9yTm9kZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU09zY2lsbGF0b3JOb2RlQ3VzdG9tLmNwcAppbmRleCAzYWRmODAyMjVjNDNiZmIzZGRiNTY3
YjE2OTVjYWU3ZDAyNmJlYWEzLi43YzljNjc2NmVjMjliYWFlNWI0MWFlZWJlYTZmZjk1NjlhZjZh
NGJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0b3JO
b2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU09zY2lsbGF0
b3JOb2RlQ3VzdG9tLmNwcApAQCAtNDUsNyArNDUsNyBAQCB2b2lkIEpTT3NjaWxsYXRvck5vZGU6
OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICBpZiAodmFsdWUu
aXNOdW1iZXIoKSkgewogICAgICAgICB1aW50MzJfdCB0eXBlID0gdmFsdWUudG9VSW50MzIoJnN0
YXRlKTsKICAgICAgICAgaWYgKCFpbXAuc2V0VHlwZSh0eXBlKSkKLSAgICAgICAgICAgIHN0YXRl
LnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCAiSWxs
ZWdhbCBPc2NpbGxhdG9yTm9kZSB0eXBlIikpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3Io
JnN0YXRlLCBBU0NJSUxpdGVyYWwoIklsbGVnYWwgT3NjaWxsYXRvck5vZGUgdHlwZSIpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgpAQCAtNTgsNyArNTgsNyBAQCB2b2lkIEpTT3Nj
aWxsYXRvck5vZGU6OnNldFR5cGUoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAg
ICAgICAgfQogICAgIH0KICAgICAKLSAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0
ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgT3NjaWxsYXRvck5vZGUgdHlwZSIp
KTsKKyAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBPc2Np
bGxhdG9yTm9kZSB0eXBlIikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNQYW5uZXJOb2RlQ3VzdG9tLmNwcAppbmRleCA2
NzkwZjg0YTdjZWU5ZjE2NjEyNmNmNjQxNDUwYzFiNDM0Njg0MzU2Li5kNjA4NDViZjIwNTczNTBl
NzM2ZTU3NzJkMTk2OTE2NDkwNDNkOGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1Bhbm5lck5vZGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTUGFubmVyTm9kZUN1c3RvbS5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgdm9pZCBKU1Bh
bm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVl
KQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIHVpbnQzMl90IG1vZGVsID0g
dmFsdWUudG9VSW50MzIoJnN0YXRlKTsKICAgICAgICAgaWYgKCFpbXAuc2V0UGFubmluZ01vZGVs
KG1vZGVsKSkKLSAgICAgICAgICAgIHN0YXRlLnZtKCkudGhyb3dFeGNlcHRpb24oJnN0YXRlLCBj
cmVhdGVUeXBlRXJyb3IoJnN0YXRlLCAiSWxsZWdhbCBwYW5uaW5nTW9kZWwiKSk7CisgICAgICAg
ICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBwYW5uaW5n
TW9kZWwiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKQEAgLTU4LDcgKzU4LDcg
QEAgdm9pZCBKU1Bhbm5lck5vZGU6OnNldFBhbm5pbmdNb2RlbChFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHN0YXRlLnZtKCkudGhy
b3dFeGNlcHRpb24oJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCAiSWxsZWdhbCBwYW5u
aW5nTW9kZWwiKSk7CisgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIkls
bGVnYWwgcGFubmluZ01vZGVsIikpOwogfQogCiB2b2lkIEpTUGFubmVyTm9kZTo6c2V0RGlzdGFu
Y2VNb2RlbChFeGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlKQpAQCAtNjksNyArNjksNyBA
QCB2b2lkIEpTUGFubmVyTm9kZTo6c2V0RGlzdGFuY2VNb2RlbChFeGVjU3RhdGUmIHN0YXRlLCBK
U1ZhbHVlIHZhbHVlKQogICAgIGlmICh2YWx1ZS5pc051bWJlcigpKSB7CiAgICAgICAgIHVpbnQz
Ml90IG1vZGVsID0gdmFsdWUudG9VSW50MzIoJnN0YXRlKTsKICAgICAgICAgaWYgKCFpbXAuc2V0
RGlzdGFuY2VNb2RlbChtb2RlbCkpCi0gICAgICAgICAgICBzdGF0ZS52bSgpLnRocm93RXhjZXB0
aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0ZSwgIklsbGVnYWwgZGlzdGFuY2VNb2Rl
bCIpKTsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVNDSUlMaXRlcmFsKCJJ
bGxlZ2FsIGRpc3RhbmNlTW9kZWwiKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYK
QEAgLTgyLDcgKzgyLDcgQEAgdm9pZCBKU1Bhbm5lck5vZGU6OnNldERpc3RhbmNlTW9kZWwoRXhl
Y1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKICAgICAgICAgfQogICAgIH0KICAgICAKLSAg
ICBzdGF0ZS52bSgpLnRocm93RXhjZXB0aW9uKCZzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKCZzdGF0
ZSwgIklsbGVnYWwgZGlzdGFuY2VNb2RlbCIpKTsKKyAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
IEFTQ0lJTGl0ZXJhbCgiSWxsZWdhbCBkaXN0YW5jZU1vZGVsIikpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1Jl
YWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9KU1JlYWRhYmxlU3RyZWFtUHJpdmF0ZUNvbnN0cnVjdG9ycy5jcHAKaW5kZXggYzY2
MDg2MTUzOThiMGJmMDcxZTA1NzZkOGM0MDgwOWEyMWQyZTkzYS4uYmEyYzc3NDA3Yzg1MmIzZjk5
N2E4NWE0ZmZmNjRkNWNjZWRkZmFhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNSZWFkYWJsZVN0cmVhbVByaXZhdGVDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTUmVhZGFibGVTdHJlYW1Qcml2YXRlQ29uc3RydWN0b3Jz
LmNwcApAQCAtMzYsMTQgKzM2LDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIFB1YmxpYyBK
UyBSZWFkYWJsZVN0cmVhbVJlZGVyIGFuZCBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3Ry
dWN0b3IgY2FsbGJhY2tzLgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RK
U1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlcihFeGVjU3RhdGUqIHN0YXRlKQogewotICAgIHJldHVy
biB0aHJvd1ZNRXJyb3Ioc3RhdGUsIGNyZWF0ZVR5cGVFcnJvcihzdGF0ZSwgQVNDSUlMaXRlcmFs
KCJSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIgY29uc3RydWN0b3Igc2hvdWxkIG5vdCBiZSBjYWxs
ZWQgZGlyZWN0bHkiKSkpOworICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRlLCBBU0NJ
SUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtQ29udHJvbGxlciBjb25zdHJ1Y3RvciBzaG91bGQgbm90
IGJlIGNhbGxlZCBkaXJlY3RseSIpKTsKIH0KIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjb25zdHJ1Y3RKU1JlYWRhYmxlU3RyZWFtUmVhZGVyKEV4ZWNTdGF0ZSogc3RhdGUpCiB7CiAg
ICAgSlNSZWFkYWJsZVN0cmVhbSogc3RyZWFtID0ganNEeW5hbWljQ2FzdDxKU1JlYWRhYmxlU3Ry
ZWFtKj4oc3RhdGUtPmFyZ3VtZW50KDApKTsKICAgICBpZiAoIXN0cmVhbSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihzdGF0ZSwgY3JlYXRlVHlwZUVycm9yKHN0YXRlLCBBU0NJSUxpdGVy
YWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHBhcmFtZXRlciBpcyBub3QgYSBS
ZWFkYWJsZVN0cmVhbSIpKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKHN0YXRl
LCBBU0NJSUxpdGVyYWwoIlJlYWRhYmxlU3RyZWFtUmVhZGVyIGNvbnN0cnVjdG9yIHBhcmFtZXRl
ciBpcyBub3QgYSBSZWFkYWJsZVN0cmVhbSIpKTsKIAogICAgIEpTVmFsdWUganNGdW5jdGlvbiA9
IHN0cmVhbS0+Z2V0KHN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHN0YXRlLCAiZ2V0UmVh
ZGVyIikpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRs
ZUNyeXB0b0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1N1YnRsZUNy
eXB0b0N1c3RvbS5jcHAKaW5kZXggOGM2ZDg4YTU4NGE5NmYzYjdhMDU4MmY0ZTIyZWVjODFlMjFh
MWIwMy4uMDMzNTFkNTkxZDdlN2I4ZTRjNzFiYjUzNTUyNDBiYzI2OWM0ZjIzMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNTdWJ0bGVDcnlwdG9DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU3VidGxlQ3J5cHRvQ3VzdG9tLmNwcApA
QCAtODksNyArODksNyBAQCBzdGF0aWMgYm9vbCBjcnlwdG9LZXlGb3JtYXRGcm9tSlNWYWx1ZShF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIHZhbHVlLCBDcnlwdG9LZQogICAgIGVsc2UgaWYgKGtl
eUZvcm1hdFN0cmluZyA9PSAiandrIikKICAgICAgICAgcmVzdWx0ID0gQ3J5cHRvS2V5Rm9ybWF0
OjpKV0s7CiAgICAgZWxzZSB7Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgIlVua25v
d24ga2V5IGZvcm1hdCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiVW5rbm93biBrZXkgZm9ybWF0IikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
fQogICAgIHJldHVybiB0cnVlOwpAQCAtNDUzLDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGltcG9y
dEtleShFeGVjU3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBDcnlwdG9P
cGVyYXRpCiAgICAgY2FzZSBDcnlwdG9LZXlGb3JtYXQ6OkpXSzogewogICAgICAgICBTdHJpbmcg
andrU3RyaW5nID0gU3RyaW5nOjpmcm9tVVRGOChkYXRhLmZpcnN0LCBkYXRhLnNlY29uZCk7CiAg
ICAgICAgIGlmIChqd2tTdHJpbmcuaXNOdWxsKCkpIHsKLSAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKCZzdGF0ZSwgIkpXSyBKU09OIHNlcmlhbGl6YXRpb24gaXMgbm90IHZhbGlkIFVURi04Iik7
CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0ZXJhbCgiSldLIEpT
T04gc2VyaWFsaXphdGlvbiBpcyBub3QgdmFsaWQgVVRGLTgiKSk7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KICAgICAgICAga2V5U2VyaWFsaXphdGlvbiA9IHN0ZDo6bWFrZV91bmlx
dWU8SlNDcnlwdG9LZXlTZXJpYWxpemF0aW9uSldLPigmc3RhdGUsIGp3a1N0cmluZyk7CkBAIC00
NjIsNyArNDYyLDcgQEAgc3RhdGljIHZvaWQgaW1wb3J0S2V5KEV4ZWNTdGF0ZSYgc3RhdGUsIENy
eXB0b0tleUZvcm1hdCBrZXlGb3JtYXQsIENyeXB0b09wZXJhdGkKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGRlZmF1bHQ6Ci0gICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgIlVuc3Vw
cG9ydGVkIGtleSBmb3JtYXQgZm9yIGltcG9ydCIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigm
c3RhdGUsIEFTQ0lJTGl0ZXJhbCgiVW5zdXBwb3J0ZWQga2V5IGZvcm1hdCBmb3IgaW1wb3J0Iikp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00NzAsMTQgKzQ3MCwxNCBAQCBzdGF0aWMg
dm9pZCBpbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSwgQ3J5cHRvS2V5Rm9ybWF0IGtleUZvcm1h
dCwgQ3J5cHRvT3BlcmF0aQogCiAgICAgaWYgKCFrZXlTZXJpYWxpemF0aW9uLT5yZWNvbmNpbGVB
bGdvcml0aG0oYWxnb3JpdGhtLCBwYXJhbWV0ZXJzKSkgewogICAgICAgICBpZiAoIXN0YXRlLmhh
ZEV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiQWxnb3Jp
dGhtIHNwZWNpZmllZCBpbiBrZXkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBvbmUgcGFzc2VkIHRv
IGltcG9ydEtleSBhcyBhcmd1bWVudCIpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0
YXRlLCBBU0NJSUxpdGVyYWwoIkFsZ29yaXRobSBzcGVjaWZpZWQgaW4ga2V5IGlzIG5vdCBjb21w
YXRpYmxlIHdpdGggb25lIHBhc3NlZCB0byBpbXBvcnRLZXkgYXMgYXJndW1lbnQiKSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKHN0YXRlLmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoIWFsZ29yaXRobSkgewotICAgICAgICB0aHJvd1R5cGVFcnJv
cigmc3RhdGUsICJOZWl0aGVyIGtleSBub3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0byBh
bGdvcml0aG0gc3BlY2lmaWVkIik7CisgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSwgQVND
SUlMaXRlcmFsKCJOZWl0aGVyIGtleSBub3IgZnVuY3Rpb24gYXJndW1lbnQgaGFzIGNyeXB0byBh
bGdvcml0aG0gc3BlY2lmaWVkIikpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIEFTU0VS
VChwYXJhbWV0ZXJzKTsKQEAgLTU2Niw3ICs1NjYsNyBAQCBKU1ZhbHVlIEpTU3VidGxlQ3J5cHRv
OjppbXBvcnRLZXkoRXhlY1N0YXRlJiBzdGF0ZSkKIHN0YXRpYyB2b2lkIGV4cG9ydEtleShFeGVj
U3RhdGUmIHN0YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9LZXkm
IGtleSwgQ3J5cHRvQWxnb3JpdGhtOjpWZWN0b3JDYWxsYmFjayBjYWxsYmFjaywgQ3J5cHRvQWxn
b3JpdGhtOjpWb2lkQ2FsbGJhY2sgZmFpbHVyZUNhbGxiYWNrKQogewogICAgIGlmICgha2V5LmV4
dHJhY3RhYmxlKCkpIHsKLSAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCAiS2V5IGlzIG5v
dCBleHRyYWN0YWJsZSIpOworICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUsIEFTQ0lJTGl0
ZXJhbCgiS2V5IGlzIG5vdCBleHRyYWN0YWJsZSIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtNTkwLDcgKzU5MCw3IEBAIHN0YXRpYyB2b2lkIGV4cG9ydEtleShFeGVjU3RhdGUmIHN0
YXRlLCBDcnlwdG9LZXlGb3JtYXQga2V5Rm9ybWF0LCBjb25zdCBDcnlwdG9LCiAgICAgICAgIGJy
ZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvd1R5cGVFcnJvcigmc3RhdGUs
ICJVbnN1cHBvcnRlZCBrZXkgZm9ybWF0IGZvciBleHBvcnQiKTsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwoIlVuc3VwcG9ydGVkIGtleSBmb3JtYXQgZm9yIGV4
cG9ydCIpKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtQ29udHJvbGxlci5jcHAKaW5kZXggZDc4
Y2Q5MThjMzdkN2RiZTM4MThiOTU2MjM3ZjY4NjdlZjg4M2M2ZC4uYzBjYmY5NTdkMTlmNWEzMzQy
OWZmZDk0ZjQ1YjY4MjNjMzA0YzY1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvUmVhZGFibGVTdHJlYW1Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBA
IEpTQzo6SlNWYWx1ZSBSZWFkYWJsZVN0cmVhbUNvbnRyb2xsZXI6Omludm9rZShKU0M6OkV4ZWNT
dGF0ZSYgc3RhdGUsIEpTQzo6SlNPYmplCiAKICAgICBpZiAoIWZ1bmN0aW9uLmlzRnVuY3Rpb24o
KSkgewogICAgICAgICBpZiAoIWZ1bmN0aW9uLmlzVW5kZWZpbmVkKCkpCi0gICAgICAgICAgICB0
aHJvd1ZNRXJyb3IoJnN0YXRlLCBjcmVhdGVUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVyYWwo
IlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0byBjYWxsIGEgcHJvcGVydHkgdGhhdCBpcyBub3QgY2Fs
bGFibGUiKSkpOworICAgICAgICAgICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlLCBBU0NJSUxpdGVy
YWwoIlJlYWRhYmxlU3RyZWFtIHRyeWluZyB0byBjYWxsIGEgcHJvcGVydHkgdGhhdCBpcyBub3Qg
Y2FsbGFibGUiKSk7CiAgICAgICAgIHJldHVybiBKU0M6OmpzVW5kZWZpbmVkKCk7CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0
VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZh
bHVlLmNwcAppbmRleCBiYmY5NjM3ZWM3NDVkNzVmZGIwMDQyYjExZDcxYTVlNTdmODViMDU3Li5k
YmY3NTJlYTBiNDhiM2VlNWVkYmJjODg0NjdlOTMzY2ZjNjljYjFhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAgLTE1
NjksNyArMTU2OSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHRocm93VmFsaWRhdGlvbkVycm9y
KCkKICAgICB7Ci0gICAgICAgIG1fZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihtX2V4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihtX2V4ZWMsICJVbmFibGUgdG8gZGVzZXJpYWxpemUgZGF0YS4iKSk7Cisg
ICAgICAgIHRocm93VHlwZUVycm9yKG1fZXhlYywgQVNDSUlMaXRlcmFsKCJVbmFibGUgdG8gZGVz
ZXJpYWxpemUgZGF0YS4iKSk7CiAgICAgfQogCiAgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyBy
ZXR1cm4gbV92ZXJzaW9uIDw9IEN1cnJlbnRWZXJzaW9uOyB9CkBAIC0yNzYzLDcgKzI3NjMsNyBA
QCB2b2lkIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWF5YmVUaHJvd0V4Y2VwdGlvbklmU2VyaWFs
aXphdGlvbkZhaWxlZChFeGVjU3RhdGUqCiAgICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRp
b24oZXhlYywgY3JlYXRlU3RhY2tPdmVyZmxvd0Vycm9yKGV4ZWMpKTsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBWYWxpZGF0aW9uRXJyb3I6Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhyb3dFeGNl
cHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJVbmFibGUgdG8gZGVzZXJpYWxpemUg
ZGF0YS4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVW5h
YmxlIHRvIGRlc2VyaWFsaXplIGRhdGEuIikpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIERh
dGFDbG9uZUVycm9yOgogICAgICAgICBzZXRET01FeGNlcHRpb24oZXhlYywgREFUQV9DTE9ORV9F
UlIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL2MvY19pbnN0YW5jZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAppbmRleCBmYWE4OGQyOWM3
ODU1MjkwZTg5YzI5ZmQzZWNhZTAzZjQ1MzM2NTdjLi5kM2I1YmE5NDY5ZjZiNWU3YTE0ZjdhZDhi
Nzg5MGY0NjM4NmY1YjBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2lu
c3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcApA
QCAtMTU1LDcgKzE1NSw3IEBAIEpTVmFsdWUgQ0luc3RhbmNlOjpnZXRNZXRob2QoRXhlY1N0YXRl
KiBleGVjLCBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKQogSlNWYWx1ZSBDSW5zdGFuY2U6Omlu
dm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2Qp
CiB7CiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoQ1J1bnRpbWVN
ZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9u
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWct
aW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlw
ZUVycm9yKGV4ZWMsICJBdHRlbXB0IHRvIGludm9rZSBub24tcGx1Zy1pbiBtZXRob2Qgb24gcGx1
Zy1pbiBvYmplY3QuIik7CiAKICAgICBDTWV0aG9kKiBtZXRob2QgPSBzdGF0aWNfY2FzdDxDTWV0
aG9kKj4ocnVudGltZU1ldGhvZC0+bWV0aG9kKCkpOwogICAgIEFTU0VSVChtZXRob2QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1Nv
dXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfaW5zdGFuY2UubW0KaW5kZXggNmE2MzJmNGUz
MzBjOTI2MGEyNjJmNDFmNTgyOTlkM2U5M2IzODhhNy4uODFkMmNhZjc2OGZhZDdiMTBmZGQwYjli
MWIwZTFlZmE4YzkxZTI1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMv
b2JqY19pbnN0YW5jZS5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2lu
c3RhbmNlLm1tCkBAIC0yMDYsNyArMjA2LDcgQEAgSlNDOjpKU1ZhbHVlIE9iamNJbnN0YW5jZTo6
Z2V0TWV0aG9kKEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIEpT
Qzo6SlNWYWx1ZSBPYmpjSW5zdGFuY2U6Omludm9rZU1ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIFJ1
bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCiB7CiAgICAgaWYgKCFhc09iamVjdChydW50aW1l
TWV0aG9kKS0+aW5oZXJpdHMoT2JqQ1J1bnRpbWVNZXRob2Q6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiQXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0
LiIpKTsKKyAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
QXR0ZW1wdCB0byBpbnZva2Ugbm9uLXBsdWctaW4gbWV0aG9kIG9uIHBsdWctaW4gb2JqZWN0LiIp
KTsKIAogICAgIE9iamNNZXRob2QgKm1ldGhvZCA9IHN0YXRpY19jYXN0PE9iamNNZXRob2QqPihy
dW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAgICAgQVNTRVJUKG1ldGhvZCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9icmlkZ2Uvb2JqYy9vYmpjX3J1bnRpbWUubW0KaW5kZXggNTkwZjIyNTNhOTE0MmIyY2U3
ZTNkYzFmODA4NjkzNjFiZjdhMGE4Ni4uYjUzODQyZDI0MTE3ZGY4NGUyYzA5NzY4ZTM3MjcyYmUw
OTU2ZDM5MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19ydW50
aW1lLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpjL29iamNfcnVudGltZS5tbQpA
QCAtMTU3LDcgKzE1Nyw3IEBAIE9iamNBcnJheTo6T2JqY0FycmF5KE9iamVjdFN0cnVjdFB0ciBh
LCBSZWZQdHI8Um9vdE9iamVjdD4mJiByb290T2JqZWN0KQogYm9vbCBPYmpjQXJyYXk6OnNldFZh
bHVlQXQoRXhlY1N0YXRlKiBleGVjLCB1bnNpZ25lZCBpbnQgaW5kZXgsIEpTVmFsdWUgYVZhbHVl
KSBjb25zdAogewogICAgIGlmICghW19hcnJheS5nZXQoKSByZXNwb25kc1RvU2VsZWN0b3I6QHNl
bGVjdG9yKGluc2VydE9iamVjdDphdEluZGV4OildKSB7Ci0gICAgICAgIGV4ZWMtPnZtKCkudGhy
b3dFeGNlcHRpb24oZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJBcnJheSBpcyBub3QgbXV0
YWJsZS4iKSk7CisgICAgICAgIHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiQXJy
YXkgaXMgbm90IG11dGFibGUuIikpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNl
Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvUHJveHlJbnN0YW5jZS5tbQpp
bmRleCA2NzE0ZThjZjRhYjI3NTM2MGRkNmEwOTkxNDZjNTRkMzA3NWFhYmIzLi41YWQ4YWM3YmNl
NjI1MDE4NTQzYTk0NDJlZTE5Zjc1OWNhYWU4MmMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9QbHVnaW5zL0hvc3RlZC9Qcm94eUluc3RhbmNlLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvSG9zdGVkL1Byb3h5SW5zdGFuY2UubW0KQEAgLTIyMCw3ICsyMjAsNyBAQCBK
U1ZhbHVlIFByb3h5SW5zdGFuY2U6OmdldE1ldGhvZChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgUHJv
cGVydHlOYW1lIHByb3BlcnR5TmFtZQogSlNWYWx1ZSBQcm94eUluc3RhbmNlOjppbnZva2VNZXRo
b2QoRXhlY1N0YXRlKiBleGVjLCBKU0M6OlJ1bnRpbWVNZXRob2QqIHJ1bnRpbWVNZXRob2QpCiB7
CiAgICAgaWYgKCFhc09iamVjdChydW50aW1lTWV0aG9kKS0+aW5oZXJpdHMoUHJveHlSdW50aW1l
TWV0aG9kOjppbmZvKCkpKQotICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVn
LWluIG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CisgICAgICAgIHJldHVybiB0aHJvd1R5
cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIkF0dGVtcHQgdG8gaW52b2tlIG5vbi1wbHVnLWlu
IG1ldGhvZCBvbiBwbHVnLWluIG9iamVjdC4iKSk7CiAKICAgICBQcm94eU1ldGhvZCogbWV0aG9k
ID0gc3RhdGljX2Nhc3Q8UHJveHlNZXRob2QqPihydW50aW1lTWV0aG9kLT5tZXRob2QoKSk7CiAg
ICAgQVNTRVJUKG1ldGhvZCk7Cg==
</data>
<flag name="review"
          id="306718"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>