<?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>222639</bug_id>
          
          <creation_ts>2021-03-02 19:41:24 -0800</creation_ts>
          <short_desc>Web Inspector: `RecordCanvasActionVariant` causes a huge symbol to be created in WebCore</short_desc>
          <delta_ts>2021-03-03 17:34:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>japhet</cc>
    
    <cc>joepeck</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>thorton</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1735169</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-02 19:41:24 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735170</commentid>
    <comment_count>1</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-02 19:41:39 -0800</bug_when>
    <thetext>&lt;rdar://problem/73728057&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735174</commentid>
    <comment_count>2</comment_count>
      <attachid>422036</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-02 20:07:32 -0800</bug_when>
    <thetext>Created attachment 422036
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735175</commentid>
    <comment_count>3</comment_count>
      <attachid>422037</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-02 20:11:21 -0800</bug_when>
    <thetext>Created attachment 422037
Patch

rebase</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735176</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2021-03-02 20:12:19 -0800</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735187</commentid>
    <comment_count>5</comment_count>
      <attachid>422039</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-02 21:12:40 -0800</bug_when>
    <thetext>Created attachment 422039
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735311</commentid>
    <comment_count>6</comment_count>
      <attachid>422039</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2021-03-03 09:17:16 -0800</bug_when>
    <thetext>Comment on attachment 422039
Patch

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

r=me, nice work!

&gt; Source/WebCore/ChangeLog:25
&gt; +        way (and the tests confirm it).

Do tests need to sort the result before dumping it to ensure they aren&apos;t flakey?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735597</commentid>
    <comment_count>7</comment_count>
      <attachid>422039</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-03 16:25:44 -0800</bug_when>
    <thetext>Comment on attachment 422039
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:25
&gt;&gt; +        way (and the tests confirm it).
&gt; 
&gt; Do tests need to sort the result before dumping it to ensure they aren&apos;t flakey?

Actually no, because we don&apos;t dump the literal JSON payload in the test, we dump the recording data after deduplicating/swizzling :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735605</commentid>
    <comment_count>8</comment_count>
      <attachid>422161</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2021-03-03 16:42:37 -0800</bug_when>
    <thetext>Created attachment 422161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1735622</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-03-03 17:34:26 -0800</bug_when>
    <thetext>Committed r273865: &lt;https://commits.webkit.org/r273865&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 422161.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422036</attachid>
            <date>2021-03-02 20:07:32 -0800</date>
            <delta_ts>2021-03-02 20:11:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222639-20210302210731.patch</filename>
            <type>text/plain</type>
            <size>147876</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDBlMjg4NzY4MTY5ZjkyN2E1NjdjNjNkNzhhNGFi
OWM3OWM5ZTU5ZDguLmFmN2RiMzA5NDkzODBiZGM4MWE1ODYyNTdlMGU5MzdhODJmYzYzMjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBg
UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8gYmUgY3Jl
YXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNzI4MDU3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3By
b3RvY29sL1JlY29yZGluZy5qc29uOgorICAgICAgICBEcml2ZS1ieTogQWRkIGluZm8gYWJvdXQg
YHNuYXBzaG90YCB0byB0aGUgYCJkZXNjcmlwdGlvbiJgIG9mIGAiYWN0aW9ucyJgIGluIGAiRnJh
bWUiYC4KKwogMjAyMS0wMy0wMiAgQkogQnVyZyAgPGJidXJnQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIFJFR1JFU1NJT04ocjI3Mjc1Mik6IGZpeCBzb21lIGludGVybmFsIGJ1aWxkcyB0
aGF0IHVzZSBXVEZTdHJpbmc6OldURlN0cmluZyhOU1N0cmluZyAqKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhk
NmVmNWMyNTkxY2IzMGMxMTMwYTI2ZDdiMDlmYTgxOWE3MDk1NjIuLmJmNDljMWY4MzlhZTZjYzg4
OTlmZWI3ZjhiNWEzY2RlNjE1NzRjZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMTAgQEAKKzIw
MjEtMDMtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50YCBjYXVzZXMgYSBodWdlIHN5
bWJvbCB0byBiZSBjcmVhdGVkIGluIFdlYkNvcmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYzOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzM3
MjgwNTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
VGhlIG9ubHkgcmVhc29uIHRoYXQgYFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnRgIGV4aXN0cyBp
cyBzbyB0aGF0IHRoZSBnZW5lcmF0ZWQgSURMIGNvZGUKKyAgICAgICAgY2FuIHBhc3MgYWxsIGFy
Z3VtZW50cyBhdCBvbmNlIHRvIHRoZSBmdW5jdGlvbiBkZWZpbmVkIGJ5IGBDYWxsVHJhY2luZ0Nh
bGxiYWNrYC4gSW5zdGVhZCwKKyAgICAgICAgY2hhbmdlIGBDYWxsVHJhY2luZ0NhbGxiYWNrYCAo
d2hpY2ggZXhwZWN0cyBhIGBzdGF0aWNgIGZ1bmN0aW9uIG9uIGBDYWxsVHJhY2VyYCkgdG8gYmUK
KyAgICAgICAgYENhbGxUcmFjZXJgICh3aGljaCBleHBlY3RzIGEgYGNsYXNzYCkgc28gdGhhdCBt
b3JlIHRoYW4gb25lIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIHRoZQorICAgICAgICBnZW5lcmF0
ZWQgSURMIGNvZGUgKGFuZCBzbyB0aGF0IG5vdCBldmVyeSB1c2FnZSBoYXMgdG8gYmUgcGFydCBv
ZiBgQ2FsbFRyYWNlcikuIFRoZXNlIG5ldworICAgICAgICBmdW5jdGlvbnMgYXJlOgorICAgICAg
ICAgLSBgcHJvY2Vzc0FyZ3VtZW50YCwgd2hpY2ggaXMgdXNlZCB0byBjb252ZXJ0IHRoZSBhcmd1
bWVudCB0byBhIG1vcmUgZ2VuZXJpYyB0eXBlCisgICAgICAgICAtIGByZWNvcmRBY3Rpb25gLCB3
aGljaCBpcyBiYXNpY2FsbHkgd2hhdCBgQ2FsbFRyYWNpbmdDYWxsYmFja2AgdXNlZCB0byBiZQor
ICAgICAgICBJbiB0aGUgY2FzZSBvZiBgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcmAgKHdoaWNo
IGlzIHdoYXQgYHJlY29yZENhbnZhc0FjdGlvbmAgdXNlZCB0byBiZSksCisgICAgICAgIGBwcm9j
ZXNzQXJndW1lbnRgIGNvbnZlcnRzIHRvIGEgYHN0cnVjdGAgb2YgYEpTT046OlZhbHVlYCBhbmQg
YFJlY29yZGluZ1N3aXp6bGVUeXBlYCwgd2hpY2gKKyAgICAgICAgdXNlZCB0byBoYXBwZW4gd2F5
IGxhdGVyIGluIGBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uYCAod2hpY2ggaXMgd2h5IHRo
ZXJlIHVzZWQgdG8gYmUKKyAgICAgICAgYFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnRgIGFzIHRo
ZXJlIHdhcyBubyBvdGhlciBnb29kIHdheSBvZiBoYW5kbGluZyBhbGwgdGhlIHZhcmlvdXMKKyAg
ICAgICAgYXJndW1lbnRzIG9mIGFsbCB0aGUgdmFyaW91cyBmdW5jdGlvbnMpLiBUaGUgb25seSBl
ZmZlY3QgdGhhdCB0aGlzIGNoYW5nZSBoYXMgaXMgdGhhdCBub3cKKyAgICAgICAgdGhlIGRlZHVw
bGljYXRlZCBgZGF0YWAgaW4gdGhlIGBSZWNvcmRpbmdgIHBheWxvYWQgbWlnaHQgaGF2ZSBhIGRp
ZmZlcmVudCBvcmRlciwgYXMKKyAgICAgICAgYXJndW1lbnRzIGFyZSBkZWR1cGxpY2F0ZWQgYmVm
b3JlIGFjdGlvbiBuYW1lcywgYnV0IHRoaXMgc2hvdWxkbid0IGhhdmUgYW55IG5vdGljYWJsZSBl
ZmZlY3QKKyAgICAgICAgYXMgdGhlIFdlYiBJbnNwZWN0b3IgZnJvbnRlbmQgaGFuZGxlcyB0aGUg
InVucGFja2luZyIgb2YgdGhlIGRlZHVwbGljYXRlZCBgZGF0YWAgaW4gdGhlIHNhbWUKKyAgICAg
ICAgd2F5IChhbmQgdGhlIHRlc3RzIGNvbmZpcm0gaXQpLgorCisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZUdl
dHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlU2V0dGVyQm9k
eURlZmluaXRpb24pOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2Fs
bCk6CisgICAgICAgIChHZW5lcmF0ZUNhbGxUcmFjZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvSURMQXR0cmlidXRlcy5qc29uOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0Q2FsbFRyYWNlci5pZGw6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuY3BwOgorICAgICAgICBSZXBsYWNlIGBDYWxsVHJhY2luZ0NhbGxi
YWNrYCB3aXRoIGBDYWxsVHJhY2VyYAorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXIuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjplbmFibGVk
Q2FudmFzQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OnByb2Nlc3NBcmd1bWVudCk6CisgICAgICAgICogYmluZGluZ3MvanMvQ2FsbFRyYWNl
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0NhbGxUcmFjZXIuY3BwOiBSZW1v
dmVkLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaDoKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVjb3JkQ2FudmFzQWN0
aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6cmVjb3JkQ2FudmFzQWN0aW9uSW1wbCk6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbkltcGwpOiBEZWxldGVkLgorICAg
ICAgICBSYXRoZXIgdGhhbiBwaXBpbmcgdGhyb3VnaCBgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
YCAod2hpY2ggd291bGQgcmVxdWlyZSBhZGRpbmcgYCNpbmNsdWRlYAorICAgICAgICBmb3IgYWxs
IHRoZSBhcmd1bWVudCB0eXBlcyBpbiB0aGUgYC5oYCksIGp1c3QgcHVsbCBvdXQgdGhlIGBJbnNw
ZWN0b3JDYW52YXNBZ2VudGAgYW5kIHVzZSBpdAorICAgICAgICBsb2NhbGx5IGhlcmUuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmg6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6
OmNhbnZhc0NoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpyZXNl
dFJlY29yZGluZ0RhdGEpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRB
Y3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjp2YWx1ZUluZGV4Rm9y
RGF0YSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzOjpidWlsZEFj
dGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpkaWRGaW5pc2hSZWNvcmRp
bmdDYW52YXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6
cmVjb3JkQWN0aW9uKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNB
Z2VudDo6cmVjb3JkQ2FudmFzQWN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgQ3JlYXRlIGluZGl2
aWR1YWwgYHByb2Nlc3NBcmd1bWVudGAgbWVtYmVyIGZ1bmN0aW9uIGZvciBlYWNoIHR5cGUgdXNl
ZCBieSB0aGUgdmFyaW91cyBjYW52YXMKKyAgICAgICAgY29udGV4dHMgaW5zdGVhZCBvZiBoYXZp
bmcgb25lIGdpYW50IGBXVEY6OnN3aXRjaE9uYCBmb3IgYFJlY29yZENhbnZhc0FjdGlvblZhcmlh
bnRgLgorCisgICAgICAgICogaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAqIGh0bWwv
Y2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6CisgICAgICAgICog
aHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbDoKKyAgICAgICAgUmVwbGFjZSBgQ2FsbFRy
YWNpbmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb25gIHdpdGggYENhbGxUcmFjZXI9SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcmAuCisKKyAgICAgICAgKiBodG1sL0NhbnZhc0Jhc2UuaDoKKyAg
ICAgICAgKiBodG1sL0NhbnZhc0Jhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzQmFz
ZTo6aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoV2ViQ29yZTo6Q2FudmFzQmFzZTo6Y2FsbFRyYWNpbmdBY3RpdmUgY29uc3QpOiBEZWxl
dGVkLgorICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTENhbnZhc0VsZW1lbnQ6OnBhaW50KToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9D
YW52YXNSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJp
bmdDb250ZXh0OjpoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyIGNvbnN0KTogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpzZXRIYXNBY3Rp
dmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpD
YW52YXNSZW5kZXJpbmdDb250ZXh0OjpjYWxsVHJhY2luZ0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQu
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNSZW5kZXJpbmdDb250ZXh0OjpzZXRDYWxsVHJhY2lu
Z0FjdGl2ZSk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpkaWRDb21wb3NpdGUpOgorICAgICAgICBSZXBsYWNlIGBjYWxsVHJhY2luZ0FjdGl2ZWAg
d2l0aCBgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcmAuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9SZWNvcmRpbmdTd2l6emxlVHlwZXMuaC4KKyAgICAgICAgRHJpdmUtYnk6
IFJlbmFtZSBgUmVjb3JkaW5nU3dpenpsZVR5cGVzYCB0byBgUmVjb3JkaW5nU3dpenpsZVR5cGVg
LgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qOgorCisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgICogaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmNwcDoKKyAgICAgICAgKiBsb2FkZXIvSW1hZ2VMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRl
ci9UZXh0VHJhY2tMb2FkZXIuY3BwOgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAg
IERyaXZlLWJ5OiB1bmlmaWVkIHNvdXJjZXMgaW5jbHVkZSBmaXhlcworCiAyMDIxLTAzLTAyICBB
bnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIENyYXNoIHVuZGVy
IEtleWZyYW1lRWZmZWN0OjpzZXRUYXJnZXQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXgg
YzFiOWI4MTQ4M2E5ODU4YTBiNzRhNjhmNDgyMTFjNmJlMzZlYWQ2MC4uZGIyZDAyOWEwMThmZDRh
YmUyNDg1NWExMTZmY2E0Mjk0ZDI1MjRlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMjEtMDMtMDIgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50YCBj
YXVzZXMgYSBodWdlIHN5bWJvbCB0byBiZSBjcmVhdGVkIGluIFdlYkNvcmUKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYzOQorICAgICAgICA8cmRh
cjovL3Byb2JsZW0vNzM3MjgwNTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmdBY3Rpb24uanM6
CisgICAgICAgIChXSS5SZWNvcmRpbmdBY3Rpb24pOgorICAgICAgICBEb24ndCB1c2UgYHx8YCBm
b3IgdGhlIGZhbGxiYWNrIG9mIGBfcGF5bG9hZFNuYXBzaG90YCBhcyBpdCBjYW4gYmUgYDBgLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nLmpzOgorICAgICAgICBE
cml2ZS1ieTogUmVuYW1lIGBSZWNvcmRpbmdTd2l6emxlVHlwZXNgIHRvIGBSZWNvcmRpbmdTd2l6
emxlVHlwZWAuCisKIDIwMjEtMDItMjUgIEJKIEJ1cmcgIDxiYnVyZ0BhcHBsZS5jb20+CiAKICAg
ICAgICAgW0NvY29hXSBXZWIgSW5zcGVjdG9yOiBhZGQgc3VwcG9ydCBmb3IgcmVjZWl2aW5nIFdl
YiBFeHRlbnNpb24gZXZlbnRzIHZpYSBfV0tJbnNwZWN0b3JFeHRlbnNpb25EZWxlZ2F0ZQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SZWNvcmRp
bmcuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUmVjb3Jk
aW5nLmpzb24KaW5kZXggMDQ1M2RlZWRjMTQ1Y2Y4ZDJmNmFhZWFhYzkxYmMxNzExZDExYWI3My4u
YWM0NGUzMjkxNWJmNDAwNjhhMWJlMTg3Mzk4NmM2YWQ2NTMzZTlhNSAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SZWNvcmRpbmcuanNvbgorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1JlY29yZGluZy5qc29u
CkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICAgICAidHlwZSI6ICJvYmplY3QiLAogICAgICAg
ICAgICAgImRlc2NyaXB0aW9uIjogIkNvbnRhaW5lciBvYmplY3QgZm9yIGEgc2luZ2xlIGZyYW1l
IG9mIHRoZSByZWNvcmRpbmcuIiwKICAgICAgICAgICAgICJwcm9wZXJ0aWVzIjogWwotICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiYWN0aW9ucyIsICJ0eXBlIjogImFycmF5IiwgIml0ZW1zIjog
eyAidHlwZSI6ICJhbnkiIH0sICJkZXNjcmlwdGlvbiI6ICJJbmZvcm1hdGlvbiBhYm91dCBhbiBh
Y3Rpb24gbWFkZSB0byB0aGUgcmVjb3JkZWQgb2JqZWN0LiBGb2xsb3dzIHRoZSBzdHJ1Y3R1cmUg
W25hbWUsIHBhcmFtZXRlcnMsIHN3aXp6bGVUeXBlcywgdHJhY2VdLCB3aGVyZSBuYW1lIGlzIGEg
c3RyaW5nLCBwYXJhbWV0ZXJzIGlzIGFuIGFycmF5LCBzd2l6emxlVHlwZXMgaXMgYW4gYXJyYXks
IGFuZCB0cmFjZSBpcyBhbiBhcnJheS4ifSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImFj
dGlvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAiYW55IiB9LCAiZGVz
Y3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYW4gYWN0aW9uIG1hZGUgdG8gdGhlIHJlY29y
ZGVkIG9iamVjdC4gRm9sbG93cyB0aGUgc3RydWN0dXJlIFtuYW1lLCBwYXJhbWV0ZXJzLCBzd2l6
emxlVHlwZXMsIHRyYWNlLCBzbmFwc2hvdF0sIHdoZXJlIG5hbWUgaXMgYSBzdHJpbmcsIHBhcmFt
ZXRlcnMgaXMgYW4gYXJyYXksIHN3aXp6bGVUeXBlcyBpcyBhbiBhcnJheSwgdHJhY2UgaXMgYW4g
YXJyYXksIGFuZCBzbmFwc2hvdCBpcyBhIGRhdGEgVVJMIGltYWdlIG9mIHRoZSBjdXJyZW50IGNv
bnRlbnRzIGFmdGVyIHRoaXMgYWN0aW9uLiJ9LAogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
ZHVyYXRpb24iLCAidHlwZSI6ICJudW1iZXIiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiVG90YWwgZXhlY3V0aW9uIHRpbWUgb2YgYWxsIGFjdGlvbnMgcmVjb3JkZWQgaW4gdGhp
cyBmcmFtZSBpbiBtaWxsaXNlY29uZHMuICIgfSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjog
ImluY29tcGxldGUiLCAidHlwZSI6ICJib29sZWFuIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIkZsYWcgaW5kaWNhdGluZyBpZiB0aGUgcmVjb3JkaW5nIHdhcyBzdG9wcGVkIGJl
Zm9yZSB0aGlzIGZyYW1lIGVuZGVkLiIgfQogICAgICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRl
eCAxMmJhZDg2N2FhMTFmNzkwZDIxMTg2ZTFjY2EzY2M0YmE1Njk4NTNlLi5hMzg0MWQyMGRhZGQ0
NDM5NDg1OWIyNDUwOGQ2Nzc4YTZiMjMxNmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9T
b3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDkxLDcgKzQ5
MSw2IEBAIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCiBhbmltYXRpb24vV2ViQW5pbWF0aW9u
VXRpbGl0aWVzLmNwcAogYmluZGluZ3MvanMvQ2FjaGVkTW9kdWxlU2NyaXB0TG9hZGVyLmNwcAog
YmluZGluZ3MvanMvQ2FjaGVkU2NyaXB0RmV0Y2hlci5jcHAKLWJpbmRpbmdzL2pzL0NhbGxUcmFj
ZXIuY3BwCiBiaW5kaW5ncy9qcy9Db21tb25WTS5jcHAKIGJpbmRpbmdzL2pzL0RPTUdDT3V0cHV0
Q29uc3RyYWludC5jcHAKIGJpbmRpbmdzL2pzL0RPTVdyYXBwZXJXb3JsZC5jcHAKQEAgLTE0Mzgs
NiArMTQzNyw3IEBAIGluc3BlY3Rvci9JbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3Qu
Y3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRET01PYmplY3QuY3BwCiBpbnNwZWN0b3IvSW5z
cGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuY3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcAoraW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKIGluc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291
cmNlLmNwcAogaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQVBJRGlzcGF0Y2hlci5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
aiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCAzOWEyZWJmNDFhNmRlNTA5MDkxZTAxNTEzYjExMDA4MTFjODNlNjc2Li5iOTY4YTI5MmNlMThh
MGFjNzE0Mjg3Y2Q4MTcyNWM3MzkzODRkNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yNzE3LDcgKzI3MTcsNyBAQAogCQk5
MTc1Q0U1RTIxRTI4MUVEMDBERjJDMjcgLyogSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2Jq
ZWN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MTc1
Q0U1QTIxRTI4MUVEMDBERjJDMjcgLyogSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0
LmggKi87IH07CiAJCTkxNzVDRTVFMjFFMjgxRUQwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTE3NUNFNUEyMUUyODFFRDAwREYyQzI4IC8qIEpTSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmggKi87IH07CiAJCTkxQjhGMEI1MjE5NTNENjUwMDBDMkIwMCAv
KiBDZXJ0aWZpY2F0ZVN1bW1hcnkuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkxQjhGMEIzMjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1h
cnkuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQk5
MUI5NTIyNDFGNThBNThGMDA5MzFEQzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGVzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MUI5NTIyMjFGNThBNTgw
MDA5MzFEQzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGVzLmggKi87IH07CisJCTkxQjk1MjI0MUY1
OEE1OEYwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6emxlVHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8q
IFJlY29yZGluZ1N3aXp6bGVUeXBlLmggKi87IH07CiAJCTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYx
QyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTFDOUYyRjgxQUUzQkUyNDAwOTVCNjFDIC8qIEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJOTFFMEREQzEyMzBCNDFFNTAwMTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dlckFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MUUw
RERCRjIzMEI0MUU1MDAxOUUxRTMgLyogUGFnZURPTURlYnVnZ2VyQWdlbnQuaCAqLzsgfTsKIAkJ
OTFFMEREQzQyMzBCNDFGMTAwMTlFMUUzIC8qIFdvcmtlckRPTURlYnVnZ2VyQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxRTBEREMyMjMwQjQx
RjAwMDE5RTFFMyAvKiBXb3JrZXJET01EZWJ1Z2dlckFnZW50LmggKi87IH07CkBAIC0yOTQwLDgg
KzI5NDAsNiBAQAogCQk5NTAxODNDRDI1RDYzM0Q5MDBENDM0MEYgLyogQXBwbGVQYXlEZXRhaWxz
VXBkYXRlQmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTUwMTgzQ0IyNUQ2MzNEODAwRDQzNDBGIC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2Uu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NTFE
RUREMjI1RTA4NDVBMDAyMEUxRUUgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MURFREQwMjVFMDg0
NUEwMDIwRTFFRSAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1MURFREQ2MjVFMDg0OUUwMDIw
RTFFRSAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTFERURENDI1RTA4NDlEMDAyMEUxRUUgLyog
SlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oICovOyB9OwotCQk5NTIwNzYwNTFGMjY3NUZF
MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTUyMDc2MDExRjI2NzVGOTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCAq
LzsgfTsKLQkJOTUyMDc2MDYxRjI2NzVGRTAwN0QyQUFCIC8qIENhbGxUcmFjZXJUeXBlcy5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyMDc2MDIxRjI2
NzVGOTAwN0QyQUFCIC8qIENhbGxUcmFjZXJUeXBlcy5oICovOyB9OwogCQk5NTI3RDdBQjI1RDVG
REUyMDBBNkUxNzYgLyogQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyN0Q3QTgyNUQ1RkRFMTAwQTZFMTc2
IC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NTI3RDdBRjI1RDVGRTZDMDBBNkUxNzYgLyogSlNB
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5NTI3RDdBRDI1RDVGRTZCMDBBNkUxNzYgLyogSlNBcHBsZVBheURl
dGFpbHNVcGRhdGVEYXRhLmggKi87IH07CiAJCTk1M0JDRUIyMjVENjI4M0QwMEE0QTJBMSAvKiBK
U0FwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1M0JDRUFGMjVENjI4M0MwMEE0QTJBMSAvKiBKU0FwcGxlUGF5
RGV0YWlsc1VwZGF0ZUJhc2UuaCAqLzsgfTsKQEAgLTI5NTAsNiArMjk0OCw3IEBACiAJCTk1OTZC
OTMzMjVERUVFQTAwMEVEMkNGQSAvKiBBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTk2QjkzMDI1
REVFRTlGMDBFRDJDRkEgLyogQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk1OTZCOTM4MjVE
RUVGMDMwMEVEMkNGQSAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1OTZCOTM2MjVERUVG
MDIwMEVEMkNGQSAvKiBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaCAqLzsgfTsK
IAkJOTVBMUUyRTkyNUNDNzVBOTAwMjY4QzhFIC8qIE1lZGlhQ29udHJvbHNDb250ZXh0TWVudUl0
ZW0uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QTFF
MkU3MjVDQzc1QTgwMDI2OEM4RSAvKiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJOTVBQTU3MTAy
NUVFRUQzMjAwNEU5MjgzIC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1QUE1NzBFMjVFRUVEMzEwMDRF
OTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggKi87IH07CiAJCTk1REY5RDI1MjUy
QkVEQjIwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NURGOUQyMzI1MkJFRDk5MDAwRDdGNDYg
LyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTdBMTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lD
aGVja2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NzA1OTk3NjEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MEI3MjhBMTQ0RkZBQzYwMEYw
MEEzNyAvKiBFdmVudEludGVyZmFjZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk3MEI3Mjg5MTQ0RkZBQzYwMEYwMEEzNyAvKiBFdmVudEludGVyZmFj
ZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAt
MTEzNzEsNyArMTEzNzAsNyBAQAogCQk5MTg2RjNCNzIzMjlGQjRGMDBBRkY4NTcgLyogV2ViR1BV
UGlwZWxpbmUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViR1BVUGlwZWxp
bmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTE4NkYzQkEyMzI5RkU2ODAwQUZG
ODU3IC8qIEdQVVBpcGVsaW5lLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEdQVVBpcGVsaW5lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFCOEYw
QjMyMTk1M0Q2NTAwMEMyQjAwIC8qIENlcnRpZmljYXRlU3VtbWFyeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDZXJ0aWZpY2F0ZVN1bW1hcnkuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6
bGVUeXBlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRpbmdTd2l6emxlVHlwZXMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29y
ZGluZ1N3aXp6bGVUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlY29yZGluZ1N3aXp6bGVUeXBlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAv
KiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWFRleHRTdGF0ZUNo
YW5nZUludGVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MUUwRERCRDIzMEI0
MUU0MDAxOUUxRTMgLyogUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MUUwRERCRjIzMEI0MUU1MDAxOUUxRTMgLyogUGFnZURPTURl
YnVnZ2VyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFnZURPTURl
YnVnZ2VyQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExNzkxLDkgKzEx
NzkwLDYgQEAKIAkJOTUxREVERDAyNUUwODQ1QTAwMjBFMUVFIC8qIEFwcGxlUGF5U2hpcHBpbmdN
ZXRob2REYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5U2hp
cHBpbmdNZXRob2REYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MURFREQz
MjVFMDg0OUMwMDIwRTFFRSAvKiBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQXBwbGVQYXlTaGlwcGluZ01ldGhv
ZERhdGEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTFERURENDI1RTA4NDlE
MDAyMEUxRUUgLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk1MjA3NjAwMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxs
VHJhY2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENhbGxUcmFjZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gQ2FsbFRyYWNlclR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTk1MjdEN0E4MjVENUZERTEwMEE2RTE3NiAvKiBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFwcGxlUGF5RGV0YWlsc1VwZGF0
ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUyN0Q3QUEyNUQ1RkRFMTAw
QTZFMTc2IC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaWRsICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsg
cGF0aCA9IEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NTI3RDdBRDI1RDVGRTZCMDBBNkUxNzYgLyogSlNBcHBsZVBheURldGFpbHNV
cGRhdGVEYXRhLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXBwbGVQYXlE
ZXRhaWxzVXBkYXRlRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE4MDks
NiArMTE4MDUsOCBAQAogCQk5NTk2QjkzNTI1REVFRjAwMDBFRDJDRkEgLyogSlNBcHBsZVBheVBh
eW1lbnRNZXRob2RNb2RlVXBkYXRlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEpTQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTk1OTZCOTM2MjVERUVGMDIwMEVEMkNGQSAvKiBKU0FwcGxlUGF5
UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk1QTFFMkU3MjVDQzc1QTgwMDI2OEM4RSAvKiBNZWRpYUNvbnRyb2xzQ29u
dGV4dE1lbnVJdGVtLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhQ29u
dHJvbHNDb250ZXh0TWVudUl0ZW0uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVB
QTU3MEQyNUVFRUQzMDAwNEU5MjgzIC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1QUE1NzBFMjVFRUVEMzEw
MDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTVERjlEMjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFy
YWN0ZXJpc3RpY3MuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyog
UG9saWN5Q2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQ
b2xpY3lDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzYx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gUG9saWN5Q2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTc0NzksOCArMTc0NzcsOCBAQAogCQkJCTMxMzU5MTAzMUU3RERDNjAwMEYzMDYzMCAvKiBS
VENJY2VUcmFuc3BvcnRTdGF0ZS5oICovLAogCQkJCTA3MjIxQkFBMTdDRjBBRDQwMDg0OEU1MSAv
KiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCAqLywKIAkJCQk0MUE0OEE5RDFFODMx
MkVCMDBEMkFDMkQgLyogUlRDUGVlckNvbm5lY3Rpb25TdGF0ZS5oICovLAotCQkJCTQxM0NDMTFD
MjVFN0Q5OEQwMEQ1OUM0QiAvKiBSVENQcmlvcml0eVR5cGUuaCAqLywKIAkJCQk0MTJCQTVGRTIx
OEM2NTE4MDAzNjU0NzQgLyogUlRDUE11eFBvbGljeS5oICovLAorCQkJCTQxM0NDMTFDMjVFN0Q5
OEQwMEQ1OUM0QiAvKiBSVENQcmlvcml0eVR5cGUuaCAqLywKIAkJCQk0MTJERTRCNjIxOTI4NUJG
MDA3NUYzQTcgLyogUlRDUnRwQ2FwYWJpbGl0aWVzLmggKi8sCiAJCQkJNDFFMEE3REMyM0JCNjNE
QjAwNTYxMDYwIC8qIFJUQ1J0cENvZGVjQ2FwYWJpbGl0eS5oICovLAogCQkJCTMxRUI1NEREMUU3
REM3NDQwMEMxNjIzQiAvKiBSVENSdHBUcmFuc2NlaXZlckRpcmVjdGlvbi5oICovLApAQCAtMTg4
MTcsNiArMTg4MTUsOCBAQAogCQkJCTkxMDlFOUM1MjIyQ0FCQzgwMEJCNjI2NCAvKiBJbnNwZWN0
b3JBdWRpdFJlc291cmNlc09iamVjdC5oICovLAogCQkJCTZBMjJFODcyMUYxMDQyQzQwMEY1NDZD
MyAvKiBJbnNwZWN0b3JDYW52YXMuY3BwICovLAogCQkJCTZBMjJFODZGMUYxMDQxODYwMEY1NDZD
MyAvKiBJbnNwZWN0b3JDYW52YXMuaCAqLywKKwkJCQk5NUFBNTcwRDI1RUVFRDMwMDA0RTkyODMg
LyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAgKi8sCisJCQkJOTVBQTU3MEUyNUVFRUQz
MTAwNEU5MjgzIC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCAqLywKIAkJCQkxQzgxQjk1
ODBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ2xpZW50LmggKi8sCiAJCQkJMUM4MUI5NTcw
RTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuY3BwICovLAogCQkJCTFDODFC
OTU2MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmggKi8sCkBAIC0xODg1
NCw3ICsxODg1NCw3IEBACiAJCQkJNTlDMjdGMDYxMzhEMjhDRjAwNzlCN0UyIC8qIE5ldHdvcmtS
ZXNvdXJjZXNEYXRhLmggKi8sCiAJCQkJQTVGMzZEMzgxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VE
ZWJ1Z2dlci5jcHAgKi8sCiAJCQkJQTVGMzZEMzkxOEY3NTg3MjAwNTRDMDI0IC8qIFBhZ2VEZWJ1
Z2dlci5oICovLAotCQkJCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6
emxlVHlwZXMuaCAqLywKKwkJCQk5MUI5NTIyMjFGNThBNTgwMDA5MzFEQzIgLyogUmVjb3JkaW5n
U3dpenpsZVR5cGUuaCAqLywKIAkJCQk3NTUzQ0ZFNzEwOEY0NzNGMDBFQTI4MUUgLyogVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmNwcCAqLywKIAkJCQk3NTUzQ0ZFNjEwOEY0NzNGMDBFQTI4MUUgLyog
VGltZWxpbmVSZWNvcmRGYWN0b3J5LmggKi8sCiAJCQkJQTU4NDBFMjIxODdCOEFDMjAwODQzQjEw
IC8qIFdlYkluamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCkBAIC0yNjY1OSw5ICsyNjY1OSw5IEBA
CiAJCQkJN0M1MTRFMDIyNEFGODA1ODAwNTA3MTBGIC8qIENvbG9yQ29udmVyc2lvbi5jcHAgKi8s
CiAJCQkJN0M1MTRFMDAyNEFGODA1ODAwNTA3MTBGIC8qIENvbG9yQ29udmVyc2lvbi5oICovLAog
CQkJCTMxMDNCN0RFMURCMDE1NTYwMDhCQjg5MCAvKiBDb2xvckhhc2guaCAqLywKKwkJCQlCQzRB
MjNFQjI1RUMxNjAyMDBBQUM2MzAgLyogQ29sb3JMdW1pbmFuY2UuaCAqLywKIAkJCQk3Q0FDNkFF
ODI0N0YwODIwMDBFNjFENTkgLyogQ29sb3JNYXRyaXguaCAqLywKIAkJCQlCQzEwMTM3QjI1QzM2
MjRCMDBEQzc3M0MgLyogQ29sb3JNb2RlbHMuaCAqLywKLQkJCQlCQzRBMjNFQjI1RUMxNjAyMDBB
QUM2MzAgLyogQ29sb3JMdW1pbmFuY2UuaCAqLywKIAkJCQk3Q0QxRTY5MjI0QUJGNjI0MDA4OUM0
MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmNwcCAqLywKIAkJCQk3Q0QxRTY5MTI0QUJGNjI0MDA4
OUM0MTkgLyogQ29sb3JTZXJpYWxpemF0aW9uLmggKi8sCiAJCQkJQkNBRkVEQUYyNTk2NkQwNTAw
MzBFNkFBIC8qIENvbG9yU3BhY2UuY3BwICovLApAQCAtMjcwODksOSArMjcwODksNiBAQAogCQkJ
CUUzMDU5MjY1MUUyN0EzQzYwMEQ1N0M5OCAvKiBDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCAqLywK
IAkJCQlFMzA1OTI2NjFFMjdBM0M2MDBENTdDOTggLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5oICov
LAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92
aWRlci5oICovLAotCQkJCTk1MjA3NjAwMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmNw
cCAqLywKLQkJCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5oICovLAot
CQkJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLywKIAkJ
CQkwRjYwRjMyOTFERkJCMTA0MDA0MTZENkMgLyogQ29tbW9uVk0uY3BwICovLAogCQkJCTBGNjBG
MzJBMURGQkIxMDQwMDQxNkQ2QyAvKiBDb21tb25WTS5oICovLAogCQkJCTBGOURBQTBDMUZEMUM2
NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuY3BwICovLApAQCAtMzE1MTIsOCAr
MzE1MDksNiBAQAogCQkJCUU0M0FGOEU3MUFDNUI3RUMwMENBNzE3RSAvKiBDYWNoZVZhbGlkYXRp
b24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxj
dWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzFFOEQwMTFFRDBDMkRBMDBCMUQ5
ODMgLyogQ2FsbGJhY2tSZXN1bHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTk1MjA3NjA1MUYyNjc1
RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5NTIwNzYwNjFG
MjY3NUZFMDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
RkNDNkM4RjIwRkU5MTQ0MDBBMjMyMUIgLyogQ2FudmFzQWN0aXZpdHlSZWNvcmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTMxMzE3MTU2MUZCMDc5RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk0MTVDREFGNTFFNkI4RjhCMDA0RjExRUUgLyogQ2FudmFzQ2FwdHVy
ZU1lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtMzE2MDgsNiArMzE2MDMsNyBA
QAogCQkJCTMxMDNCN0RGMURCMDE1NjcwMDhCQjg5MCAvKiBDb2xvckhhc2guaCBpbiBIZWFkZXJz
ICovLAogCQkJCUY1NUIzREI0MTI1MUYxMkQwMDNFRjI2OSAvKiBDb2xvcklucHV0VHlwZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQ0U1MTY5RTcyMUYxQjg0NzAwRUE0Rjc4IC8qIENvbG9ySU9TLmgg
aW4gSGVhZGVycyAqLywKKwkJCQlCQzRBMjNFQzI1RUMxNjAyMDBBQUM2MzAgLyogQ29sb3JMdW1p
bmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUVERTNBNTAwMEM3QTQzMDYwMDk1NkEzNyAvKiBD
b2xvck1hYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJN0NBQzZBRTkyNDdGMDgyRjAwRTYxRDU5IC8q
IENvbG9yTWF0cml4LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzEwMTM3QzI1QzM2MjRCMDBEQzc3
M0MgLyogQ29sb3JNb2RlbHMuaCBpbiBIZWFkZXJzICovLApAQCAtMzE4NzMsNyArMzE4NjksNiBA
QAogCQkJCUE4ODJEQTIzMTU5Mzg0OEQwMDAxMTVFRCAvKiBDU1NUb1N0eWxlTWFwLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3MTVBRDcyMTIwNTA1MTNGMDBENTkyREMgLyogQ1NTVHJhbnNpdGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzcxRjUzRTkwRDI3MDRGOTAwRUNFMEQ1IC8qIENTU1VuaWNv
ZGVSYW5nZVZhbHVlLmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzRBMjNFQzI1RUMxNjAyMDBBQUM2
MzAgLyogQ29sb3JMdW1pbmFuY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNkI3MDdBMjM3QkMz
NkQwMDUyQ0E0NyAvKiBDU1NVbml0cy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJREQ3Q0RGMjUwQTIz
Q0Y5ODAwMDY5OTI4IC8qIENTU1Vua25vd25SdWxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzdE
OEZGMDFCRDAzQjY0MDBGRkU1NDAgLyogQ1NTVW5zZXRWYWx1ZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMjc0Miw2ICszMjczNyw3IEBACiAJCQkJOTEwOUU5QzgyMjJDQUJDQTAwQkI2MjY0IC8qIElu
c3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk2QTIyRTg3
MDFGMTA0MTg2MDBGNTQ2QzMgLyogSW5zcGVjdG9yQ2FudmFzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUI4MUNBODFGQUE0NDYyMDAzN0QxRTYgLyogSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTk1QUE1NzEwMjVFRUVEMzIwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QzBFOTczMzA4MDAyNjZF
MDcgLyogSW5zcGVjdG9yQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxQzgxQjk1QTBFOTcz
MzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QTU5QzIzMEEyMUYyOTIwNjAwNEVDOTM5IC8qIEluc3BlY3RvckNQVVByb2ZpbGVyQWdlbnQuaCBp
biBIZWFkZXJzICovLApAQCAtMzQzNTMsNyArMzQzNDksNyBAQAogCQkJCTA3Mjg4MEQxMjAxMEYx
RjYwMDcxQjI1NSAvKiBSZWFsdGltZVZpZGVvQ2FwdHVyZVNvdXJjZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDFCRjIwNDkyMkJBN0JFODAwMDRGODEyIC8qIFJlYWx0aW1lVmlkZW9Tb3VyY2UuaCBp
biBIZWFkZXJzICovLAogCQkJCTQxNTg2NEEwMjNCRjdDQkYwMEEwQTYxRSAvKiBSZWFsdGltZVZp
ZGVvVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKLQkJCQk5MUI5NTIyNDFGNThBNThGMDA5MzFE
QzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5MUI5NTIy
NDFGNThBNThGMDA5MzFEQzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDNDM2OEU4MEMyMjZFMzIwMDVFRkI1RiAvKiBSZWN0LmggaW4gSGVhZGVycyAqLywK
IAkJCQlGRDQ1QTk1ODE3NUQ0MTRDMDBDMjFFQzggLyogUmVjdGFuZ2xlU2hhcGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTVDRUVFNDM2MUY1RjhGMjEwMDE0QTVGNSAvKiBSZWN0RWRnZXMuaCBpbiBI
ZWFkZXJzICovLApAQCAtMzQ1OTgsNiArMzQ1OTQsNyBAQAogCQkJCTA3OEUwOTQyMTdEMTZFMUMw
MDQyMEFBMSAvKiBSVENQZWVyQ29ubmVjdGlvbkhhbmRsZXJDbGllbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTQxOUU2RUM5MjU2NkQyNzgwMDJCNTAxMCAvKiBSVENQZWVyQ29ubmVjdGlvbkljZUVy
cm9yRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTA3OEUwOTI0MTdEMTREMUMwMDQyMEFBMSAv
KiBSVENQZWVyQ29ubmVjdGlvbkljZUV2ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk0MTNDQzEx
RDI1RTdEOThFMDBENTlDNEIgLyogUlRDUHJpb3JpdHlUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTE0RkUzMjI1QkVCRDE5MDA5RDlGMjAgLyogUlRDUnRjcFBhcmFtZXRlcnMuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTQxMkRFNEI4MjE5Mjg1QzAwMDc1RjNBNyAvKiBSVENSdHBDYXBhYmlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTVFMkM0MzYzMUJDRUUzMkIwMDAxRTJCQyAvKiBSVENS
dHBSZWNlaXZlci5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNTA5MCw3ICszNTA4Nyw2IEBACiAJCQkJ
NzE1MzdBMDExNDZCRDlENzAwOEJENjE1IC8qIFNWR1BhdGhEYXRhLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCMjIyN0E1OTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aEVsZW1lbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTg0NzZDOUYwMTFERjZBNTgwMDU1NUIwMiAvKiBTVkdQYXRoUGFyc2VyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk0MTNDQzExRDI1RTdEOThFMDBENTlDNEIgLyogUlRDUHJpb3Jp
dHlUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E1QjBEMDBCRjIyMDA3MUI3ODIgLyog
U1ZHUGF0aFNlZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjIyMjdBODEwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BhdGhTZWdMaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDc2QzlFNjExREY2QTBC
MDA1NTVCMDIgLyogU1ZHUGF0aFNlZ0xpc3RCdWlsZGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDliMDVjMzlkNTI0NjZmZGFiY2Q3MzBkMzgwYjJkMzM2YTM4YWNjNDguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhbGxUcmFjZXIu
aCIKLQotI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJIVE1M
Q2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQ2FsbFRyYWNlcjo6cmVjb3JkQ2FudmFzQWN0
aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBjb25zdCBTdHJpbmcm
IG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYm
IHBhcmFtZXRlcnMpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBj
YW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIG5h
bWUsIFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCi12b2lkIENhbGxUcmFjZXI6OnJlY29yZENh
bnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0
LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNB
Y3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgbmFtZSwgV1RG
TW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZmQ1NzFmOWIyZDUxNjc0MjU4OTU5MGEwZTk2NGM3MWEzYTYyOTI1Yy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9DYWxsVHJhY2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
LSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
Ci0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0g
Ki8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKLSNpbmNs
dWRlIDxpbml0aWFsaXplcl9saXN0PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7Ci1j
bGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKLQotY2xhc3MgQ2FsbFRyYWNlciB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIHZvaWQgcmVjb3JkQ2FudmFzQWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50
JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlv
blZhcmlhbnQ+JiYgPSB7IH0pOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZENhbnZhc0FjdGlvbihD
YW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9s
aXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwotfTsKLQotfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2Fs
bFRyYWNlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2VyVHlw
ZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRhZWMyM2RhOWQxMzY4N2I5YmVm
NTFhY2FmOGM5NWJlZTE2NGExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2VyVHlwZXMuaAor
KysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
Ci0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLSNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgotI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4u
aCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKLSNpbmNsdWRlICJET01N
YXRyaXgyREluaXQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENhbnZh
c0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRN
TFZpZGVvRWxlbWVudC5oIgotI2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2lmIEVOQUJMRShPRkZT
Q1JFRU5fQ0FOVkFTKQotI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgotI2VuZGlmCi0jaW5j
bHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJB
cnJheS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQot
I2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgotI2luY2x1ZGUgIldl
YkdMRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKLSNpbmNsdWRlICJX
ZWJHTFF1ZXJ5LmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKLSNpbmNsdWRlICJX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR0xTYW1wbGVyLmgiCi0j
aW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKLSNpbmNsdWRlICJXZWJHTFN5bmMuaCIKLSNpbmNsdWRl
ICJXZWJHTFRleHR1cmUuaCIKLSNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgotI2lu
Y2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdF
QkdMMikKLSNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2Vi
R0xUcmFuc2Zvcm1GZWVkYmFjay5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQot
dXNpbmcgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudCA9IFZhcmlhbnQ8Ci0gICAgLy8gZW51bQot
ICAgIENhbnZhc0RpcmVjdGlvbiwKLSAgICBDYW52YXNGaWxsUnVsZSwKLSAgICBDYW52YXNMaW5l
Q2FwLAotICAgIENhbnZhc0xpbmVKb2luLAotICAgIENhbnZhc1RleHRBbGlnbiwKLSAgICBDYW52
YXNUZXh0QmFzZWxpbmUsCi0gICAgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LAotCi0gICAgLy8gc3Ry
dWN0Ci0gICAgRE9NTWF0cml4MkRJbml0LAotCi0gICAgLy8gcG9pbnRlcgotICAgIEVsZW1lbnQq
LAotICAgIEhUTUxJbWFnZUVsZW1lbnQqLAotICAgIEltYWdlQml0bWFwKiwKLSAgICBJbWFnZURh
dGEqLAotICAgIFBhdGgyRCosCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMQnVmZmVyKiwK
LSAgICBXZWJHTEZyYW1lYnVmZmVyKiwKLSAgICBXZWJHTFByb2dyYW0qLAotICAgIFdlYkdMUXVl
cnkqLAotICAgIFdlYkdMUmVuZGVyYnVmZmVyKiwKLSAgICBXZWJHTFNhbXBsZXIqLAotICAgIFdl
YkdMU2hhZGVyKiwKLSAgICBXZWJHTFN5bmMqLAotICAgIFdlYkdMVGV4dHVyZSosCi0gICAgV2Vi
R0xVbmlmb3JtTG9jYXRpb24qLAotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QqLAotI2VuZGlm
Ci0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiwKLSNlbmRp
ZgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4s
Ci0gICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiwKLSAgICBSZWZQdHI8Q2FudmFzUGF0dGVybj4s
Ci0gICAgUmVmUHRyPEZsb2F0MzJBcnJheT4sCi0gICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50
PiwKLSAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4sCi0jaWYgRU5BQkxFKFZJREVPKQotICAg
IFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiwKLSNlbmRpZgotICAgIFJlZlB0cjxJbWFnZUJpdG1h
cD4sCi0jaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKLSAgICBSZWZQdHI8VHlwZWRPTUNTU0ltYWdl
VmFsdWU+LAotI2VuZGlmCi0gICAgUmVmUHRyPEltYWdlRGF0YT4sCi0jaWYgRU5BQkxFKE9GRlND
UkVFTl9DQU5WQVMpCi0gICAgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4sCi0jZW5kaWYKLSAgICBS
ZWZQdHI8SW50MzJBcnJheT4sCi0gICAgUmVmUHRyPFVpbnQzMkFycmF5PiwKLQotICAgIC8vIHZh
cmlhbnQKLSAgICBDYW52YXNJbWFnZVNvdXJjZSwKLSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkRCYXNlOjpTdHlsZVZhcmlhbnQsCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UsCi0gICAgT3B0aW9uYWw8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4sCi0gICAgV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UsCi0gICAgT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+LAotI2VuZGlmCi0KLSAgICAvLyBhcnJheQotICAg
IFZlY3RvcjxTdHJpbmc+LAotICAgIFZlY3RvcjxmbG9hdD4sCi0gICAgVmVjdG9yPHVpbnQzMl90
PiwKLSAgICBWZWN0b3I8aW50MzJfdD4sCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OkZsb2F0MzJMaXN0OjpWYXJpYW50VHlwZSwKLSAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRUeXBlLAotI2VuZGlmCi0jaWYg
RU5BQkxFKFdFQkdMMikKLSAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpW
YXJpYW50VHlwZSwKLSNlbmRpZgotCi0gICAgLy8gYmFzaWMKLSAgICBTdHJpbmcsCi0gICAgZG91
YmxlLAotICAgIGZsb2F0LAotICAgIE9wdGlvbmFsPGZsb2F0PiwKLSAgICB1aW50NjRfdCwKLSAg
ICBpbnQ2NF90LAotICAgIHVpbnQzMl90LAotICAgIGludDMyX3QsCi0gICAgdWludDhfdCwKLSAg
ICBib29sCi0+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGViMjA5YWRlMTA5
NmYyNGJiMzAzZGZmNjA3NWU3M2E2YmJiMDIwOTkuLmQ4NjMzZGU4NjM2YWQ5MmNlNTQ0ZjEzOGYx
MTgxZDdhZjlkMjk4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01MzU5LDEwICs1MzU5LDEwIEBAIHN1YiBHZW5lcmF0
ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uCiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKSB1bmxlc3MgJGF0
dHJpYnV0ZS0+aXNTdGF0aWMgb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9y
d2FyZFRvTWFwTGlrZX0gb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2Fy
ZFRvU2V0TGlrZX07CiAKICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7Ci0g
ICAgICAgICAgICBteSAkY2FsbFRyYWNpbmdDYWxsYmFjayA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVk
QXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9OwotICAgICAgICAgICAgaWYgKCRjYWxs
VHJhY2luZ0NhbGxiYWNrKSB7CisgICAgICAgICAgICBteSAkY2FsbFRyYWNlciA9ICRhdHRyaWJ1
dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9OworICAgICAgICAgICAgaWYgKCRjYWxsVHJhY2Vy
KSB7CiAgICAgICAgICAgICAgICAgbXkgQGNhbGxUcmFjZXJBcmd1bWVudHMgPSAoKTsKLSAgICAg
ICAgICAgICAgICBHZW5lcmF0ZUNhbGxUcmFjZXIoJG91dHB1dEFycmF5LCAkY2FsbFRyYWNpbmdD
YWxsYmFjaywgJGF0dHJpYnV0ZS0+bmFtZSwgXEBjYWxsVHJhY2VyQXJndW1lbnRzLCAiICAgICIp
OworICAgICAgICAgICAgICAgIEdlbmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRjYWxs
VHJhY2VyLCAkYXR0cmlidXRlLT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICIgICAgIik7
CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTU3NCwxMSArNTU3NCwxMSBAQCBzdWIg
R2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbgogICAgICAgICB1bnNoaWZ0KEBh
cmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJmYWxzZSIs
ICJ0aGlzT2JqZWN0IikpOwogICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2Fs
bFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2Fs
bFdpdGh9LCAkb3V0cHV0QXJyYXksICJmYWxzZSIsICJ0aGlzT2JqZWN0IikpOwogCi0gICAgICAg
IG15ICRjYWxsVHJhY2luZ0NhbGxiYWNrID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2FsbFRyYWNpbmdDYWxsYmFja30gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57Q2FsbFRyYWNpbmdDYWxsYmFja307Ci0gICAgICAgIGlmICgkY2FsbFRyYWNpbmdDYWxsYmFj
aykgeworICAgICAgICBteSAkY2FsbFRyYWNlciA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+e0NhbGxUcmFjZXJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxUcmFjZXJ9OworICAgICAgICBpZiAoJGNhbGxUcmFjZXIpIHsKICAgICAgICAgICAgIG15ICRp
bmRlbnQgPSAiICAgICI7CiAgICAgICAgICAgICBteSBAY2FsbFRyYWNlckFyZ3VtZW50cyA9ICgi
bmF0aXZlVmFsdWUiKTsKLSAgICAgICAgICAgIEdlbmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJy
YXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkYXR0cmlidXRlLT5uYW1lLCBcQGNhbGxUcmFjZXJB
cmd1bWVudHMsICRpbmRlbnQpOworICAgICAgICAgICAgR2VuZXJhdGVDYWxsVHJhY2VyKCRvdXRw
dXRBcnJheSwgJGNhbGxUcmFjZXIsICRhdHRyaWJ1dGUtPm5hbWUsIFxAY2FsbFRyYWNlckFyZ3Vt
ZW50cywgJGluZGVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcg
PSAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwpAQCAt
NjcxOCwxMCArNjcxOCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2Fs
bAogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5j
dGlvblN0cmluZywgJGluZGVudCwgJGhhc1Rocm93U2NvcGUpID0gQF87CiAKLSAgICBteSAkY2Fs
bFRyYWNpbmdDYWxsYmFjayA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxU
cmFjaW5nQ2FsbGJhY2t9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxU
cmFjaW5nQ2FsbGJhY2t9OwotICAgIGlmICgkY2FsbFRyYWNpbmdDYWxsYmFjaykgeworICAgIG15
ICRjYWxsVHJhY2VyID0gJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNl
cn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNlcn07CisgICAg
aWYgKCRjYWxsVHJhY2VyKSB7CiAgICAgICAgIG15IEBjYWxsVHJhY2VyQXJndW1lbnRzID0gbWFw
IHsgJF8tPm5hbWUgfSBAeyRvcGVyYXRpb24tPmFyZ3VtZW50c307Ci0gICAgICAgIEdlbmVyYXRl
Q2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkb3BlcmF0aW9u
LT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICRpbmRlbnQpOworICAgICAgICBHZW5lcmF0
ZUNhbGxUcmFjZXIoJG91dHB1dEFycmF5LCAkY2FsbFRyYWNlciwgJG9wZXJhdGlvbi0+bmFtZSwg
XEBjYWxsVHJhY2VyQXJndW1lbnRzLCAkaW5kZW50KTsKICAgICB9CiAKICAgICBteSAkZHJ5UnVu
ID0gMTsKQEAgLTgxMDYsMTQgKzgxMDYsMTQgQEAgc3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVzSWZO
ZWVkZWQoKQogCiBzdWIgR2VuZXJhdGVDYWxsVHJhY2VyKCkKIHsKLSAgICBteSAoJG91dHB1dEFy
cmF5LCAkY2FsbFRyYWNpbmdDYWxsYmFjaywgJG5hbWUsICRhcmd1bWVudHMsICRpbmRlbnQpID0g
QF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNhbGxUcmFjZXIsICRuYW1lLCAkYXJndW1lbnRz
LCAkaW5kZW50KSA9IEBfOwogCi0gICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxUcmFjZXIuaCIp
OworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCRjYWxsVHJhY2VyIC4gIi5oIik7CiAKLSAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdB
Y3RpdmUoKSkpXG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiICAgIENh
bGxUcmFjZXI6OiIgLiAkY2FsbFRyYWNpbmdDYWxsYmFjayAuICIoaW1wbCwgXCIiIC4gJG5hbWUg
LiAiXCJfcyIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJpZiAoVU5MSUtF
TFkoaW1wbC5oYXNBY3RpdmUiIC4gJGNhbGxUcmFjZXIgLiAiKCkpKVxuIik7CisgICAgcHVzaChA
JG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiAgICAiIC4gJGNhbGxUcmFjZXIgLiAiOjpyZWNvcmRB
Y3Rpb24oaW1wbCwgXCIiIC4gJG5hbWUgLiAiXCJfcyIpOwogICAgIGlmIChzY2FsYXIoQCRhcmd1
bWVudHMpKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiwgeyAiIC4gam9pbigiLCAi
LCBAJGFyZ3VtZW50cykgLiAiIH0iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiLCB7
ICIgLiBqb2luKCIsICIsIG1hcCB7ICRjYWxsVHJhY2VyIC4gIjo6cHJvY2Vzc0FyZ3VtZW50KGlt
cGwsICIgLiAkXyAuICIpIiB9IEAkYXJndW1lbnRzKSAuICIgfSIpOwogICAgIH0KICAgICBwdXNo
KEAkb3V0cHV0QXJyYXksICIpO1xuIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IDVkOTU2YWFiNjFkZTQwNjc5YTg4
YmRkMjcyOGE4ZjVmNGYyOGQ3NWUuLjJhNWFkYWQ0MmNkODFkY2RlOGE1NmI5YmY1M2RkYTJkMTE2
YzVhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0
cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0
cmlidXRlcy5qc29uCkBAIC00NSw3ICs0NSw3IEBACiAgICAgICAgICJDYWNoZWRBdHRyaWJ1dGUi
OiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXQogICAgICAg
ICB9LAotICAgICAgICAiQ2FsbFRyYWNpbmdDYWxsYmFjayI6IHsKKyAgICAgICAgIkNhbGxUcmFj
ZXIiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0
cmlidXRlIiwgIm9wZXJhdGlvbiJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCiAgICAg
ICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXggMzFlMTRlOGM4YTc1NmY0MDQyYTMx
MTA4Yjg1ZDZiOTM2MTdjMGM1ZC4uNTQyM2U4YjNjODk4MGRhYTUwYjgxMWE0MDhjOTA5MjE0ZTgz
MWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1
ZGUgIkpTVGVzdENhbGxUcmFjZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgot
I2luY2x1ZGUgIkNhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNp
bmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAt
MzksNiArMzgsOSBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAi
SlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUg
IlRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyLmgiCisjaW5jbHVkZSAiVGVzdEludGVyZmFjZUNhbGxU
cmFjZXIuaCIKKyNpbmNsdWRlICJUZXN0T3BlcmF0aW9uQ2FsbFRyYWNlci5oIgogI2luY2x1ZGUg
IldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlv
blByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgpA
QCAtMjI3LDggKzIyOSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2Vy
X3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2VHZXR0ZXIoSlNHbG9iYWxPYmplCiAgICAgYXV0byYgdm0g
PSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53
cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0g
ICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0QXR0
cmlidXRlSW50ZXJmYWNlIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6
OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcyk7CiAgICAgUkVM
RUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9i
YWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVzdEF0dHJpYnV0ZUludGVyZmFjZSgpKSkpOwog
fQogCkBAIC0yNDQsOCArMjQ2LDggQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENhbGxU
cmFjZXJfdGVzdEF0dHJpYnV0ZUludGVyZmFjZVNldHRlcihKU0dsb2JhbE9iamUKICAgICBhdXRv
JiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNv
bnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlmIChVTkxJS0VMWShpbXBs
LmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNl
ckludGVyZmFjZShpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcywgeyBuYXRpdmVWYWx1
ZSB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRy
YWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihp
bXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNl
cjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5hdGl2ZVZhbHVlKSB9KTsKICAgICBBdHRyaWJ1dGVT
ZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAg
ICAgcmV0dXJuIGltcGwuc2V0VGVzdEF0dHJpYnV0ZUludGVyZmFjZShXVEZNb3ZlKG5hdGl2ZVZh
bHVlKSk7CiAgICAgfSk7CkBAIC0yNjIsOCArMjY0LDggQEAgc3RhdGljIGlubGluZSBKU1ZhbHVl
IGpzVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZVNwZWNpZmllZEdldHRlcihKU0dsb2JhbE9i
amUKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwogICAg
IGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGlt
cGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJh
Y2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJBdHRyaWJ1
dGUoaW1wbCwgInRlc3RBdHRyaWJ1dGVTcGVjaWZpZWQiX3MpOworICAgIGlmIChVTkxJS0VMWShp
bXBsLmhhc0FjdGl2ZVRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQorICAgICAgICBUZXN0QXR0
cmlidXRlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lm
aWVkIl9zKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMQm9v
bGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50ZXN0QXR0cmlidXRl
U3BlY2lmaWVkKCkpKSk7CiB9CiAKQEAgLTI3OSw4ICsyODEsOCBAQCBzdGF0aWMgaW5saW5lIGJv
b2wgc2V0SlNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlU3BlY2lmaWVkU2V0dGVyKEpTR2xv
YmFsT2JqZQogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRv
IG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2
YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAg
aWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFj
ZXI6OnRlc3RDYWxsVHJhY2VyQXR0cmlidXRlKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVk
Il9zLCB7IG5hdGl2ZVZhbHVlIH0pOworICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRl
c3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQorICAgICAgICBUZXN0QXR0cmlidXRlQ2FsbFRyYWNl
cjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIl9zLCB7IFRlc3RB
dHRyaWJ1dGVDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0aXZlVmFsdWUpIH0p
OwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Nj
b3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmlidXRlU3BlY2lmaWVk
KFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgICB9KTsKQEAgLTI5Nyw4ICsyOTksOCBAQCBzdGF0
aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlV2l0aFZhcmlh
bnRHZXR0ZXIoSlNHbG9iYWxPYgogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEds
b2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGlmIChVTkxJ
S0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0
Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9zKTsK
KyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigp
KSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAi
dGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9zKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhy
b3dTY29wZSwgKHRvSlM8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmlu
Zz4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJv
d1Njb3BlLCBpbXBsLnRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudCgpKSkpOwogfQogCkBAIC0zMTQs
OCArMzE2LDggQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENhbGxUcmFjZXJfdGVzdEF0
dHJpYnV0ZVdpdGhWYXJpYW50U2V0dGVyKEpTR2xvYmFsT2IKICAgICBhdXRvJiBpbXBsID0gdGhp
c09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5p
b248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmpl
Y3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsK
LSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2Fs
bFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgInRlc3RBdHRyaWJ1dGVXaXRo
VmFyaWFudCJfcywgeyBuYXRpdmVWYWx1ZSB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNB
Y3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNh
bGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9z
LCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0aXZl
VmFsdWUpIH0pOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0
LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmlidXRl
V2l0aFZhcmlhbnQoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIH0pOwpAQCAtMzQ3LDggKzM0
OSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2Vy
UHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2Nv
cGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0
ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3Rp
dmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGws
ICJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNB
Y3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNh
bGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbkludGVyZmFjZSJfcyk7
CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uSW50ZXJm
YWNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2
Niw4ICszNjgsOCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2Fs
bFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIFVOVVNFRF9QQVJBTSh0
aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBs
ID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFj
aW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlck9wZXJhdGlv
bihpbXBsLCAidGVzdE9wZXJhdGlvblNwZWNpZmllZCJfcyk7CisgICAgaWYgKFVOTElLRUxZKGlt
cGwuaGFzQWN0aXZlVGVzdE9wZXJhdGlvbkNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RPcGVy
YXRpb25DYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25TcGVjaWZp
ZWQiX3MpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwudGVzdE9wZXJhdGlv
blNwZWNpZmllZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CkBAIC0zOTYsOCArMzk4LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpz
VGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVT
dGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgy
KTsKICAgICBhdXRvIGMgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmpl
Y3QsIGFyZ3VtZW50Mi52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5n
QWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShp
bXBsLCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgYSwgYiwgYyB9KTsKKyAgICBp
ZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAg
ICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9w
ZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nl
c3NBcmd1bWVudChpbXBsLCBhKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1
bWVudChpbXBsLCBiKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChp
bXBsLCBjKSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVy
YXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiksIFdURk1vdmUoYykpOwog
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MjAsOCArNDIy
LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQ
cm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUg
YXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIG5v
ZGVOdWxsYWJsZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFs
T2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRo
cm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJub2Rl
TnVsbGFibGVBcmciLCAiVGVzdENhbGxUcmFjZXIiLCAidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJs
ZUFyZ3VtZW50IiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Nj
b3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2lu
Z0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2Uo
aW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfcywgeyBub2RlTnVsbGFi
bGVBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNh
bGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rp
b24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfcywgeyBUZXN0SW50
ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5vZGVOdWxsYWJsZUFyZykg
fSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0
aE51bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQ0LDggKzQ0Niw4IEBAIHN0YXRp
YyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVu
Y3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9
IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2YXJpYW50QXJnID0g
Y29udmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj4oKmxl
eGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShp
bXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRy
YWNlckludGVyZmFjZShpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQiX3Ms
IHsgdmFyaWFudEFyZyB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50
ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJl
Y29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQiX3MsIHsg
VGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50QXJn
KSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRpb25X
aXRoVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudEFyZykpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjgsOCArNDcwLDggQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
bl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHZhcmlhbnROdWxsYWJsZUFy
ZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElE
TERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0g
ICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxU
cmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aE51
bGxhYmxlVmFyaWFudEFyZ3VtZW50Il9zLCB7IHZhcmlhbnROdWxsYWJsZUFyZyB9KTsKKyAgICBp
ZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAg
ICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9w
ZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnROdWxsYWJsZUFyZykgfSk7CiAg
ICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51bGxh
YmxlVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudE51bGxhYmxlQXJnKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ5MCw4ICs0OTIsOCBAQCBz
dGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlw
ZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVu
dDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gdmFyaWFudE9wdGlvbmFsQXJn
ID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJ
RExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJldHVyblR5cGU+
KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElE
TERPTVN0cmluZz4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVuaW9uPElETEJvb2xlYW4sIElE
TEZsb2F0LCBJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZh
bHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAg
ICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdE9wZXJh
dGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudCJfcywgeyB2YXJpYW50T3B0aW9uYWxBcmcg
fSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFj
ZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1w
bCwgInRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdElu
dGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50T3B0aW9uYWxB
cmcpIH0pOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwudGVzdE9wZXJhdGlv
bldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFyZykp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01MTIsOCAr
NTE0LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHZhcmlhbnRE
ZWZhdWx0QXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5n
KCkgOiBjb252ZXJ0PElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+
PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaWYgKFVOTElL
RUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RD
YWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50
QXJndW1lbnQiX3MsIHsgdmFyaWFudERlZmF1bHRBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGlt
cGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRl
cmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoRGVm
YXVsdFZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vz
c0FyZ3VtZW50KGltcGwsIHZhcmlhbnREZWZhdWx0QXJnKSB9KTsKICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVu
dChXVEZNb3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0Q2FsbFRyYWNlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVGVzdENhbGxUcmFjZXIuaWRsCmluZGV4IGM0MzQ4YzczZDg5ZGYxZDcwMjYy
ZWI5NDYwNDdmYzUyNDJhZTNjYTQuLjMyOTk4ZDY5N2E3YTk4ZDY0NzI3YTI4N2Q0OTVmYTM0N2Y4
MzA0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9U
ZXN0Q2FsbFRyYWNlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Rlc3RDYWxsVHJhY2VyLmlkbApAQCAtMjYsMTEgKzI2LDExIEBACiB0eXBlZGVmIChib29s
ZWFuIG9yIGZsb2F0IG9yIERPTVN0cmluZykgVmFyaWFudFR5cGU7CiAKIFsKLSAgICBDYWxsVHJh
Y2luZ0NhbGxiYWNrPXRlc3RDYWxsVHJhY2VySW50ZXJmYWNlLAorICAgIENhbGxUcmFjZXI9VGVz
dEludGVyZmFjZUNhbGxUcmFjZXIsCiAgICAgRXhwb3NlZD1UZXN0R2xvYmFsT2JqZWN0CiBdIGlu
dGVyZmFjZSBUZXN0Q2FsbFRyYWNlciB7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJp
YnV0ZUludGVyZmFjZTsKLSAgICBbQ2FsbFRyYWNpbmdDYWxsYmFjaz10ZXN0Q2FsbFRyYWNlckF0
dHJpYnV0ZV0gYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJpYnV0ZVNwZWNpZmllZDsKKyAgICBb
Q2FsbFRyYWNlcj1UZXN0QXR0cmlidXRlQ2FsbFRyYWNlcl0gYXR0cmlidXRlIGJvb2xlYW4gdGVz
dEF0dHJpYnV0ZVNwZWNpZmllZDsKIAogICAgIGF0dHJpYnV0ZSBWYXJpYW50VHlwZSB0ZXN0QXR0
cmlidXRlV2l0aFZhcmlhbnQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdGVzdFJl
YWRvbmx5QXR0cmlidXRlOwpAQCAtMzgsNyArMzgsNyBAQCB0eXBlZGVmIChib29sZWFuIG9yIGZs
b2F0IG9yIERPTVN0cmluZykgVmFyaWFudFR5cGU7CiAgICAgY29uc3QgYm9vbGVhbiB0ZXN0Q29u
c3RWYWx1ZSA9IGZhbHNlOwogCiAgICAgdW5kZWZpbmVkIHRlc3RPcGVyYXRpb25JbnRlcmZhY2Uo
KTsKLSAgICBbQ2FsbFRyYWNpbmdDYWxsYmFjaz10ZXN0Q2FsbFRyYWNlck9wZXJhdGlvbl0gdW5k
ZWZpbmVkIHRlc3RPcGVyYXRpb25TcGVjaWZpZWQoKTsKKyAgICBbQ2FsbFRyYWNlcj1UZXN0T3Bl
cmF0aW9uQ2FsbFRyYWNlcl0gdW5kZWZpbmVkIHRlc3RPcGVyYXRpb25TcGVjaWZpZWQoKTsKIAog
ICAgIHVuZGVmaW5lZCB0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyhib29sZWFuIGEsIGZsb2F0
IGIsIERPTVN0cmluZyBjKTsKICAgICB1bmRlZmluZWQgdGVzdE9wZXJhdGlvbldpdGhOdWxsYWJs
ZUFyZ3VtZW50KE5vZGU/IG5vZGVOdWxsYWJsZUFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNl
LmNwcAppbmRleCBlNGJiODhlMjhmOWI0NzNiZjBhNWY3YWYxZmI4ZTVjNTEyMDA1MTVkLi5lZDA1
NjI0NmQyNTJjZjRmOGI0OGIzNzhmYmVmMDE4MTE4Y2NmNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2Fu
dmFzQmFzZS5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgor
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpA
QCAtMTc2LDEwICsxNzgsMTAgQEAgSGFzaFNldDxFbGVtZW50Kj4gQ2FudmFzQmFzZTo6Y3NzQ2Fu
dmFzQ2xpZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIGNzc0NhbnZhc0NsaWVudHM7CiB9CiAKLWJv
b2wgQ2FudmFzQmFzZTo6Y2FsbFRyYWNpbmdBY3RpdmUoKSBjb25zdAorYm9vbCBDYW52YXNCYXNl
OjpoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QKIHsKICAgICBhdXRv
KiBjb250ZXh0ID0gcmVuZGVyaW5nQ29udGV4dCgpOwotICAgIHJldHVybiBjb250ZXh0ICYmIGNv
bnRleHQtPmNhbGxUcmFjaW5nQWN0aXZlKCk7CisgICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4
dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpOwogfQogCiBSZWZQdHI8SW1h
Z2VCdWZmZXI+IENhbnZhc0Jhc2U6OnNldEltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4m
JiBidWZmZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jh
c2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCmluZGV4IDUyZTAxNTYzYTAy
MjZlMmRiYzJlNjI5YTYzODY0YzcwOGU1Y2FmYzEuLjgzZmM0NjU2MmFjMmZkZTI4ZGJkN2ZjNzll
OTRkNzMzM2E1Y2U5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCkBAIC0xMDMsNyArMTAz
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3QgPSAw
OwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgPSAwOwogCi0gICAg
Ym9vbCBjYWxsVHJhY2luZ0FjdGl2ZSgpIGNvbnN0OworICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQg
Q2FudmFzQmFzZShJbnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKaW5kZXggMmE0ODVkNjFlOGU3YmQ1YjFiZDEwYjQ5ZTc2MmUxODk0NzZjMjJiNC4uMGU2
MDBjODkzNzVkZWE5ZGNjOTUxYjQzY2Y5NWUwN2FiZWUxNmE4NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIEhUTUxD
YW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExheW91
dFJlY3QmIHIpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoVU5MSUtFTFkobV9jb250ZXh0
ICYmIG1fY29udGV4dC0+Y2FsbFRyYWNpbmdBY3RpdmUoKSkpCisgICAgaWYgKFVOTElLRUxZKG1f
Y29udGV4dCAmJiBtX2NvbnRleHQtPmhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIo
KSkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3JkaW5n
Q2FudmFzRnJhbWUoKm1fY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5pZGwKaW5kZXggOWNhZTQzM2E3Nzg2N2EzZjc2MGY5ZWUyZmY1MTRmNDM3NjJj
NjhjMi4uM2JkMjUwYmY4OGMyMWY1MDk2YTZiYjg2Njc0YTkzOTQ3YzUwNjkxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwKQEAgLTQ1LDggKzQ1LDggQEAgdHlw
ZWRlZiAoCiAgICAgUmVwb3J0RXh0ZXJuYWxNZW1vcnlDb3N0LAogICAgIEV4cG9zZWQ9V2luZG93
CiBdIGludGVyZmFjZSBIVE1MQ2FudmFzRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBbQ0VS
ZWFjdGlvbnM9Tm90TmVlZGVkLCBDYWxsVHJhY2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0FjdGlv
bl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5l
ZWRlZCwgQ2FsbFRyYWNpbmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb25dIGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGhlaWdodDsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBDYWxsVHJh
Y2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdp
ZHRoOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIENhbGxUcmFjZXI9SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCiAgICAgW0Nh
bGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFJlbmRlcmluZ0NvbnRleHQ/
IGdldENvbnRleHQoRE9NU3RyaW5nIGNvbnRleHRJZCwgYW55Li4uIGFyZ3VtZW50cyk7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aAppbmRleCBmMzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1Li4wMDU2YWVi
OWNlNzc0YmI1Mjc4N2ZkNzY4OGU0ZWFlODA5YWM1NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03Nyw4ICs3Nyw4
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9DYW52
YXMoKSB7fQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNvbnN0
IHsgcmV0dXJuIDA7IH0KIAotICAgIGJvb2wgY2FsbFRyYWNpbmdBY3RpdmUoKSBjb25zdCB7IHJl
dHVybiBtX2NhbGxUcmFjaW5nQWN0aXZlOyB9Ci0gICAgdm9pZCBzZXRDYWxsVHJhY2luZ0FjdGl2
ZShib29sIGNhbGxUcmFjaW5nQWN0aXZlKSB7IG1fY2FsbFRyYWNpbmdBY3RpdmUgPSBjYWxsVHJh
Y2luZ0FjdGl2ZTsgfQorICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsg
fQorICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihib29sIGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsgfQog
CiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0aW5nUmVzdWx0c05lZWRVcGRhdGluZygpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlcGFyYXRpb25Gb3JE
aXNwbGF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEwMSw3ICsxMDEsNyBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBjaGVja09yaWdpbihjb25zdCBVUkwmKTsKICAgICB2b2lkIGNoZWNr
T3JpZ2luKGNvbnN0IFR5cGVkT01DU1NJbWFnZVZhbHVlJik7CiAKLSAgICBib29sIG1fY2FsbFRy
YWNpbmdBY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToKICAgICBDYW52YXNCYXNlJiBtX2Nh
bnZhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRl
cmluZ0NvbnRleHQyRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkQuaWRsCmluZGV4IGM1YTk1YjNkM2JhOTk1YzBjYWJiMGY0OTM2ODVjNTQ5
NWUyNDAzM2YuLmZlZTI0NGNmZmU2YjIzMTI0YWVhOGJkNzljMDg4MWQ1MTA5OGM3ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJELmlkbApAQCAtMjcsNyArMjcsNyBAQAogICAgIEN1c3RvbUlzUmVhY2hhYmxlLAogICAg
IEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgIENh
bGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uLAorICAgIENhbGxUcmFjZXI9SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlciwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2Ug
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHsKICAgICAvLyBiYWNrLXJlZmVyZW5jZSB0byB0aGUg
Y2FudmFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1h
cFJlbmRlcmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VC
aXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAppbmRleCBjYzM3NTZkNTE4YWFhNjVkMmRjZjU0NDMz
MDEzYmNhZDNhOWQ4NmU4Li4wZGUyYWY4NWJjNjU0YzlmZmVjMzAyZThhOGM1ZTIyYTBkYjE1ZDQw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRl
cmluZ0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0
bWFwUmVuZGVyaW5nQ29udGV4dC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBFbmFibGVk
QXRSdW50aW1lPUltYWdlQml0bWFwLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAotICAg
IENhbGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uLAorICAgIENhbGxUcmFjZXI9
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciwKIF0gaW50ZXJmYWNlIEltYWdlQml0bWFwUmVuZGVy
aW5nQ29udGV4dCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDYW52YXNFbGVtZW50IGNh
bnZhczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVu
Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFz
L09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKaW5kZXggODhhYTM5ZmEwMjFh
ZDkwYTM1OWVjOWRkY2E4MDI0YzMzOGU1YTk5Yy4uMGE4M2ZiMzE4YzRkZTgyZDliNzBiNDZmMGMz
Y2ViYzQ4YTE4NjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zm
c2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCkBAIC0zMCw3
ICszMCw3IEBACiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgSlNHZW5lcmF0ZVRv
SlNPYmplY3QsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgLy8gQ2FsbFRyYWNpbmdD
YWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb24sIC8vIEZJWE1FOiBPZmZzY3JlZW5DYW52YXMuCisg
ICAgLy8gQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLCAvLyBGSVhNRTogT2Zm
c2NyZWVuQ2FudmFzLgogXSBpbnRlcmZhY2UgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDJEIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgT2Zmc2NyZWVuQ2FudmFzIGNhbnZhczsKICAg
ICB1bmRlZmluZWQgY29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2Nh
bnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGFhODlkMzJiOTlmZmVkYjAzMGFh
NTMyNGQ0MTA3MjZlMTY5MGExYzQuLjlkZjM4OTVhMjk1Y2UwZDkyZWY5YmFhNjVmNThhYjAzOGM4
OTM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVyQm94
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldlYkdM
QWN0aXZlSW5mby5oIgorI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xD
b21wcmVzc2VkVGV4dHVyZUFTVEMuaCIKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJl
QVRDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIgpAQCAtNTcsMTQg
KzU4LDE5IEBACiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgiCiAj
aW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdT
aGFkZXJzLmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdM
TG9zZUNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTE11bHRpRHJhdy5oIgorI2luY2x1ZGUgIldl
YkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldlYkdMUXVlcnkuaCIKKyNpbmNsdWRlICJXZWJHTFJl
bmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1ZGUgIldlYkdM
U3luYy5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMVHJhbnNm
b3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgogI2luY2x1
ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5
T2JqZWN0T0VTLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJyYXlW
aWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0Nv
bnRleHQuaWRsCmluZGV4IDIwMWM0NzE1YWVjZGI2ODc3NDQyZDVkMmQ5NWU0YjY1ZGNlM2QzNzIu
LjNkZTkzNWUxN2ZhMTA5ZmQzN2VkNThiM2VhNzM1YjFkYTljNjNjMmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsCkBA
IC01OSw3ICs1OSw3IEBAIHR5cGVkZWYgKEltYWdlQml0bWFwIG9yIEltYWdlRGF0YSBvciBIVE1M
SW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFbGVtZW50KSBUZXhJCiAgICAgSlNHZW5lcmF0ZVRv
SlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBFeHBvc2VkPShXaW5kb3cs
V29ya2VyKSwKLSAgICBDYWxsVHJhY2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0FjdGlvbiwKKyAg
ICBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIsCiBdIGludGVyZmFjZSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0IHsKIAogICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIHNwbGl0cyB0
aGUgQVBJIHN1cmZhY2UgaW50byBhIFdlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcApp
bmRleCBkNGEyM2RiODA4ZjA4NDllMjY5NzZiMTEzODg1NTE3N2M5ZTJiYTcwLi5hMjk2MDM0MWI1
MTc4MzBkZjY2ZTU2Nzk0N2E4MTdlNWJkNzNlMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU1LDYgKzU1LDcg
QEAKICNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRlckJv
eC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJXZWJH
TEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMQ29sb3JCdWZmZXJGbG9hdC5oIgogI2luY2x1ZGUg
IldlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2Vk
VGV4dHVyZUFUQy5oIgpAQCAtNjcsOCArNjgsMTUgQEAKICNpbmNsdWRlICJXZWJHTERlYnVnU2hh
ZGVycy5oIgogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2ViR0xE
cmF3QnVmZmVycy5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJX
ZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xNdWx0aURyYXcuaCIKKyNpbmNsdWRl
ICJXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgorI2luY2x1
ZGUgIldlYkdMU2FtcGxlci5oIgorI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2luY2x1ZGUg
IldlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKaW5kZXggYTE2ZGEyMWU5N2M3
Y2EyN2E5ZGIxZGRlYmZkZjYyNTdiY2MxYzkwYy4uNzE4MjJjNGFiNWExYzAwNDgwZjIzMDViOWVk
N2E2MjA3YmNmNzVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCkBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgKEltYWdl
Qml0bWFwIG9yIEltYWdlRGF0YSBvciBIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFbGVt
ZW50KSBUZXhJCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBFeHBvcnRNYWNybz1XRUJD
T1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKLSAgICBDYWxsVHJhY2lu
Z0NhbGxiYWNrPXJlY29yZENhbnZhc0FjdGlvbiwKKyAgICBDYWxsVHJhY2VyPUluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXIsCiBdIGludGVyZmFjZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgewogfTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlLmNwcAppbmRleCAwOTExYWI2ZGUxZjY3ZDY2ZjE3NTU0ZGUxNmJkNTI4NjRl
OGMwM2E5Li43YTM4NTkwNzk3NTc1YjJkNjhkZjRlZTNhZjM0NWI2MTE0ZTc1ZDg5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmNwcApAQCAtMTAxLDEwICsxMDEsMTQgQEAKICNpbmNsdWRlICJXZWJHTFByb2dyYW0u
aCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVy
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyLmgiCiAjaW5jbHVkZSAiV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCIKICNpbmNs
dWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgi
CiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRl
eEFycmF5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgog
I2luY2x1ZGUgIldlYlhSU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29s
ZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBAIC03
OTA3LDcgKzc5MTEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpZENvbXBv
c2l0ZSgpCiB7CiAgICAgbV9jb21wb3NpdGluZ1Jlc3VsdHNOZWVkVXBkYXRpbmcgPSBmYWxzZTsK
IAotICAgIGlmIChVTkxJS0VMWShjYWxsVHJhY2luZ0FjdGl2ZSgpKSkKKyAgICBpZiAoVU5MSUtF
TFkoaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKSkKICAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZSgqdGhpcyk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKaW5k
ZXggZTVmMjIxMGFlOTg3MzNlOTg0YWI1ODRmNmY5YTNjODQ3YjVhODA0OS4uMjMxY2Q4ZWU1ZGZi
NTEzMDU2Yzc5MzRlY2U3ZjlkNzgyYzllMDM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTI4LDE0ICsyOCwxNyBAQAogCiAjaW5jbHVkZSAi
QWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJD
YW52YXNCYXNlLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJDYW52
YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIkNvbG9yU2VyaWFsaXph
dGlvbi5oIgorI2luY2x1ZGUgIkRPTU1hdHJpeDJESW5pdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50
LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNpbmNs
dWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNsdWRl
ICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKQEAg
LTQ1LDcgKzQ4LDkgQEAKICNpbmNsdWRlICJJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdlbnQu
aCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0Nh
bnZhc0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2FudmFzRmlsbFJ1bGUuaCIKICNpbmNsdWRl
ICJKU0NhbnZhc0xpbmVDYXAuaCIKQEAgLTU2LDM0ICs2MSw0MyBAQAogI2luY2x1ZGUgIkpTRXhl
Y1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJKU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5oIgorI2luY2x1ZGUgIkpTV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiSlNXZWJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIK
ICNpbmNsdWRlICJQYXRoMkQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCi0jaW5jbHVkZSAiUmVj
b3JkaW5nU3dpenpsZVR5cGVzLmgiCisjaW5jbHVkZSAiUmVjb3JkaW5nU3dpenpsZVR5cGUuaCIK
ICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMu
aCIKKyNpbmNsdWRlICJUeXBlZE9NQ1NTSW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIldlYkdMMlJl
bmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldl
YkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJX
ZWJHTFF1ZXJ5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJX
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgiCisjaW5jbHVkZSAiV2ViR0xTYW1wbGVyLmgiCisjaW5jbHVkZSAiV2ViR0xTaGFkZXIu
aCIKKyNpbmNsdWRlICJXZWJHTFN5bmMuaCIKKyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNp
bmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCisjaW5jbHVkZSAiV2ViR0xVbmlmb3Jt
TG9jYXRpb24uaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCisjaW5jbHVk
ZSAiV2ViR1BVRGV2aWNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIu
aD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVHlwZWRBcnJheXMuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLQotI2lmIEVOQUJM
RShDU1NfVFlQRURfT00pCi0jaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKLSNlbmRp
ZgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0
LmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCi0jZW5kaWYKLQotI2lmIEVO
QUJMRShXRUJHTDIpCi0jaW5jbHVkZSAiSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5j
bHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VC
R1BVKQotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNpbmNsdWRlICJKU1dlYkdQVURl
dmljZS5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2VuZGlmCisjaW5jbHVkZSA8d3Rm
L09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJp
YW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI3OSw3ICsyOTMsNyBAQCB2b2lk
IEluc3BlY3RvckNhbnZhczo6Y2FudmFzQ2hhbmdlZCgpCiAgICAgYXV0byogY29udGV4dCA9IGNh
bnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKLSAgICBpZiAoIWNvbnRleHQt
PmNhbGxUcmFjaW5nQWN0aXZlKCkpCisgICAgaWYgKCFjb250ZXh0LT5oYXNBY3RpdmVJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNpbmNlIDJE
IGNvbnRleHRzIGFyZSBhYmxlIHRvIGJlIGZ1bGx5IHJlcHJvZHVjZWQgaW4gdGhlIGZyb250ZW5k
LCB3ZSBkb24ndCBuZWVkIHNuYXBzaG90cy4KQEAgLTMwNyw3ICszMjEsNyBAQCB2b2lkIEluc3Bl
Y3RvckNhbnZhczo6cmVzZXRSZWNvcmRpbmdEYXRhKCkKICAgICBBU1NFUlQoY29udGV4dCk7CiAg
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6
IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAKLSAg
ICBjb250ZXh0LT5zZXRDYWxsVHJhY2luZ0FjdGl2ZShmYWxzZSk7CisgICAgY29udGV4dC0+c2V0
SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihmYWxzZSk7CiB9CiAKIGJvb2wgSW5z
cGVjdG9yQ2FudmFzOjpoYXNSZWNvcmRpbmdEYXRhKCkgY29uc3QKQEAgLTMyMCw2ICszMzQsNDQ1
IEBAIGJvb2wgSW5zcGVjdG9yQ2FudmFzOjpjdXJyZW50RnJhbWVIYXNEYXRhKCkgY29uc3QKICAg
ICByZXR1cm4gISFtX2ZyYW1lczsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFJl
ZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvclZlY3Rvcihjb25zdCBW
ZWN0b3I8VD4mIHZlY3RvcikKK3sKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxKU09O
OjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byYgaXRlbSA6IHZlY3RvcikKKyAgICAg
ICAgYXJyYXktPmFkZEl0ZW0oaXRlbSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzRGlyZWN0aW9uIGFyZ3VtZW50KQoreworICAg
IHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhh
cmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzRmlsbFJ1bGUgYXJndW1lbnQpCit7CisgICAg
cmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFy
Z3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNJbWFnZVNvdXJjZSYgYXJndW1lbnQpCit7Cisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKKyAg
ICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CisgICAgfSk7Cit9CisKK09wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNMaW5lQ2FwIGFyZ3VtZW50KQoreworICAg
IHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhh
cmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzTGluZUpvaW4gYXJndW1lbnQpCit7CisgICAg
cmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFy
Z3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHls
ZVZhcmlhbnQmIGFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50
LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFs
dWUpOworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFz
VGV4dEFsaWduIGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFz
VGV4dEJhc2VsaW5lIGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0
YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoRE9N
TWF0cml4MkRJbml0JiBhcmd1bWVudCkKK3sKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlP
Zjxkb3VibGU+OjpjcmVhdGUoKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5hLnZhbHVl
T3IoMSkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmIudmFsdWVPcigwKSk7CisgICAg
YXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYy52YWx1ZU9yKDApKTsKKyAgICBhcnJheS0+YWRkSXRl
bShhcmd1bWVudC5kLnZhbHVlT3IoMSkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmUu
dmFsdWVPcigwKSk7CisgICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuZi52YWx1ZU9yKDApKTsK
KyAgICByZXR1cm4ge3sgV1RGTW92ZShhcnJheSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpET01N
YXRyaXggfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChFbGVtZW50KiBh
cmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworCisgICAgLy8gRWxlbWVudHMgYXJlIG5vdCBzZXJpYWxpemFibGUsIHNvIGFkZCBhIHN0
cmluZyBhcyBhIHBsYWNlaG9sZGVyIHNpbmNlIHRoZSBhY3R1YWwKKyAgICAvLyBlbGVtZW50IGNh
bm5vdCBiZSByZWNvbnN0cnVjdGVkIGluIHRoZSBmcm9udGVuZC4KKyAgICByZXR1cm4ge3sgdmFs
dWVJbmRleEZvckRhdGEoIkVsZW1lbnQiX3MpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Tm9uZSB9
fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEhUTUxJbWFnZUVsZW1lbnQq
IGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6OkltYWdlIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoSW1hZ2VCaXRtYXAqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRh
KGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlQml0bWFwIH19OworfQorCitP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VEYXRhKiBhcmd1bWVudCkKK3sKKyAg
ICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJ
bWFnZURhdGEgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFnZVNt
b290aGluZ1F1YWxpdHkgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChP
cHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8ZG91YmxlPigqYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51
bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFBhdGgyRCogYXJn
dW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYnVpbGRTdHJpbmdGcm9tUGF0aChh
cmd1bWVudC0+cGF0aCgpKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpQYXRoMkQgfX07Cit9CisK
K09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFzR3JhZGllbnQ+JiBh
cmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpDYW52YXNHcmFkaWVudCB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYgYXJndW1lbnQpCit7CisgICAgaWYg
KCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sg
dmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Q2FudmFz
UGF0dGVybiB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxI
VE1MQ2FudmFzRWxlbWVudD4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRh
KGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlIH19OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBhcmd1bWVu
dCkKK3sKKyAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KGFyZ3VtZW50LmdldCgpKTsKK30KKwor
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxJbWFnZUJpdG1hcD4mIGFyZ3Vt
ZW50KQoreworICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOworfQor
CitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEltYWdlRGF0YT4mIGFyZ3Vt
ZW50KQoreworICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOworfQor
CitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+
JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mIGFyZ3VtZW50KQoreworICAgIGlm
ICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7
IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5
IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6Rmxv
YXQzMkFycmF5PiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0
dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwg
UmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkgfX07Cit9CisKK09wdGlvbmFsPEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6
OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiYgYXJndW1lbnQpCit7Cisg
ICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1
cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVk
QXJyYXkgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlND
OjpVaW50MzJBcnJheT4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUo
MCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OworfQorCitPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sg
dmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5n
IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVjdG9yPFN0cmluZz4m
IGFyZ3VtZW50KQoreworICAgIGF1dG8gZGVkdXBsaWNhdGVkID0gYXJndW1lbnQubWFwKFsmXSAo
Y29uc3QgU3RyaW5nJiBpdGVtKSB7CisgICAgICAgIHJldHVybiBpbmRleEZvckRhdGEoaXRlbSk7
CisgICAgfSk7CisgICAgcmV0dXJuIHt7IGJ1aWxkQXJyYXlGb3JWZWN0b3IoV1RGTW92ZShkZWR1
cGxpY2F0ZWQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxmbG9hdD4mIGFyZ3VtZW50KQoreworICAg
IHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OkFycmF5IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVj
dG9yPHVpbnQzMl90PiYgYXJndW1lbnQpCit7CisgICAgYXV0byBtYXBwZWQgPSBhcmd1bWVudC5t
YXAoWyZdICh1aW50MzJfdCBpdGVtKSB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3Vi
bGU+KGl0ZW0pOworICAgIH0pOworICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKG1h
cHBlZCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxpbnQzMl90PiYgYXJndW1lbnQpCit7CisgICAgYXV0
byBtYXBwZWQgPSBhcmd1bWVudC5tYXAoWyZdIChpbnQzMl90IGl0ZW0pIHsKKyAgICAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oaXRlbSk7CisgICAgfSk7CisgICAgcmV0dXJuIHt7IGJ1
aWxkQXJyYXlGb3JWZWN0b3IobWFwcGVkKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkFycmF5IH19
OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoZG91YmxlIGFyZ3VtZW50KQor
eworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGFyZ3VtZW50KSwgUmVjb3JkaW5n
U3dpenpsZVR5cGU6Ok51bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KGZsb2F0IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRl
KHN0YXRpY19jYXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51
bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KHVpbnQ2NF90IGFy
Z3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0
PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKK30K
KworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGludDY0X3QgYXJndW1lbnQpCit7Cisg
ICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1
bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19OworfQorCitPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQodWludDMyX3QgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIHt7
IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1bWVudCkpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoaW50MzJfdCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6
OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVU
eXBlOjpOdW1iZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudCh1aW50
OF90IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGludD4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsK
K30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGJvb2wgYXJndW1lbnQpCit7Cisg
ICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6Qm9vbGVhbiB9fTsKK30KKworI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCisKK09w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+
JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1NfVFlQ
RURfT00pCisKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKworT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBhcmd1bWVudCkKK3sKKyAg
ICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVy
biB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJ
bWFnZSB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorCisjaWYg
RU5BQkxFKFZJREVPKQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhU
TUxWaWRlb0VsZW1lbnQ+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShh
cmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShWSURFTykKKworI2lmIEVOQUJMRShXRUJHTCkKKworT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRh
dGFTb3VyY2U+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oKmFyZ3VtZW50LCBb
Jl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUp
OworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9uYWw8
V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1bWVudCkKK3sK
KyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAg
cmV0dXJuIFdURjo6c3dpdGNoT24oKmFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAg
ICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xCdWZmZXIqIGFyZ3VtZW50KQoreworICAgIGlm
ICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7
IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTEJ1ZmZl
ciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMRnJhbWVidWZm
ZXIqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpXZWJHTEZyYW1lYnVmZmVyIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoV2ViR0xQcm9ncmFtKiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3Vt
ZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpW
YWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xQcm9ncmFtIH19Owor
fQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xRdWVyeSogYXJndW1lbnQp
Cit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OldlYkdMUXVlcnkgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJH
TFJlbmRlcmJ1ZmZlciogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgw
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMUmVuZGVyYnVmZmVyIH19OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVm
ZmVyRGF0YVNvdXJjZSYgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJn
dW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVu
dCh2YWx1ZSk7CisgICAgfSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpGbG9hdDMyTGlzdDo6VmFyaWFudFR5cGUmIGFyZ3Vt
ZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZh
bHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOwor
fQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6SW50MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIFdU
Rjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJu
IHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CisgICAgfSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJjZSYg
YXJndW1lbnQpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0
byYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CisgICAg
fSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFNhbXBsZXIqIGFy
Z3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpXZWJHTFNhbXBsZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1
bWVudChXZWJHTFNoYWRlciogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0
ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU2hhZGVyIH19OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTeW5jKiBhcmd1bWVudCkKK3sKKyAgICBpZiAo
IWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTeW5jIH19
OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xUZXh0dXJlKiBhcmd1
bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6V2ViR0xUZXh0dXJlIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQp
CisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVl
OjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFVuaWZvcm1Mb2NhdGlvbiB9
fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVmVydGV4QXJyYXlP
YmplY3QqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0IH19OworfQorCisjZW5kaWYg
Ly8gRU5BQkxFKFdFQkdMKQorCisjaWYgRU5BQkxFKFdFQkdMMikKKworT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGFyZ3VtZW50KQoreworICAg
IGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFRy
YW5zZm9ybUZlZWRiYWNrIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
V2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6VWludDMyTGlzdDo6VmFyaWFudFR5cGUmIGFyZ3VtZW50
KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVl
KSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOworfQor
CisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMMikKKwogc3RhdGljIGJvb2wgc2hvdWxkU25hcHNob3RC
aXRtYXBSZW5kZXJlckFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJuIG5h
bWUgPT0gInRyYW5zZmVyRnJvbUltYWdlQml0bWFwIjsKQEAgLTM0NSw3ICs3OTgsNyBAQCBzdGF0
aWMgYm9vbCBzaG91bGRTbmFwc2hvdFdlYkdMMkFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB9
CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbihjb25zdCBTdHJp
bmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50
PiYmIHBhcmFtZXRlcnMpCit2b2lkIEluc3BlY3RvckNhbnZhczo6cmVjb3JkQWN0aW9uKFN0cmlu
ZyYmIG5hbWUsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50cyYm
IGFyZ3VtZW50cykKIHsKICAgICBpZiAoIW1faW5pdGlhbFN0YXRlKSB7CiAgICAgICAgIC8vIFdl
IHNob3VsZCBvbmx5IGNvbnN0cnVjdCB0aGUgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIGZpcnN0IGFj
dGlvbiBvZiB0aGUgcmVjb3JkaW5nLgpAQCAtMzczLDEwICs4MjYsNiBAQCB2b2lkIEluc3BlY3Rv
ckNhbnZhczo6cmVjb3JkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjppbml0aWFsaXpl
cl9saXN0PFJlYwogCiAgICAgYXBwZW5kQWN0aW9uU25hcHNob3RJZk5lZWRlZCgpOwogCi0gICAg
bV9sYXN0UmVjb3JkZWRBY3Rpb24gPSBidWlsZEFjdGlvbihuYW1lLCBXVEZNb3ZlKHBhcmFtZXRl
cnMpKTsKLSAgICBtX2J1ZmZlclVzZWQgKz0gbV9sYXN0UmVjb3JkZWRBY3Rpb24tPm1lbW9yeUNv
c3QoKTsKLSAgICBtX2N1cnJlbnRBY3Rpb25zLT5hZGRJdGVtKCptX2xhc3RSZWNvcmRlZEFjdGlv
bik7Ci0KICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VSVChj
b250ZXh0KTsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2Vi
IEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVE
ZXZpY2UKQEAgLTM5MSw2ICs4NDAsMTAgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFj
dGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWMKICAgICBl
bHNlIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0Pihjb250ZXh0KSAmJiBzaG91bGRTbmFw
c2hvdFdlYkdMMkFjdGlvbihuYW1lKSkKICAgICAgICAgbV9jb250ZW50Q2hhbmdlZCA9IHRydWU7
CiAjZW5kaWYKKworICAgIG1fbGFzdFJlY29yZGVkQWN0aW9uID0gYnVpbGRBY3Rpb24oV1RGTW92
ZShuYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKTsKKyAgICBtX2J1ZmZlclVzZWQgKz0gbV9sYXN0
UmVjb3JkZWRBY3Rpb24tPm1lbW9yeUNvc3QoKTsKKyAgICBtX2N1cnJlbnRBY3Rpb25zLT5hZGRJ
dGVtKCptX2xhc3RSZWNvcmRlZEFjdGlvbik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpm
aW5hbGl6ZUZyYW1lKCkKQEAgLTc4Niw2ICsxMjM5LDExIEBAIGludCBJbnNwZWN0b3JDYW52YXM6
OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgIHJldHVybiBzdGF0
aWNfY2FzdDxpbnQ+KGluZGV4KTsKIH0KIAorUmVmPEpTT046OlZhbHVlPiBJbnNwZWN0b3JDYW52
YXM6OnZhbHVlSW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCit7CisgICAg
cmV0dXJuIEpTT046OlZhbHVlOjpjcmVhdGUoaW5kZXhGb3JEYXRhKGRhdGEpKTsKK30KKwogU3Ry
aW5nIEluc3BlY3RvckNhbnZhczo6c3RyaW5nSW5kZXhGb3JLZXkoY29uc3QgU3RyaW5nJiBrZXkp
CiB7CiAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGluZGV4Rm9yRGF0YShrZXkpKTsKQEAgLTgw
MywxNCArMTI2MSw2IEBAIHN0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxkb3VibGU+PiBidWlsZEFy
cmF5Rm9yQWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zCiAgICAgcmV0dXJuIGFycmF5
OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8SlNP
Tjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yVmVjdG9yKGNvbnN0IFZlY3RvcjxUPiYgdmVjdG9yKQot
ewotICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7
Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogdmVjdG9yKQotICAgICAgICBhcnJheS0+YWRkSXRlbShp
dGVtKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KIFJlZjxQcm90b2NvbDo6UmVjb3JkaW5nOjpJ
bml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0aWFsU3RhdGUoKQogewogICAg
IGF1dG8qIGNvbnRleHQgPSBjYW52YXNDb250ZXh0KCk7CkBAIC05MTUsMjM5ICsxMzY1LDIwIEBA
IFJlZjxQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6
YnVpbGRJbml0aWFsU3RhdGUoKQogICAgIHJldHVybiBpbml0aWFsU3RhdGVQYXlsb2FkOwogfQog
Ci1SZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVpbGRB
Y3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2Fu
dmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQorUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6
VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKFN0cmluZyYmIG5hbWUsIEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50cyYmIGFyZ3VtZW50cykKIHsK
ICAgICBhdXRvIGFjdGlvbiA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsK
LSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKG5hbWUpKTsKKyAgICBhY3Rpb24tPmFk
ZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUobmFtZSkpKTsKIAogICAgIGF1dG8gcGFyYW1ldGVy
c0RhdGEgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgYXV0byBz
d2l6emxlVHlwZXMgPSBKU09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgpOworICAgIGZvciAoYXV0
byYmIGFyZ3VtZW50IDogV1RGTW92ZShhcmd1bWVudHMpKSB7CisgICAgICAgIGlmICghYXJndW1l
bnQpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIGF1dG8gYWRkUGFyYW1ldGVyID0gWyZw
YXJhbWV0ZXJzRGF0YSwgJnN3aXp6bGVUeXBlc10gKGF1dG8gdmFsdWUsIFJlY29yZGluZ1N3aXp6
bGVUeXBlcyBzd2l6emxlVHlwZSkgewotICAgICAgICBwYXJhbWV0ZXJzRGF0YS0+YWRkSXRlbSh2
YWx1ZSk7Ci0gICAgICAgIHN3aXp6bGVUeXBlcy0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KHN3
aXp6bGVUeXBlKSk7Ci0gICAgfTsKLQotICAgIC8vIERlY2xhcmVkIGJlZm9yZSBpdCdzIGluaXRp
YWxpemVkIHNvIGl0IGNhbiBiZSB1c2VkIHJlY3Vyc2l2ZWx5LgotICAgIEZ1bmN0aW9uPHZvaWQo
Y29uc3QgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudCYpPiBwYXJzZVBhcmFtZXRlcjsKLSAgICBw
YXJzZVBhcmFtZXRlciA9IFsmXSAoY29uc3QgYXV0byYgcGFyYW1ldGVyKSB7Ci0gICAgICAgIFdU
Rjo6c3dpdGNoT24ocGFyYW1ldGVyLAotICAgICAgICAgICAgWyZdIChDYW52YXNEaXJlY3Rpb24g
dmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7IH0sCi0gICAgICAg
ICAgICBbJl0gKENhbnZhc0ZpbGxSdWxlIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRh
dGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZdIChDYW52YXNMaW5lQ2FwIHZhbHVlKSB7
IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodmFs
dWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZd
IChDYW52YXNMaW5lSm9pbiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3Ry
aW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoQ2FudmFzVGV4dEFsaWduIHZhbHVlKSB7IGFkZFBh
cmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpKSwg
UmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZdIChDYW52
YXNUZXh0QmFzZWxpbmUgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmlu
Zyk7IH0sCi0gICAgICAgICAgICBbJl0gKEltYWdlU21vb3RoaW5nUXVhbGl0eSB2YWx1ZSkgeyBh
ZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVl
KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgRE9NTWF0cml4MkRJbml0JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGF1dG8gYXJy
YXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAgIGFy
cmF5LT5hZGRJdGVtKHZhbHVlLmEudmFsdWVPcigxKSk7Ci0gICAgICAgICAgICAgICAgYXJyYXkt
PmFkZEl0ZW0odmFsdWUuYi52YWx1ZU9yKDApKTsKLSAgICAgICAgICAgICAgICBhcnJheS0+YWRk
SXRlbSh2YWx1ZS5jLnZhbHVlT3IoMCkpOwotICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVt
KHZhbHVlLmQudmFsdWVPcigxKSk7Ci0gICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFs
dWUuZS52YWx1ZU9yKDApKTsKLSAgICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5m
LnZhbHVlT3IoMCkpOwotICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihXVEZNb3ZlKGFycmF5
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpET01NYXRyaXgpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgRWxlbWVudCogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAodmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRWxlbWVudHMgYXJlIG5vdCBzZXJp
YWxpemFibGUsIHNvIGFkZCBhIHN0cmluZyBhcyBhIHBsYWNlaG9sZGVyIHNpbmNlIHRoZSBhY3R1
YWwKLSAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBjYW5ub3QgYmUgcmVjb25zdHJ1Y3Rl
ZCBpbiB0aGUgZnJvbnRlbmQuCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRl
eEZvckRhdGEoIkVsZW1lbnQiKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpOb25lKTsKLSAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChIVE1MSW1hZ2VF
bGVtZW50KiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
ICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlczo6SW1hZ2UpOyB9LAotICAgICAgICAgICAgWyZdIChJbWFnZUJpdG1hcCogdmFsdWUp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBh
cmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdl
Qml0bWFwKTsgfSwKLSAgICAgICAgICAgIFsmXSAoSW1hZ2VEYXRhKiB2YWx1ZSkgewotICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGlu
ZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VEYXRhKTsgfSwK
LSAgICAgICAgICAgIFsmXSAoY29uc3QgUGF0aDJEKiB2YWx1ZSkgewotICAgICAgICAgICAgICAg
IGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0
YShidWlsZFN0cmluZ0Zyb21QYXRoKHZhbHVlLT5wYXRoKCkpKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGVzOjpQYXRoMkQpOyB9LAotI2lmIEVOQUJMRShXRUJHTCkKLSAgICAgICAgICAgIC8vIEZJWE1F
OiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc2MDA5PiBXZWIgSW5zcGVjdG9yOiBzZW5kIGRhdGEg
Zm9yIFdlYkdMIG9iamVjdHMgZHVyaW5nIGEgcmVjb3JkaW5nIGluc3RlYWQgb2YgYSBwbGFjZWhv
bGRlciBzdHJpbmcKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xCdWZmZXIqIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJh
bWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTEJ1ZmZlcik7Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTEZyYW1lYnVmZmVyKiB2YWx1ZSkgewot
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1l
dGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xGcmFtZWJ1ZmZlcik7Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFByb2dyYW0qIHZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0
ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFByb2dyYW0pOwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xRdWVyeSogdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdMUXVlcnkpOwotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIFsmXSAoY29uc3QgV2ViR0xSZW5kZXJidWZmZXIqIHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVj
b3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFNhbXBsZXIqIHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVj
b3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFNhbXBsZXIpOwotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIFsmXSAoY29uc3QgV2ViR0xTaGFkZXIqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5n
U3dpenpsZVR5cGVzOjpXZWJHTFNoYWRlcik7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
WyZdIChjb25zdCBXZWJHTFN5bmMqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVl
KQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5
cGVzOjpXZWJHTFN5bmMpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3Qg
V2ViR0xUZXh0dXJlKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAg
ICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2Vi
R0xUZXh0dXJlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdM
VHJhbnNmb3JtRmVlZGJhY2sqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQot
ICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVz
OjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBb
Jl0gKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB2YWx1ZSkgewotICAgICAgICAgICAgICAg
IGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGlu
Z1N3aXp6bGVUeXBlczo6V2ViR0xVbmlmb3JtTG9jYXRpb24pOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogdmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRl
cigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdMVmVydGV4QXJyYXlPYmplY3QpOwotICAg
ICAgICAgICAgfSwKLSNlbmRpZgotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8QXJyYXlC
dWZmZXI+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
ICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJh
eSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8QXJyYXlC
dWZmZXJWaWV3PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAg
ICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlR5cGVk
QXJyYXkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPENh
bnZhc0dyYWRpZW50PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAg
ICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRp
bmdTd2l6emxlVHlwZXM6OkNhbnZhc0dyYWRpZW50KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYgdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRl
eEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkNhbnZhc1BhdHRlcm4pOwot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEZsb2F0MzJBcnJh
eT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAg
ICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpUeXBlZEFycmF5KTsK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxIVE1MQ2FudmFz
RWxlbWVudD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dp
enpsZVR5cGVzOjpJbWFnZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25z
dCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZh
bHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7Ci0gICAgICAgICAgICB9LAotI2lm
IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8
T2Zmc2NyZWVuQ2FudmFzPiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0g
ICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZXM6OkltYWdlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBF
TkFCTEUoVklERU8pCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxIVE1MVmlkZW9FbGVt
ZW50PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXM6OkltYWdlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoQ1NTX1RZ
UEVEX09NKQotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFs
dWU+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAg
ICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVU
eXBlczo6SW1hZ2UpOwotICAgICAgICAgICAgfSwKLSNlbmRpZgotICAgICAgICAgICAgWyZdIChj
b25zdCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1
ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VCaXRtYXApOwotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEltYWdlRGF0YT4mIHZhbHVlKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIo
aW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZURhdGEpOwot
ICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEludDMyQXJyYXk+
JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7Ci0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8VWludDMyQXJyYXk+
JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7Ci0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBDYW52YXNJbWFnZVNvdXJjZSYg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBXVEY6OnZpc2l0KHBhcnNlUGFyYW1ldGVyLCB2YWx1
ZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
V1RGOjp2aXNpdChwYXJzZVBhcmFtZXRlciwgdmFsdWUpOwotICAgICAgICAgICAgfSwKLSNpZiBF
TkFCTEUoV0VCR0wpCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4
dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgV1RGOjp2
aXNpdChwYXJzZVBhcmFtZXRlciwgdmFsdWUpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
IFsmXSAoY29uc3QgT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0
YVNvdXJjZT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgICAgICAgICBwYXJzZVBhcmFtZXRlcih2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OlRleElt
YWdlU291cmNlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFyc2VQYXJh
bWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IE9w
dGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OlRleEltYWdlU291cmNlPiYgdmFsdWUp
IHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHBhcnNl
UGFyYW1ldGVyKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgfSwKLSNlbmRpZgotICAgICAg
ICAgICAgWyZdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICBhdXRvIGRlZHVwbGljYXRlZCA9IHZhbHVlLm1hcChbJl0gKGNvbnN0IFN0cmluZyYgaXRlbSkg
ewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhGb3JEYXRhKGl0ZW0pOwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihidWlsZEFycmF5Rm9y
VmVjdG9yKGRlZHVwbGljYXRlZCksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZhbHVl
KSB7IGFkZFBhcmFtZXRlcihidWlsZEFycmF5Rm9yVmVjdG9yKHZhbHVlKSwgUmVjb3JkaW5nU3dp
enpsZVR5cGVzOjpBcnJheSk7IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3Rvcjx1aW50
MzJfdD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBtYXBwZWQgPSB2YWx1ZS5tYXAo
WyZdICh1aW50MzJfdCBpdGVtKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxkb3VibGU+KGl0ZW0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAg
IGFkZFBhcmFtZXRlcihidWlsZEFycmF5Rm9yVmVjdG9yKG1hcHBlZCksIFJlY29yZGluZ1N3aXp6
bGVUeXBlczo6QXJyYXkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3Qg
VmVjdG9yPGludDMyX3Q+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoYnVpbGRBcnJheUZvclZlY3Rv
cih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6QXJyYXkpOyB9LAotI2lmIEVOQUJMRShX
RUJHTCkKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
RmxvYXQzMkxpc3Q6OlZhcmlhbnRUeXBlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6
dmlzaXQocGFyc2VQYXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkludDMyTGlzdDo6VmFyaWFu
dFR5cGUmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgV1RGOjp2aXNpdChwYXJzZVBhcmFtZXRl
ciwgdmFsdWUpOwotICAgICAgICAgICAgfSwKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJHTDIpCi0g
ICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OlVpbnQzMkxpc3Q6
OlZhcmlhbnRUeXBlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFyc2VQ
YXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVl
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZdIChk
b3VibGUgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKHZhbHVlLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6
Ok51bWJlcik7IH0sCi0gICAgICAgICAgICBbJl0gKGZsb2F0IHZhbHVlKSB7IGFkZFBhcmFtZXRl
cih2YWx1ZSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpOdW1iZXIpOyB9LAotICAgICAgICAgICAg
WyZdIChjb25zdCBPcHRpb25hbDxmbG9hdD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcih2YWx1ZS52YWx1ZSgp
KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKHVpbnQ2NF90IHZhbHVlKSB7IGFk
ZFBhcmFtZXRlcihzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGVzOjpOdW1iZXIpOyB9LAotICAgICAgICAgICAgWyZdIChpbnQ2NF90IHZhbHVlKSB7IGFkZFBh
cmFtZXRlcihzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVz
OjpOdW1iZXIpOyB9LAotICAgICAgICAgICAgWyZdICh1aW50MzJfdCB2YWx1ZSkgeyBhZGRQYXJh
bWV0ZXIoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsmXSAoaW50MzJfdCB2YWx1ZSkgeyBhZGRQYXJhbWV0
ZXIodmFsdWUsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAg
IFsmXSAodWludDhfdCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoc3RhdGljX2Nhc3Q8aW50Pih2YWx1
ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsmXSAo
Ym9vbCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIodmFsdWUsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
Qm9vbGVhbik7IH0KLSAgICAgICAgKTsKLSAgICB9OwotICAgIGZvciAoYXV0byYgcGFyYW1ldGVy
IDogcGFyYW1ldGVycykKLSAgICAgICAgcGFyc2VQYXJhbWV0ZXIocGFyYW1ldGVyKTsKLQorICAg
ICAgICBwYXJhbWV0ZXJzRGF0YS0+YWRkSXRlbShhcmd1bWVudC0+dmFsdWUuY29weVJlZigpKTsK
KyAgICAgICAgc3dpenpsZVR5cGVzLT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oYXJndW1lbnQt
PnN3aXp6bGVUeXBlKSk7CisgICAgfQogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHBhcmFt
ZXRlcnNEYXRhKSk7CiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUoc3dpenpsZVR5cGVzKSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaAppbmRleCBiMjdi
YzhkNDkyMzkxMTdiZWU1MjVkNWZlNmFjMjZlMmQ2MTZiNWM3Li4yNjI1YmQwYTc2M2YwNjZjMTFm
MmIyNDBmN2M5YTdjOTQwYzFlZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhcy5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNs
dWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sT2JqZWN0cy5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRD
YWxsRnJhbWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4K
ICNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Cisj
aW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC04
Niw3ICs4NiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFJlY29yZGluZ0RhdGEoKTsKICAg
ICBib29sIGhhc1JlY29yZGluZ0RhdGEoKSBjb25zdDsKICAgICBib29sIGN1cnJlbnRGcmFtZUhh
c0RhdGEoKSBjb25zdDsKLSAgICB2b2lkIHJlY29yZEFjdGlvbihjb25zdCBTdHJpbmcmLCBzdGQ6
OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7CisK
KyAgICAvLyBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyCisjZGVmaW5lIFBST0NFU1NfQVJHVU1F
TlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCisgICAgT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChBcmd1bWVu
dFR5cGUpOyBcCisvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgorICAgIEZP
Ul9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdV
TUVOVF9ERUNMQVJBVElPTikKKyN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCisg
ICAgdm9pZCByZWNvcmRBY3Rpb24oU3RyaW5nJiYsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50cyYmID0geyB9KTsKIAogICAgIFJlZjxKU09OOjpBcnJheU9mPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+PiByZWxlYXNlRnJhbWVzKCkgeyBy
ZXR1cm4gbV9mcmFtZXMucmVsZWFzZU5vbk51bGwoKTsgfQogCkBAIC0xMzcsOSArMTQ0LDEwIEBA
IHByaXZhdGU6CiAgICAgPjsKIAogICAgIGludCBpbmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZh
cmlhbnQpOworICAgIFJlZjxKU09OOjpWYWx1ZT4gdmFsdWVJbmRleEZvckRhdGEoRHVwbGljYXRl
RGF0YVZhcmlhbnQpOwogICAgIFN0cmluZyBzdHJpbmdJbmRleEZvcktleShjb25zdCBTdHJpbmcm
KTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+
IGJ1aWxkSW5pdGlhbFN0YXRlKCk7Ci0gICAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+
PiBidWlsZEFjdGlvbihjb25zdCBTdHJpbmcmLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3Jk
Q2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7CisgICAgUmVmPEpTT046OkFycmF5T2Y8SlNP
Tjo6VmFsdWU+PiBidWlsZEFjdGlvbihTdHJpbmcmJiwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnRzJiYgPSB7IH0pOwogICAgIFJlZjxKU09OOjpBcnJheU9mPEpT
T046OlZhbHVlPj4gYnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbnN0IENhbnZhc0dyYWRp
ZW50Jik7CiAgICAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9y
Q2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJik7CiAgICAgUmVmPEpTT046OkFycmF5
T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0YSYp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMDk1ZTYzNTlmNGQ5MGU2NjMzZjEwMWYyMDkzZTY5
MTkyNGZjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
ci5oIgorCisjaW5jbHVkZSAiQ2FudmFzQmFzZS5oIgorI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50
LmgiCisjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgorI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKKyNpbmNs
dWRlICJET01NYXRyaXgyREluaXQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVkZSAi
SFRNTENhbnZhc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2luY2x1
ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUgIk9m
ZnNjcmVlbkNhbnZhcy5oIgorI2luY2x1ZGUgIlBhdGgyRC5oIgorI2luY2x1ZGUgIlJlY29yZGlu
Z1N3aXp6bGVUeXBlLmgiCisjaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKKyNpbmNs
dWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIK
KyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgi
CisjaW5jbHVkZSAiV2ViR0xRdWVyeS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgi
CisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgorI2luY2x1ZGUgIldlYkdM
U2FtcGxlci5oIgorI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAiV2ViR0xTeW5j
LmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjay5oIgorI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCisjaW5jbHVkZSAi
V2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMuaD4KKyNpbmNsdWRlIDx3dGYvT3B0
aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEluc3BlY3RvckNhbnZhc0FnZW50
KiBlbmFibGVkQ2FudmFzQWdlbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVy
aW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHVibGlj
OjpoYXNGcm9udGVuZHMoKSk7CisKKyAgICBhdXRvKiBhZ2VudHMgPSBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHMoY2FudmFzUmVuZGVyaW5nQ29udGV4dC5jYW52
YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoYWdlbnRzKTsK
KyAgICBpZiAoIWFnZW50cykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NFUlQo
YWdlbnRzLT5lbmFibGVkQ2FudmFzQWdlbnQoKSk7CisgICAgcmV0dXJuIGFnZW50cy0+ZW5hYmxl
ZENhbnZhc0FnZW50KCk7Cit9CisKKyNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9O
KEFyZ3VtZW50VHlwZSkgXAorT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVu
dChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBBcmd1bWVu
dFR5cGUgYXJndW1lbnQpIFwKK3sgXAorICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGVuYWJs
ZWRDYW52YXNBZ2VudChjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkgXAorICAgICAgICByZXR1cm4g
Y2FudmFzQWdlbnQtPnByb2Nlc3NBcmd1bWVudChjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBhcmd1
bWVudCk7IFwKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OyBcCit9IFwKKy8vIGVuZCBvZiBQUk9D
RVNTX0FSR1VNRU5UX0RFRklOSVRJT04KKyAgICBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NB
TExfVFJBQ0VSX0FSR1VNRU5UKFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTikKKyN1bmRlZiBQ
Uk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04KKwordm9pZCBJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpyZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgU3RyaW5nJiYgbmFtZSwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnRzJiYgYXJndW1lbnRzKQoreworICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9
IGVuYWJsZWRDYW52YXNBZ2VudChjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkKKyAgICAgICAgY2Fu
dmFzQWdlbnQtPnJlY29yZEFjdGlvbihjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBXVEZNb3ZlKG5h
bWUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
cHJvY2Vzc0FyZ3VtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCB1
aW50MzJfdCBhcmd1bWVudCkKK3sKKyAgICBBU1NFUlQoY2FudmFzRWxlbWVudC5yZW5kZXJpbmdD
b250ZXh0KCkpOworICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoKmNhbnZhc0VsZW1lbnQucmVu
ZGVyaW5nQ29udGV4dCgpLCBhcmd1bWVudCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6cmVjb3JkQWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVt
ZW50LCBTdHJpbmcmJiBuYW1lLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudHMmJiBhcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGNhbnZhc0VsZW1lbnQucmVuZGVy
aW5nQ29udGV4dCgpKTsKKyAgICByZWNvcmRBY3Rpb24oKmNhbnZhc0VsZW1lbnQucmVuZGVyaW5n
Q29udGV4dCgpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWU3ODNkYThkNTE5NjBjMjQz
NmJmOWQ1MzZkNTRkNWUyMzA2MzA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaApAQCAtMCwwICsxLDIwOCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQmFzZS5oIgorI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNs
dWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvVHlwZWRBcnJheXMuaD4KKyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1ZGUg
PHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8
d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9X
VEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyOworY2xh
c3MgQXJyYXlCdWZmZXJWaWV3OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBDYW52YXNHcmFkaWVudDsKK2NsYXNzIENhbnZhc1BhdHRlcm47Citj
bGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhUTUxD
YW52YXNFbGVtZW50OworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKK2NsYXNzIEhUTUxWaWRlb0Vs
ZW1lbnQ7CitjbGFzcyBJbWFnZUJpdG1hcDsKK2NsYXNzIEltYWdlRGF0YTsKK2NsYXNzIE9mZnNj
cmVlbkNhbnZhczsKK2NsYXNzIFBhdGgyRDsKK2NsYXNzIFR5cGVkT01DU1NJbWFnZVZhbHVlOwor
Y2xhc3MgV2ViR0xCdWZmZXI7CitjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOworY2xhc3MgV2ViR0xQ
cm9ncmFtOworY2xhc3MgV2ViR0xRdWVyeTsKK2NsYXNzIFdlYkdMUmVuZGVyYnVmZmVyOworY2xh
c3MgV2ViR0xTYW1wbGVyOworY2xhc3MgV2ViR0xTaGFkZXI7CitjbGFzcyBXZWJHTFN5bmM7Citj
bGFzcyBXZWJHTFRleHR1cmU7CitjbGFzcyBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOworY2xhc3Mg
V2ViR0xVbmlmb3JtTG9jYXRpb247CitjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0Oworc3Ry
dWN0IERPTU1hdHJpeDJESW5pdDsKK2VudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5cGUgOiBp
bnQ7CitlbnVtIGNsYXNzIENhbnZhc0RpcmVjdGlvbjsKK2VudW0gY2xhc3MgQ2FudmFzRmlsbFJ1
bGU7CitlbnVtIGNsYXNzIENhbnZhc0xpbmVDYXA7CitlbnVtIGNsYXNzIENhbnZhc0xpbmVKb2lu
OworZW51bSBjbGFzcyBDYW52YXNUZXh0QWxpZ247CitlbnVtIGNsYXNzIENhbnZhc1RleHRCYXNl
bGluZTsKK2VudW0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OworCisjaWYgRU5BQkxFKENTU19UWVBF
RF9PTSkKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9DU1Nf
VFlQRURfT01fQVJHVU1FTlQobWFjcm8pIFwKKyAgICBtYWNybyhSZWZQdHI8VHlwZWRPTUNTU0lt
YWdlVmFsdWU+JikgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9U
UkFDRVJfQ1NTX1RZUEVEX09NX0FSR1VNRU5UCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9JTlNQ
RUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0NTU19UWVBFRF9PTV9BUkdVTUVOVChtYWNybykKKyNl
bmRpZiAvLyBFTkFCTEUoQ1NTX1RZUEVEX09NKQorCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5W
QVMpCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfT0ZGU0NS
RUVOX0NBTlZBU19BUkdVTUVOVChtYWNybykgXAorICAgIG1hY3JvKFJlZlB0cjxPZmZzY3JlZW5D
YW52YXM+JikgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFD
RVJfT0ZGU0NSRUVOX0NBTlZBU19BUkdVTUVOVAorI2Vsc2UKKyNkZWZpbmUgRk9SX0VBQ0hfSU5T
UEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9PRkZTQ1JFRU5fQ0FOVkFTX0FSR1VNRU5UKG1hY3Jv
KQorI2VuZGlmIC8vIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorCisjaWYgRU5BQkxFKFZJREVP
KQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1ZJREVPX0FS
R1VNRU5UKG1hY3JvKSBcCisgICAgbWFjcm8oUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+JikgXAor
Ly8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfVklERU9fQVJH
VU1FTlQKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFD
RVJfVklERU9fQVJHVU1FTlQobWFjcm8pCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQorCisjaWYg
RU5BQkxFKFdFQkdMKQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJB
Q0VSX1dFQkdMX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgbWFjcm8oT3B0aW9uYWw8V2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4mKSBcCisgICAgbWFjcm8oT3B0aW9u
YWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JikgXAorICAgIG1h
Y3JvKFdlYkdMQnVmZmVyKikgXAorICAgIG1hY3JvKFdlYkdMRnJhbWVidWZmZXIqKSBcCisgICAg
bWFjcm8oV2ViR0xQcm9ncmFtKikgXAorICAgIG1hY3JvKFdlYkdMUXVlcnkqKSBcCisgICAgbWFj
cm8oV2ViR0xSZW5kZXJidWZmZXIqKSBcCisgICAgbWFjcm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6QnVmZmVyRGF0YVNvdXJjZSYpIFwKKyAgICBtYWNybyhXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpGbG9hdDMyTGlzdDo6VmFyaWFudFR5cGUmKSBcCisgICAgbWFjcm8oV2ViR0xSZW5k
ZXJpbmdDb250ZXh0QmFzZTo6SW50MzJMaXN0OjpWYXJpYW50VHlwZSYpIFwKKyAgICBtYWNybyhX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJjZSYpIFwKKyAgICBtYWNybyhX
ZWJHTFNhbXBsZXIqKSBcCisgICAgbWFjcm8oV2ViR0xTaGFkZXIqKSBcCisgICAgbWFjcm8oV2Vi
R0xTeW5jKikgXAorICAgIG1hY3JvKFdlYkdMVGV4dHVyZSopIFwKKyAgICBtYWNybyhXZWJHTFVu
aWZvcm1Mb2NhdGlvbiopIFwKKyAgICBtYWNybyhXZWJHTFZlcnRleEFycmF5T2JqZWN0KikgXAor
Ly8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfV0VCR0xfQVJH
VU1FTlQKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFD
RVJfV0VCR0xfQVJHVU1FTlQobWFjcm8pCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQorCisjaWYg
RU5BQkxFKFdFQkdMMikKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RS
QUNFUl9XRUJHTDJfQVJHVU1FTlQobWFjcm8pIFwKKyAgICBtYWNybyhXZWJHTFRyYW5zZm9ybUZl
ZWRiYWNrKikgXAorICAgIG1hY3JvKFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OlVpbnQzMkxpc3Q6
OlZhcmlhbnRUeXBlJikgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FM
TF9UUkFDRVJfV0VCR0wyX0FSR1VNRU5UCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNU
T1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMMl9BUkdVTUVOVChtYWNybykKKyNlbmRpZiAvLyBF
TkFCTEUoV0VCR0wyKQorCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9U
UkFDRVJfQVJHVU1FTlQobWFjcm8pIFwKKyAgICBtYWNybyhDYW52YXNEaXJlY3Rpb24pIFwKKyAg
ICBtYWNybyhDYW52YXNGaWxsUnVsZSkgXAorICAgIG1hY3JvKENhbnZhc0ltYWdlU291cmNlJikg
XAorICAgIG1hY3JvKENhbnZhc0xpbmVDYXApIFwKKyAgICBtYWNybyhDYW52YXNMaW5lSm9pbikg
XAorICAgIG1hY3JvKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OlN0eWxlVmFyaWFudCYp
IFwKKyAgICBtYWNybyhDYW52YXNUZXh0QWxpZ24pIFwKKyAgICBtYWNybyhDYW52YXNUZXh0QmFz
ZWxpbmUpIFwKKyAgICBtYWNybyhET01NYXRyaXgyREluaXQmKSBcCisgICAgbWFjcm8oRWxlbWVu
dCopIFwKKyAgICBtYWNybyhIVE1MSW1hZ2VFbGVtZW50KikgXAorICAgIG1hY3JvKEltYWdlQml0
bWFwKikgXAorICAgIG1hY3JvKEltYWdlRGF0YSopIFwKKyAgICBtYWNybyhJbWFnZVNtb290aGlu
Z1F1YWxpdHkpIFwKKyAgICBtYWNybyhPcHRpb25hbDxmbG9hdD4mKSBcCisgICAgbWFjcm8oUGF0
aDJEKikgXAorICAgIG1hY3JvKFJlZlB0cjxDYW52YXNHcmFkaWVudD4mKSBcCisgICAgbWFjcm8o
UmVmUHRyPENhbnZhc1BhdHRlcm4+JikgXAorICAgIG1hY3JvKFJlZlB0cjxIVE1MQ2FudmFzRWxl
bWVudD4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JikgXAorICAgIG1h
Y3JvKFJlZlB0cjxJbWFnZUJpdG1hcD4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEltYWdlRGF0YT4m
KSBcCisgICAgbWFjcm8oUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JikgXAorICAgIG1hY3JvKFJl
ZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEpTQzo6Rmxv
YXQzMkFycmF5PiYpIFwKKyAgICBtYWNybyhSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiYpIFwKKyAg
ICBtYWNybyhSZWZQdHI8SlNDOjpVaW50MzJBcnJheT4mKSBcCisgICAgbWFjcm8oU3RyaW5nJikg
XAorICAgIG1hY3JvKFZlY3RvcjxTdHJpbmc+JikgXAorICAgIG1hY3JvKFZlY3RvcjxmbG9hdD4m
KSBcCisgICAgbWFjcm8oVmVjdG9yPHVpbnQzMl90PiYpIFwKKyAgICBtYWNybyhWZWN0b3I8aW50
MzJfdD4mKSBcCisgICAgbWFjcm8oZG91YmxlKSBcCisgICAgbWFjcm8oZmxvYXQpIFwKKyAgICBt
YWNybyh1aW50NjRfdCkgXAorICAgIG1hY3JvKGludDY0X3QpIFwKKyAgICBtYWNybyh1aW50MzJf
dCkgXAorICAgIG1hY3JvKGludDMyX3QpIFwKKyAgICBtYWNybyh1aW50OF90KSBcCisgICAgbWFj
cm8oYm9vbCkgXAorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQ1NT
X1RZUEVEX09NX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZB
U19DQUxMX1RSQUNFUl9PRkZTQ1JFRU5fQ0FOVkFTX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgRk9S
X0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9WSURFT19BUkdVTUVOVChtYWNybykg
XAorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfV0VCR0xfQVJHVU1F
TlQobWFjcm8pIFwKKyAgICBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dF
QkdMMl9BUkdVTUVOVChtYWNybykgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5W
QVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQKKworY2xhc3MgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
ciB7CitwdWJsaWM6CisgICAgc3RydWN0IFByb2Nlc3NlZEFyZ3VtZW50IHsKKyAgICAgICAgUmVm
PEpTT046OlZhbHVlPiB2YWx1ZTsKKyAgICAgICAgUmVjb3JkaW5nU3dpenpsZVR5cGUgc3dpenps
ZVR5cGU7CisgICAgfTsKKworICAgIHVzaW5nIFByb2Nlc3NlZEFyZ3VtZW50cyA9IHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxPcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4+OworCisjZGVmaW5lIFBS
T0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCisgICAgc3RhdGljIE9w
dGlvbmFsPFByb2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCYsIEFyZ3VtZW50VHlwZSk7IFwKKy8vIGVuZCBvZiBQUk9DRVNTX0FSR1VNRU5UX0RF
Q0xBUkFUSU9OCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9BUkdV
TUVOVChQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKQorI3VuZGVmIFBST0NFU1NfQVJHVU1F
TlRfREVDTEFSQVRJT04KKworICAgIHN0YXRpYyB2b2lkIHJlY29yZEFjdGlvbihDYW52YXNSZW5k
ZXJpbmdDb250ZXh0JiwgU3RyaW5nJiYsIFByb2Nlc3NlZEFyZ3VtZW50cyYmID0geyB9KTsKKwor
ICAgIHN0YXRpYyBPcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50KGNv
bnN0IEhUTUxDYW52YXNFbGVtZW50JiwgdWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIHJlY29y
ZEFjdGlvbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYsIFN0cmluZyYmLCBQcm9jZXNzZWRBcmd1
bWVudHMmJiA9IHsgfSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmlu
ZGV4IGNlMDllNTdmMDExNDQxOWE2NzA0ZGVlNmEzNDc3NjUyMGNhZGY1OWMuLjAxMTM5MWM1ZmQx
MjEwYWQ2MGQzZWY5ZmEzMzcwNjkzZjk4NDA4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xMDc0LDEyICsx
MDc0LDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUNhbnZhc01l
bW9yeUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW4KICAgICAgICAgY2FudmFzQWdlbnQtPmRp
ZENoYW5nZUNhbnZhc01lbW9yeShjb250ZXh0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5z
dHJ1bWVudGluZ0FnZW50cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3Jk
Q2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQotewotICAgIGlmIChhdXRvKiBjYW52
YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0gICAg
ICAgIGNhbnZhc0FnZW50LT5yZWNvcmRDYW52YXNBY3Rpb24oY2FudmFzUmVuZGVyaW5nQ29udGV4
dCwgbmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZUltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCwgYm9vbCBmb3JjZURpc3BhdGNoKQogewogICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9
IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXggNTk3
OTM4Mzg1MTM5YTE5OWQyMGU4NDFhYzgwNTc2MTkzYTE5ZWQ1My4uOGNlYWE1ZGQyMjg5YTAwNWJj
ZDdiNjM5MTAxMDIxMjQzNGNjMzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzIsNyArMzIsNiBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkNhbGxUcmFjZXJU
eXBlcy5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKQEAgLTI5NSw3ICsyOTQsNiBAQCBw
dWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQ1NTQ2FudmFzQ2xpZW50Tm9kZXMoQ2Fu
dmFzQmFzZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNh
bnZhc01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgcmVj
b3JkQ2FudmFzQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7
CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNlKTsKICNpZiBFTkFCTEUo
V0VCR0wpCiAgICAgc3RhdGljIHZvaWQgZGlkRW5hYmxlRXh0ZW5zaW9uKFdlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UmLCBjb25zdCBTdHJpbmcmKTsKQEAgLTMzNyw2ICszMzUsNyBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIGJvb2wgdGltZWxpbmVBZ2VudFRyYWNraW5nKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqKTsKIAogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5n
QWdlbnRzKFBhZ2UqKTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBzdGF0aWMgdm9pZCBy
ZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAgIHN0
YXRpYyB2b2lkIHVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2Vu
dHMmKTsKQEAgLTUwNCw3ICs1MDMsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRpZENo
YW5nZUNTU0NhbnZhc0NsaWVudE5vZGVzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgQ2FudmFz
QmFzZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRleHRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAg
c3RhdGljIHZvaWQgZGlkQ2hhbmdlQ2FudmFzTWVtb3J5SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZENhbnZh
c0FjdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
LCBjb25zdCBTdHJpbmcmLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9u
VmFyaWFudD4mJiA9IHsgfSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoUmVjb3JkaW5nQ2Fu
dmFzRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0
JiwgYm9vbCBmb3JjZURpc3BhdGNoID0gZmFsc2UpOwogI2lmIEVOQUJMRShXRUJHTCkKICAgICBz
dGF0aWMgdm9pZCBkaWRFbmFibGVFeHRlbnNpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJik7CkBAIC01MzgsNyArNTM2
LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzKGNvbnN0IEZyYW1lJik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2Vu
dHMqIGluc3RydW1lbnRpbmdBZ2VudHMoY29uc3QgRnJhbWUqKTsKLSAgICBzdGF0aWMgSW5zdHJ1
bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0
Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzKERvY3VtZW50Jik7CiAgICAgc3RhdGljIEluc3RydW1lbnRp
bmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMoRG9jdW1lbnQqKTsKQEAgLTE0MjMsMTMgKzE0
MjAsNiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUNh
bnZhc01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZQogICAgICAgICBkaWRDaGFuZ2VDYW52YXNN
ZW1vcnlJbXBsKCphZ2VudHMsIGNvbnRleHQpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0
JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNv
cmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHMoY29udGV4dC5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgp
KSkKLSAgICAgICAgcmVjb3JkQ2FudmFzQWN0aW9uSW1wbCgqYWdlbnRzLCBjb250ZXh0LCBuYW1l
LCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKLX0KLQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShDYW52YXNSZW5kZXJpbmdD
b250ZXh0JiBjb250ZXh0LCBib29sIGZvcmNlRGlzcGF0Y2gpCiB7CiAgICAgRkFTVF9SRVRVUk5f
SUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9S
ZWNvcmRpbmdTd2l6emxlVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MzM4ODliNWQzOGVhZTA3NjZjZGY4
OTIxOTNjOGFkMDgxYzlhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGUuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMn
JyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
CisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICog
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKKy8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggV0kuUmVjb3JkaW5n
LlN3aXp6bGUuCitlbnVtIGNsYXNzIFJlY29yZGluZ1N3aXp6bGVUeXBlIDogaW50IHsKKyAgICBO
b25lID0gMCwKKyAgICBOdW1iZXIgPSAxLAorICAgIEJvb2xlYW4gPSAyLAorICAgIFN0cmluZyA9
IDMsCisgICAgQXJyYXkgPSA0LAorICAgIFR5cGVkQXJyYXkgPSA1LAorICAgIEltYWdlID0gNiwK
KyAgICBJbWFnZURhdGEgPSA3LAorICAgIERPTU1hdHJpeCA9IDgsCisgICAgUGF0aDJEID0gOSwK
KyAgICBDYW52YXNHcmFkaWVudCA9IDEwLAorICAgIENhbnZhc1BhdHRlcm4gPSAxMSwKKyAgICBX
ZWJHTEJ1ZmZlciA9IDEyLAorICAgIFdlYkdMRnJhbWVidWZmZXIgPSAxMywKKyAgICBXZWJHTFJl
bmRlcmJ1ZmZlciA9IDE0LAorICAgIFdlYkdMVGV4dHVyZSA9IDE1LAorICAgIFdlYkdMU2hhZGVy
ID0gMTYsCisgICAgV2ViR0xQcm9ncmFtID0gMTcsCisgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24g
PSAxOCwKKyAgICBJbWFnZUJpdG1hcCA9IDE5LAorICAgIFdlYkdMUXVlcnkgPSAyMCwKKyAgICBX
ZWJHTFNhbXBsZXIgPSAyMSwKKyAgICBXZWJHTFN5bmMgPSAyMiwKKyAgICBXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrID0gMjMsCisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCA9IDI0LAorfTsKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1JlY29yZGluZ1N3aXp6bGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Jl
Y29yZGluZ1N3aXp6bGVUeXBlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzQ1
ZTg0NjQxNWVhYWY1NTE2OGVjYzMyNzEyZTg1N2IwMjVmYTA4Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9SZWNv
cmRpbmdTd2l6emxlVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBXSS5SZWNv
cmRpbmcuU3dpenpsZS4KLWVudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5cGVzIDogaW50IHsK
LSAgICBOb25lID0gMCwKLSAgICBOdW1iZXIgPSAxLAotICAgIEJvb2xlYW4gPSAyLAotICAgIFN0
cmluZyA9IDMsCi0gICAgQXJyYXkgPSA0LAotICAgIFR5cGVkQXJyYXkgPSA1LAotICAgIEltYWdl
ID0gNiwKLSAgICBJbWFnZURhdGEgPSA3LAotICAgIERPTU1hdHJpeCA9IDgsCi0gICAgUGF0aDJE
ID0gOSwKLSAgICBDYW52YXNHcmFkaWVudCA9IDEwLAotICAgIENhbnZhc1BhdHRlcm4gPSAxMSwK
LSAgICBXZWJHTEJ1ZmZlciA9IDEyLAotICAgIFdlYkdMRnJhbWVidWZmZXIgPSAxMywKLSAgICBX
ZWJHTFJlbmRlcmJ1ZmZlciA9IDE0LAotICAgIFdlYkdMVGV4dHVyZSA9IDE1LAotICAgIFdlYkdM
U2hhZGVyID0gMTYsCi0gICAgV2ViR0xQcm9ncmFtID0gMTcsCi0gICAgV2ViR0xVbmlmb3JtTG9j
YXRpb24gPSAxOCwKLSAgICBJbWFnZUJpdG1hcCA9IDE5LAotICAgIFdlYkdMUXVlcnkgPSAyMCwK
LSAgICBXZWJHTFNhbXBsZXIgPSAyMSwKLSAgICBXZWJHTFN5bmMgPSAyMiwKLSAgICBXZWJHTFRy
YW5zZm9ybUZlZWRiYWNrID0gMjMsCi0gICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCA9IDI0LAot
fTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA1ZTU2NWIz
ZDYxNzM3Y2RhMWFhMGVjZjYxYTZiNzA5NWZkMWEwZWVjLi4yYmQ2ZTRjNDg4NDdhNmU3YmJlNDc1
YTc1NTJlYTBlZmJmZDU3NDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtMjYsNTYgKzI2LDY5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQuaCIK
IAorI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKKyNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgor
I2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVkZSAi
RE9NTWF0cml4MkRJbml0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNs
dWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIK
KyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXBSZW5k
ZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRE9NQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiT2Zmc2NyZWVu
Q2FudmFzLmgiCisjaW5jbHVkZSAiUGF0aDJELmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUuaCIK
ICNpbmNsdWRlICJTdHJpbmdBZGFwdG9ycy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lk
ZW50aWZpZXJzRmFjdG9yeS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2Ny
aXB0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+Ci0j
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5oPgot
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLSNp
ZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKLSNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIK
LSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIlR5cGVkT01DU1NJbWFnZVZh
bHVlLmgiCisjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldl
YkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldl
YkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIldlYkdMUXVlcnkuaCIKKyNpbmNsdWRlICJXZWJHTFJl
bmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdF
QkdMMikKLSNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiR1BVQ2FudmFzQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkdMU2FtcGxlci5oIgorI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAiV2Vi
R0xTeW5jLmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjay5oIgorI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCisjaW5j
bHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkdQVUNvbXB1dGVQ
aXBlbGluZS5oIgogI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgogI2luY2x1ZGUgIldlYkdQVVBp
cGVsaW5lLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKICNpbmNsdWRlICJX
ZWJHUFVTd2FwQ2hhaW4uaCIKLSNlbmRpZgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CisjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JQcm90b2NvbE9iamVjdHMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxp
bmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3Rm
L0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Cisj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApA
QCAtMjg5LDcgKzMwMiw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3Rv
ckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2NvCiAgICAgaWYgKCFjb250
ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwog
Ci0gICAgaWYgKGNvbnRleHQtPmNhbGxUcmFjaW5nQWN0aXZlKCkpCisgICAgaWYgKGNvbnRleHQt
Pmhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSkKICAgICAgICAgcmV0dXJuIG1h
a2VVbmV4cGVjdGVkKCJBbHJlYWR5IHJlY29yZGluZyBjYW52YXMiX3MpOwogCiAgICAgUmVjb3Jk
aW5nT3B0aW9ucyByZWNvcmRpbmdPcHRpb25zOwpAQCAtMzE2LDcgKzMyOSw3IEBAIFByb3RvY29s
OjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3JkaW5n
KGNvbnN0IFByb3RvY29sCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVu
ZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogCi0gICAgaWYgKCFjb250ZXh0LT5jYWxsVHJh
Y2luZ0FjdGl2ZSgpKQorICAgIGlmICghY29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcigpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCByZWNvcmRp
bmcgY2FudmFzIl9zKTsKIAogICAgIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKCpjb250
ZXh0LCB0cnVlKTsKQEAgLTQ2Miw1MyArNDc1LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6ZGlkQ2hhbmdlQ2FudmFzTWVtb3J5KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQK
ICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNhbnZhc01lbW9yeUNoYW5nZWQoaW5zcGVj
dG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIG5vZGUtPm1lbW9yeUNvc3QoKSk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdD
b250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMp
Ci17Ci0gICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGNhbnZh
c1JlbmRlcmluZ0NvbnRleHQpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOwotICAgIGlm
ICghaW5zcGVjdG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoY2FudmFz
UmVuZGVyaW5nQ29udGV4dC5jYWxsVHJhY2luZ0FjdGl2ZSgpKTsKLSAgICBpZiAoIWNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY2FsbFRyYWNpbmdBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgLy8gT25seSBlbnF1ZXVlIG9uZSBtaWNyb3Rhc2sgZm9yIGFsbCBhY3RpdmVseSByZWNvcmRp
bmcgY2FudmFzZXMuCi0gICAgaWYgKG1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnMuaXNFbXB0
eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gaW5zcGVj
dG9yQ2FudmFzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAgICAgIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlTWljcm90YXNrKFt3ZWFrVGhpcyA9
IG1ha2VXZWFrUHRyKCp0aGlzKV0gewotICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0g
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGF1dG8mIGNhbnZh
c0FnZW50ID0gKndlYWtUaGlzOwotCi0gICAgICAgICAgICAgICAgYXV0byBpZGVudGlmaWVycyA9
IGNvcHlUb1ZlY3RvcihjYW52YXNBZ2VudC5tX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzKTsK
LSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykgewot
ICAgICAgICAgICAgICAgICAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IGNhbnZhc0FnZW50Lm1f
aWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLmdldChpZGVudGlmaWVyKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCi0gICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBhdXRvKiBjYW52YXNSZW5kZXJpbmdDb250
ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7Ci0gICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAg
Ly8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENh
bnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCi0KLSAgICAg
ICAgICAgICAgICAgICAgaWYgKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQtPmNhbGxUcmFjaW5nQWN0
aXZlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNBZ2VudC5kaWRGaW5pc2hSZWNv
cmRpbmdDYW52YXNGcmFtZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7Ci0gICAgICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAgICAgY2FudmFzQWdlbnQubV9yZWNvcmRpbmdDYW52YXNJZGVu
dGlmaWVycy5jbGVhcigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAg
ICBtX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmFkZChpbnNwZWN0b3JDYW52YXMtPmlkZW50
aWZpZXIoKSk7Ci0KLSAgICBpbnNwZWN0b3JDYW52YXMtPnJlY29yZEFjdGlvbihuYW1lLCBXVEZN
b3ZlKHBhcmFtZXRlcnMpKTsKLQotICAgIGlmICghaW5zcGVjdG9yQ2FudmFzLT5oYXNCdWZmZXJT
cGFjZSgpKQotICAgICAgICBkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShjYW52YXNSZW5k
ZXJpbmdDb250ZXh0LCB0cnVlKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2Fu
dmFzQ2hhbmdlZChDYW52YXNCYXNlJiBjYW52YXNCYXNlLCBjb25zdCBGbG9hdFJlY3QmKQogewog
ICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNlLnJlbmRlcmluZ0NvbnRleHQoKTsKQEAgLTUz
OSw3ICs1MDUsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpjYW52YXNEZXN0cm95ZWQo
Q2FudmFzQmFzZSYgY2FudmFzQmFzZSkKIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlk
RmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4
dCwgYm9vbCBmb3JjZURpc3BhdGNoKQogewotICAgIGlmICghY29udGV4dC5jYWxsVHJhY2luZ0Fj
dGl2ZSgpKQorICAgIGlmICghY29udGV4dC5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gZmlu
ZEluc3BlY3RvckNhbnZhcyhjb250ZXh0KTsKQEAgLTcxNSw2ICs2ODEsNjAgQEAgdm9pZCBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGlu
ZSYgcGlwZWxpbmUpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAorI2RlZmluZSBQUk9D
RVNTX0FSR1VNRU5UX0RFRklOSVRJT04oQXJndW1lbnRUeXBlKSBcCitPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQWdl
bnQ6OnByb2Nlc3NBcmd1bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJp
bmdDb250ZXh0LCBBcmd1bWVudFR5cGUgYXJndW1lbnQpIFwKK3sgXAorICAgIGF1dG8gaW5zcGVj
dG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsg
XAorICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOyBcCisgICAgcmV0dXJuIGluc3BlY3RvckNh
bnZhcy0+cHJvY2Vzc0FyZ3VtZW50KGFyZ3VtZW50KTsgXAorfSBcCisvLyBlbmQgb2YgUFJPQ0VT
U19BUkdVTUVOVF9ERUZJTklUSU9OCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxM
X1RSQUNFUl9BUkdVTUVOVChQUk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04pCisjdW5kZWYgUFJP
Q0VTU19BUkdVTUVOVF9ERUZJTklUSU9OCisKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJl
Y29yZEFjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0
LCBTdHJpbmcmJiBuYW1lLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudHMmJiBhcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQu
aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKTsKKworICAgIGF1dG8gaW5zcGVj
dG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsK
KyAgICBBU1NFUlQoaW5zcGVjdG9yQ2FudmFzKTsKKworICAgIC8vIE9ubHkgZW5xdWV1ZSBvbmUg
bWljcm90YXNrIGZvciBhbGwgYWN0aXZlbHkgcmVjb3JkaW5nIGNhbnZhc2VzLgorICAgIGlmICht
X3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoYXV0
byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5ldmVu
dExvb3AoKS5xdWV1ZU1pY3JvdGFzayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsK
KyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgICAgICBhdXRvJiBjYW52YXNBZ2VudCA9ICp3ZWFrVGhpczsKKwor
ICAgICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3IoY2FudmFzQWdl
bnQubV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycyk7CisgICAgICAgICAgICAgICAgZm9yIChh
dXRvJiBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0
byBpbnNwZWN0b3JDYW52YXMgPSBjYW52YXNBZ2VudC5tX2lkZW50aWZpZXJUb0luc3BlY3RvckNh
bnZhcy5nZXQoaWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgICAgIGlmICghaW5zcGVjdG9y
Q2FudmFzKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAg
ICAgICAgICAgYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+
Y2FudmFzQ29udGV4dCgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FudmFzUmVuZGVy
aW5nQ29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJl
Y29yZGluZ3MgZm9yIFdlYkdQVURldmljZQorCisgICAgICAgICAgICAgICAgICAgIGlmIChjYW52
YXNSZW5kZXJpbmdDb250ZXh0LT5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkp
CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNBZ2VudC5kaWRGaW5pc2hSZWNvcmRpbmdD
YW52YXNGcmFtZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQubV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVy
cy5jbGVhcigpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBtX3Jl
Y29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmFkZChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZpZXIo
KSk7CisKKyAgICBpbnNwZWN0b3JDYW52YXMtPnJlY29yZEFjdGlvbihXVEZNb3ZlKG5hbWUpLCBX
VEZNb3ZlKGFyZ3VtZW50cykpOworCisgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMtPmhhc0J1ZmZl
clNwYWNlKCkpCisgICAgICAgIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKGNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQsIHRydWUpOworfQorCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50Ojpz
dGFydFJlY29yZGluZyhJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcywgUHJvdG9jb2w6
OlJlY29yZGluZzo6SW5pdGlhdG9yIGluaXRpYXRvciwgUmVjb3JkaW5nT3B0aW9ucyYmIHJlY29y
ZGluZ09wdGlvbnMpCiB7CiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy5jYW52
YXNDb250ZXh0KCk7CkBAIC03MzIsNyArNzUyLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2Vu
dDo6c3RhcnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMsIFByb3QK
ICAgICApCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT5jYWxsVHJhY2luZ0Fj
dGl2ZSgpKQorICAgIGlmIChjb250ZXh0LT5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGluc3BlY3RvckNhbnZhcy5yZXNldFJlY29y
ZGluZ0RhdGEoKTsKQEAgLTc0Miw3ICs3NjIsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpzdGFydFJlY29yZGluZyhJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcywgUHJvdAog
ICAgICAgICBpbnNwZWN0b3JDYW52YXMuc2V0QnVmZmVyTGltaXQocmVjb3JkaW5nT3B0aW9ucy5t
ZW1vcnlMaW1pdC52YWx1ZSgpKTsKICAgICBpZiAocmVjb3JkaW5nT3B0aW9ucy5uYW1lKQogICAg
ICAgICBpbnNwZWN0b3JDYW52YXMuc2V0UmVjb3JkaW5nTmFtZShyZWNvcmRpbmdPcHRpb25zLm5h
bWUudmFsdWUoKSk7Ci0gICAgY29udGV4dC0+c2V0Q2FsbFRyYWNpbmdBY3RpdmUodHJ1ZSk7Cisg
ICAgY29udGV4dC0+c2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcih0cnVlKTsK
IAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZWNvcmRpbmdTdGFydGVkKGluc3BlY3RvckNh
bnZhcy5pZGVudGlmaWVyKCksIGluaXRpYXRvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggODZiZGI1
MTI1NjlhMzExZjdhMjUwODk1ZThmZmJjOWRkOWViY2RjMC4uNTBiMzM2Yzg5YjY2YTVhY2RmY2Fk
YzZkMWM3NDk1OWZmZDdlMzc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtMjUsMTYgKzI1LDE4IEBACiAK
ICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbFRyYWNlclR5cGVzLmgiCiAjaW5jbHVkZSAi
Q2FudmFzQmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhcy5oIgorI2luY2x1ZGUgIklu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJh
c2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0Pgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5j
bHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAog
bmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CkBAIC05
OCw3ICsxMDAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VDU1NDYW52YXNDbGllbnRO
b2RlcyhDYW52YXNCYXNlJik7CiAgICAgdm9pZCBkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250
ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2b2lkIGRpZENoYW5nZUNhbnZhc01l
bW9yeShDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgdm9pZCByZWNvcmRDYW52YXNBY3Rp
b24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6aW5pdGlhbGl6
ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKICAgICB2b2lkIGRp
ZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBib29s
IGZvcmNlRGlzcGF0Y2ggPSBmYWxzZSk7CiAgICAgdm9pZCBjb25zb2xlU3RhcnRSZWNvcmRpbmdD
YW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6
OkpTT2JqZWN0KiBvcHRpb25zKTsKICAgICB2b2lkIGNvbnNvbGVTdG9wUmVjb3JkaW5nQ2FudmFz
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKQEAgLTExNyw2ICsxMTgsMTQgQEAgcHVibGljOgog
ICAgIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYpOwogI2Vu
ZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKKyAgICAvLyBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
CisjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCisg
ICAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IHByb2Nlc3NBcmd1bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgQXJndW1lbnRUeXBlKTsg
XAorLy8gZW5kIG9mIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04KKyAgICBGT1JfRUFDSF9J
TlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0FSR1VNRU5UKFBST0NFU1NfQVJHVU1FTlRfREVD
TEFSQVRJT04pCisjdW5kZWYgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgorICAgIHZvaWQg
cmVjb3JkQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBTdHJpbmcmJiwgSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnRzJiYgPSB7IH0pOworCiBwcml2YXRl
OgogICAgIHN0cnVjdCBSZWNvcmRpbmdPcHRpb25zIHsKICAgICAgICAgT3B0aW9uYWw8bG9uZz4g
ZnJhbWVDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDBhY2Y1
ZjQ4OTM1MTBjZTdmN2YzZmM1NThhN2Q1MDUzZDUxYzQyM2YuLmQxYWEzMzU0Nzg2NjBjZDhiM2Fi
ZDAyYzNiZWNjMDA5MDIwN2UxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9J
bWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNw
cApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAi
RnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkhUTUxJbWFnZUVs
ZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggZjRmZTcwZjEyNjM3M2I0MDBlNjAzNDc4ODVm
MjZmZTliZTYzM2MxNy4uOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0ZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTM1LDYgKzM1
LDcgQEAKICNpbmNsdWRlICJDYWNoZWRUZXh0VHJhY2suaCIKICNpbmNsdWRlICJDcm9zc09yaWdp
bkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhUTUxN
ZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggMDQwOTczYWJiNGIzMjY3YzM0YTM2OTNlZDgwYzBlNjAyYjY2YThlOC4u
NTg2ZDg4ZGYxODkwMzZhMDA5Yzc2NDU4YzU2MjBiNTMzYzQzNjA4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
Y3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAi
RnVsbHNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1ZGUg
IkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRy
b2xFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVjb3JkaW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1JlY29yZGluZy5qcwppbmRleCA1MTNlZjc2YWY1NjE0MjkxZTI4NjRhYWVh
NThlNzQ3YzY4YTg0ZmFmLi45NzVkODliNTNhMGVlMDQ1MTY1ZGEyYWNiZTEwYzQ5MTc4ZDMxZTlk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVjb3JkaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9SZWNvcmRpbmcuanMKQEAgLTg5OCw3ICs4OTgsNyBAQCBXSS5SZWNvcmRpbmcuVHlwZSA9
IHsKICAgICBDYW52YXNXZWJHTDI6ICJjYW52YXMtd2ViZ2wyIiwKIH07CiAKLS8vIEtlZXAgdGhp
cyBpbiBzeW5jIHdpdGggV2ViQ29yZTo6UmVjb3JkaW5nU3dpenpsZVR5cGVzLgorLy8gS2VlcCB0
aGlzIGluIHN5bmMgd2l0aCBXZWJDb3JlOjpSZWNvcmRpbmdTd2l6emxlVHlwZS4KIFdJLlJlY29y
ZGluZy5Td2l6emxlID0gewogICAgIE5vbmU6IDAsCiAgICAgTnVtYmVyOiAxLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZ0Fj
dGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZWNv
cmRpbmdBY3Rpb24uanMKaW5kZXggZjMxY2QzM2QzMjM3ZGYzYmRiNDJmMTY5MjU5NzUwNGY4MTBi
OWZlYi4uN2Q4YjMxZGQxZjc4ODBhN2ViYzhkNjgxM2M5ZDU4MTY1NjY4NzM4MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZ0Fj
dGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVjb3JkaW5nQWN0aW9uLmpzCkBAIC0zMyw3ICszMyw3IEBAIFdJLlJlY29yZGluZ0FjdGlvbiA9
IGNsYXNzIFJlY29yZGluZ0FjdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9w
YXlsb2FkUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CiAgICAgICAgIHRoaXMuX3BheWxvYWRTd2l6
emxlVHlwZXMgPSBzd2l6emxlVHlwZXM7CiAgICAgICAgIHRoaXMuX3BheWxvYWRUcmFjZSA9IHRy
YWNlOwotICAgICAgICB0aGlzLl9wYXlsb2FkU25hcHNob3QgPSBzbmFwc2hvdCB8fCAtMTsKKyAg
ICAgICAgdGhpcy5fcGF5bG9hZFNuYXBzaG90ID0gc25hcHNob3QgPz8gLTE7CiAKICAgICAgICAg
dGhpcy5fbmFtZSA9ICIiOwogICAgICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gW107CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
NGQxMmIyYjI2OGMxN2MwZmFmMDhhY2RmZDFmYWEzYTA0N2VhYWM5ZS4uMTUyODgzNzdlYzdkZTRj
ZDI1OTQ4YTA1NzU3ZDJkNzc4NDM0MWNiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIxLTAz
LTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5z
cGVjdG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wg
dG8gYmUgY3JlYXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNzI4MDU3
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5z
cGVjdG9yL2NhbnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5qczoKKyAgICAgICAgKiBp
bnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy13ZWJnbDItZnVsbC1leHBlY3RlZC50eHQ6CisgICAg
ICAgIFVzZSBhbiBhY3R1YWwgYHVuaWZvcm1gIG5hbWUgaW5zdGVhZCBvZiBhIHJhbmRvbSB0ZXN0
IHN0cmluZy4KKwogMjAyMS0wMy0wMiAgQ2hyaXMgR2FtYnJlbGwgIDxjZ2FtYnJlbGxAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtMYXlvdXRUZXN0c10gQ29udmVydCBodHRwL3Rlc3RzL3VyaSBjb252
ZXJ0IFBIUCB0byBQeXRob24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52
YXMvcmVjb3JkaW5nLXdlYmdsMi1mdWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9jYW52YXMvcmVjb3JkaW5nLXdlYmdsMi1mdWxsLWV4cGVjdGVkLnR4dAppbmRleCA3YTk1
ZTVjYjllZTAxNDBhMTM5NmVlMWQ1MjdiZmIwYmRjM2YzODlmLi5iNWFiZjQ2YzE3MDdiYmIzZGNj
NGY1MzJjODk2NDg3NDJkZTUzMDJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y2FudmFzL3JlY29yZGluZy13ZWJnbDItZnVsbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmctd2ViZ2wyLWZ1bGwtZXhwZWN0ZWQudHh0CkBA
IC01MjAsOCArNTIwLDggQEAgZnJhbWVzOgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9u
KQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICA3MjogKGR1cmF0aW9uKQotICAg
IDA6IGdldFVuaWZvcm0oMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMUHJvZ3JhbV0KKyAg
ICAwOiBnZXRVbmlmb3JtKDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFByb2dyYW0s
IFdlYkdMVW5pZm9ybUxvY2F0aW9uXQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IGdldFVuaWZv
cm0KICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKQEAgLTcyOSwxMzQgKzcyOSwxMzQg
QEAgZnJhbWVzOgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBl
eGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMDI6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMWYo
MSkKLSAgICAgIHN3aXp6bGVUeXBlczogW051bWJlcl0KKyAgICAwOiB1bmlmb3JtMWYoMCwgMSkK
KyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBOdW1iZXJdCiAgICAg
ICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTFmCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVu
Y3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEwMzogKGR1cmF0aW9u
KQotICAgIDA6IHVuaWZvcm0xZnYoMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXld
CisgICAgMDogdW5pZm9ybTFmdigwLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlm
b3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9y
bTFmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRl
RnJhbWVGdW5jdGlvbgogICAxMDQ6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMWkoMSkKLSAg
ICAgIHN3aXp6bGVUeXBlczogW051bWJlcl0KKyAgICAwOiB1bmlmb3JtMWkoMCwgMSkKKyAgICAg
IHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBOdW1iZXJdCiAgICAgICB0cmFj
ZToKICAgICAgICAgMDogdW5pZm9ybTFpCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24p
CiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEwNTogKGR1cmF0aW9uKQotICAg
IDA6IHVuaWZvcm0xaXYoMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAg
MDogdW5pZm9ybTFpdigwLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9j
YXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTFpdgog
ICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVG
dW5jdGlvbgogICAxMDY6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMmYoMSwgMikKLSAgICAg
IHN3aXp6bGVUeXBlczogW051bWJlciwgTnVtYmVyXQorICAgIDA6IHVuaWZvcm0yZigwLCAxLCAy
KQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlciwgTnVt
YmVyXQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm0yZgogICAgICAgICAxOiAoYW5v
bnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMDc6
IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMmZ2KDApCi0gICAgICBzd2l6emxlVHlwZXM6IFtU
eXBlZEFycmF5XQorICAgIDA6IHVuaWZvcm0yZnYoMCwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczog
W1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBUeXBlZEFycmF5XQogICAgICAgdHJhY2U6CiAgICAgICAg
IDA6IHVuaWZvcm0yZnYKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAgICAg
MjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTA4OiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9y
bTJpKDEsIDIpCi0gICAgICBzd2l6emxlVHlwZXM6IFtOdW1iZXIsIE51bWJlcl0KKyAgICAwOiB1
bmlmb3JtMmkoMCwgMSwgMikKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0
aW9uLCBOdW1iZXIsIE51bWJlcl0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtMmkK
ICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1l
RnVuY3Rpb24KICAgMTA5OiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybTJpdigwKQotICAgICAg
c3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0KKyAgICAwOiB1bmlmb3JtMml2KDAsIDApCisgICAg
ICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAg
IHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtMml2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVu
Y3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDExMDogKGR1cmF0aW9u
KQotICAgIDA6IHVuaWZvcm0zZigxLCAyLCAzKQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVy
LCBOdW1iZXIsIE51bWJlcl0KKyAgICAwOiB1bmlmb3JtM2YoMCwgMSwgMiwgMykKKyAgICAgIHN3
aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBOdW1iZXIsIE51bWJlciwgTnVtYmVy
XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm0zZgogICAgICAgICAxOiAoYW5vbnlt
b3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTE6IChk
dXJhdGlvbikKLSAgICAwOiB1bmlmb3JtM2Z2KDApCi0gICAgICBzd2l6emxlVHlwZXM6IFtUeXBl
ZEFycmF5XQorICAgIDA6IHVuaWZvcm0zZnYoMCwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dl
YkdMVW5pZm9ybUxvY2F0aW9uLCBUeXBlZEFycmF5XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6
IHVuaWZvcm0zZnYKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAgICAgMjog
ZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTEyOiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybTNp
KDEsIDIsIDMpCi0gICAgICBzd2l6emxlVHlwZXM6IFtOdW1iZXIsIE51bWJlciwgTnVtYmVyXQor
ICAgIDA6IHVuaWZvcm0zaSgwLCAxLCAyLCAzKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xV
bmlmb3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVyLCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAg
ICAgICAgMDogdW5pZm9ybTNpCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAg
ICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDExMzogKGR1cmF0aW9uKQotICAgIDA6IHVu
aWZvcm0zaXYoMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAgMDogdW5p
Zm9ybTNpdigwLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24s
IFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTNpdgogICAgICAg
ICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlv
bgogICAxMTQ6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtNGYoMSwgMiwgMywgNCkKLSAgICAg
IHN3aXp6bGVUeXBlczogW051bWJlciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KKyAgICAwOiB1
bmlmb3JtNGYoMCwgMSwgMiwgMywgNCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9y
bUxvY2F0aW9uLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyLCBOdW1iZXJdCiAgICAgICB0cmFjZToK
ICAgICAgICAgMDogdW5pZm9ybTRmCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAg
ICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDExNTogKGR1cmF0aW9uKQotICAgIDA6
IHVuaWZvcm00ZnYoMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAgMDog
dW5pZm9ybTRmdigwLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRp
b24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTRmdgogICAg
ICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5j
dGlvbgogICAxMTY6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtNGkoMSwgMiwgMywgNCkKLSAg
ICAgIHN3aXp6bGVUeXBlczogW051bWJlciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KKyAgICAw
OiB1bmlmb3JtNGkoMCwgMSwgMiwgMywgNCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5p
Zm9ybUxvY2F0aW9uLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyLCBOdW1iZXJdCiAgICAgICB0cmFj
ZToKICAgICAgICAgMDogdW5pZm9ybTRpCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24p
CiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDExNzogKGR1cmF0aW9uKQotICAg
IDA6IHVuaWZvcm00aXYoMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAg
MDogdW5pZm9ybTRpdigwLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9j
YXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTRpdgog
ICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVG
dW5jdGlvbgogICAxMTg6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtTWF0cml4MmZ2KHRydWUs
IDApCi0gICAgICBzd2l6emxlVHlwZXM6IFtCb29sZWFuLCBUeXBlZEFycmF5XQorICAgIDA6IHVu
aWZvcm1NYXRyaXgyZnYoMCwgdHJ1ZSwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5p
Zm9ybUxvY2F0aW9uLCBCb29sZWFuLCBUeXBlZEFycmF5XQogICAgICAgdHJhY2U6CiAgICAgICAg
IDA6IHVuaWZvcm1NYXRyaXgyZnYKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAg
ICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTE5OiAoZHVyYXRpb24pCi0gICAgMDog
dW5pZm9ybU1hdHJpeDNmdih0cnVlLCAwKQotICAgICAgc3dpenpsZVR5cGVzOiBbQm9vbGVhbiwg
VHlwZWRBcnJheV0KKyAgICAwOiB1bmlmb3JtTWF0cml4M2Z2KDAsIHRydWUsIDApCisgICAgICBz
d2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2NhdGlvbiwgQm9vbGVhbiwgVHlwZWRBcnJheV0K
ICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtTWF0cml4M2Z2CiAgICAgICAgIDE6IChh
bm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEy
MDogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm1NYXRyaXg0ZnYodHJ1ZSwgMCkKLSAgICAgIHN3
aXp6bGVUeXBlczogW0Jvb2xlYW4sIFR5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybU1hdHJpeDRm
digwLCB0cnVlLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24s
IEJvb2xlYW4sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybU1h
dHJpeDRmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5qcyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb3VyY2VzL3JlY29yZGluZy13ZWJnbDIu
anMKaW5kZXggMzE1ODhlMjk0MmIxZTlmOWMyYjQ1Yjk2ZjRmNmZmYTFiODE5MTQ0MC4uNzdiNTk4
OTdmMjkwNjhhMzg4ZTg0NTlkMmZmYmYxZDZkZGM4YjBmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5qcworKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc291cmNlcy9yZWNvcmRpbmctd2ViZ2wyLmpz
CkBAIC0yNiw3ICsyNiw3IEBAIGZ1bmN0aW9uIGxvYWQoKSB7CiAKICAgICBidWZmZXIgPSBjb250
ZXh0LmNyZWF0ZUJ1ZmZlcigpOwogICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC5jcmVhdGVGcmFt
ZWJ1ZmZlcigpOwotICAgIHVuaWZvcm1Mb2NhdGlvbiA9IGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0
aW9uKHByb2dyYW0sICJ0ZXN0Iik7CisgICAgdW5pZm9ybUxvY2F0aW9uID0gY29udGV4dC5nZXRV
bmlmb3JtTG9jYXRpb24ocHJvZ3JhbSwgInRlc3RVbmlmb3JtIik7CiAgICAgcmVuZGVyYnVmZmVy
ID0gY29udGV4dC5jcmVhdGVSZW5kZXJidWZmZXIoKTsKICAgICBzaGFkZXIgPSBjb250ZXh0LmNy
ZWF0ZVNoYWRlcihjb250ZXh0LlZFUlRFWF9TSEFERVIpOwogICAgIHRleHR1cmUgPSBjb250ZXh0
LmNyZWF0ZVRleHR1cmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422037</attachid>
            <date>2021-03-02 20:11:21 -0800</date>
            <delta_ts>2021-03-02 21:12:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222639-20210302211119.patch</filename>
            <type>text/plain</type>
            <size>144806</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdhMjFlMTQzNTc4ZjNmYmY0YjY1ZjExZGMyOTAy
OTM4ODY5MjY3MmYuLmIzMGVhNzMyMGEwMDkyZmE2MmVmNjU0Mjc0MTAzOWFjZTQ2NzQ4NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBg
UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8gYmUgY3Jl
YXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNzI4MDU3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3By
b3RvY29sL1JlY29yZGluZy5qc29uOgorICAgICAgICBEcml2ZS1ieTogQWRkIGluZm8gYWJvdXQg
YHNuYXBzaG90YCB0byB0aGUgYCJkZXNjcmlwdGlvbiJgIG9mIGAiYWN0aW9ucyJgIGluIGAiRnJh
bWUiYC4KKwogMjAyMS0wMy0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIEZsYWt5IEpTQyB0ZXN0OiBzdHJlc3Mvc2hhcmVkLWFycmF5LWJ1ZmZlci1zb3J0
LXdoaWxlLWRpZmZlcmVudC10aHJlYWQtaXMtbW9kaWZ5aW5nLmpzLmRlZmF1bHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1ZmU2YmNmNWY1YTU4MTNjMTIxYzhiM2FhZjE5MGFmZWQ0ZTBkM2ZlLi5lODBlYWM2MDM1
YzVkY2NiZDMwODBkYTc5YjAxMWRiYzU3ZTlmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEw
IEBACisyMDIxLTAzLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEg
aHVnZSBzeW1ib2wgdG8gYmUgY3JlYXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzczNzI4MDU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBvbmx5IHJlYXNvbiB0aGF0IGBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50YCBl
eGlzdHMgaXMgc28gdGhhdCB0aGUgZ2VuZXJhdGVkIElETCBjb2RlCisgICAgICAgIGNhbiBwYXNz
IGFsbCBhcmd1bWVudHMgYXQgb25jZSB0byB0aGUgZnVuY3Rpb24gZGVmaW5lZCBieSBgQ2FsbFRy
YWNpbmdDYWxsYmFja2AuIEluc3RlYWQsCisgICAgICAgIGNoYW5nZSBgQ2FsbFRyYWNpbmdDYWxs
YmFja2AgKHdoaWNoIGV4cGVjdHMgYSBgc3RhdGljYCBmdW5jdGlvbiBvbiBgQ2FsbFRyYWNlcmAp
IHRvIGJlCisgICAgICAgIGBDYWxsVHJhY2VyYCAod2hpY2ggZXhwZWN0cyBhIGBjbGFzc2ApIHNv
IHRoYXQgbW9yZSB0aGFuIG9uZSBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiB0aGUKKyAgICAgICAg
Z2VuZXJhdGVkIElETCBjb2RlIChhbmQgc28gdGhhdCBub3QgZXZlcnkgdXNhZ2UgaGFzIHRvIGJl
IHBhcnQgb2YgYENhbGxUcmFjZXIpLiBUaGVzZSBuZXcKKyAgICAgICAgZnVuY3Rpb25zIGFyZToK
KyAgICAgICAgIC0gYHByb2Nlc3NBcmd1bWVudGAsIHdoaWNoIGlzIHVzZWQgdG8gY29udmVydCB0
aGUgYXJndW1lbnQgdG8gYSBtb3JlIGdlbmVyaWMgdHlwZQorICAgICAgICAgLSBgcmVjb3JkQWN0
aW9uYCwgd2hpY2ggaXMgYmFzaWNhbGx5IHdoYXQgYENhbGxUcmFjaW5nQ2FsbGJhY2tgIHVzZWQg
dG8gYmUKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2YgYEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJg
ICh3aGljaCBpcyB3aGF0IGByZWNvcmRDYW52YXNBY3Rpb25gIHVzZWQgdG8gYmUpLAorICAgICAg
ICBgcHJvY2Vzc0FyZ3VtZW50YCBjb252ZXJ0cyB0byBhIGBzdHJ1Y3RgIG9mIGBKU09OOjpWYWx1
ZWAgYW5kIGBSZWNvcmRpbmdTd2l6emxlVHlwZWAsIHdoaWNoCisgICAgICAgIHVzZWQgdG8gaGFw
cGVuIHdheSBsYXRlciBpbiBgSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbmAgKHdoaWNoIGlz
IHdoeSB0aGVyZSB1c2VkIHRvIGJlCisgICAgICAgIGBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50
YCBhcyB0aGVyZSB3YXMgbm8gb3RoZXIgZ29vZCB3YXkgb2YgaGFuZGxpbmcgYWxsIHRoZSB2YXJp
b3VzCisgICAgICAgIGFyZ3VtZW50cyBvZiBhbGwgdGhlIHZhcmlvdXMgZnVuY3Rpb25zKS4gVGhl
IG9ubHkgZWZmZWN0IHRoYXQgdGhpcyBjaGFuZ2UgaGFzIGlzIHRoYXQgbm93CisgICAgICAgIHRo
ZSBkZWR1cGxpY2F0ZWQgYGRhdGFgIGluIHRoZSBgUmVjb3JkaW5nYCBwYXlsb2FkIG1pZ2h0IGhh
dmUgYSBkaWZmZXJlbnQgb3JkZXIsIGFzCisgICAgICAgIGFyZ3VtZW50cyBhcmUgZGVkdXBsaWNh
dGVkIGJlZm9yZSBhY3Rpb24gbmFtZXMsIGJ1dCB0aGlzIHNob3VsZG4ndCBoYXZlIGFueSBub3Rp
Y2FibGUgZWZmZWN0CisgICAgICAgIGFzIHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIGhhbmRs
ZXMgdGhlICJ1bnBhY2tpbmciIG9mIHRoZSBkZWR1cGxpY2F0ZWQgYGRhdGFgIGluIHRoZSBzYW1l
CisgICAgICAgIHdheSAoYW5kIHRoZSB0ZXN0cyBjb25maXJtIGl0KS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVBdHRy
aWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZVNl
dHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5j
dGlvbkNhbGwpOgorICAgICAgICAoR2VuZXJhdGVDYWxsVHJhY2VyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdENhbGxUcmFjZXIuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcDoKKyAgICAgICAgUmVwbGFjZSBgQ2FsbFRyYWNp
bmdDYWxsYmFja2Agd2l0aCBgQ2FsbFRyYWNlcmAKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZW5hYmxlZENhbnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
bGxUcmFjZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWxsVHJhY2VyLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlY29yZENh
bnZhc0FjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbkltcGwpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb25JbXBsKTogRGVsZXRl
ZC4KKyAgICAgICAgUmF0aGVyIHRoYW4gcGlwaW5nIHRocm91Z2ggYEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbmAgKHdoaWNoIHdvdWxkIHJlcXVpcmUgYWRkaW5nIGAjaW5jbHVkZWAKKyAgICAgICAg
Zm9yIGFsbCB0aGUgYXJndW1lbnQgdHlwZXMgaW4gdGhlIGAuaGApLCBqdXN0IHB1bGwgb3V0IHRo
ZSBgSW5zcGVjdG9yQ2FudmFzQWdlbnRgIGFuZCB1c2UgaXQKKyAgICAgICAgbG9jYWxseSBoZXJl
LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzOjpjYW52YXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
czo6cmVzZXRSZWNvcmRpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6dmFsdWVJ
bmRleEZvckRhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
YnVpbGRBY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkRmluaXNo
UmVjb3JkaW5nQ2FudmFzRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OnJlY29yZEFjdGlvbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIENyZWF0
ZSBpbmRpdmlkdWFsIGBwcm9jZXNzQXJndW1lbnRgIG1lbWJlciBmdW5jdGlvbiBmb3IgZWFjaCB0
eXBlIHVzZWQgYnkgdGhlIHZhcmlvdXMgY2FudmFzCisgICAgICAgIGNvbnRleHRzIGluc3RlYWQg
b2YgaGF2aW5nIG9uZSBnaWFudCBgV1RGOjpzd2l0Y2hPbmAgZm9yIGBSZWNvcmRDYW52YXNBY3Rp
b25WYXJpYW50YC4KKworICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6CisgICAgICAg
ICogaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgIFJlcGxhY2Ug
YENhbGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uYCB3aXRoIGBDYWxsVHJhY2Vy
PUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJgLgorCisgICAgICAgICogaHRtbC9DYW52YXNCYXNl
Lmg6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0Jhc2U6Omhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OmNhbGxUcmFjaW5nQWN0aXZlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciBjb25z
dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6c2V0
SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FsbFRyYWNpbmdBY3RpdmUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6c2V0Q2Fs
bFRyYWNpbmdBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgUmVwbGFjZSBgY2FsbFRyYWNpbmdB
Y3RpdmVgIHdpdGggYGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJgLgorCisgICAg
ICAgICogaW5zcGVjdG9yL1JlY29yZGluZ1N3aXp6bGVUeXBlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGVzLmguCisgICAgICAgIERy
aXZlLWJ5OiBSZW5hbWUgYFJlY29yZGluZ1N3aXp6bGVUeXBlc2AgdG8gYFJlY29yZGluZ1N3aXp6
bGVUeXBlYC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICBEcml2ZS1ieTogdW5pZmllZCBzb3VyY2VzIGluY2x1ZGUgZml4ZXMKKwogMjAyMS0w
My0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IFJlbW92ZSBJbXB1cmVQcm94eVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMxYjli
ODE0ODNhOTg1OGEwYjc0YTY4ZjQ4MjExYzZiZTM2ZWFkNjAuLmRiMmQwMjlhMDE4ZmQ0YWJlMjQ4
NTVhMTE2ZmNhNDI5NGQyNTI0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTAzLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2Vz
IGEgaHVnZSBzeW1ib2wgdG8gYmUgY3JlYXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzczNzI4MDU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzOgorICAg
ICAgICAoV0kuUmVjb3JkaW5nQWN0aW9uKToKKyAgICAgICAgRG9uJ3QgdXNlIGB8fGAgZm9yIHRo
ZSBmYWxsYmFjayBvZiBgX3BheWxvYWRTbmFwc2hvdGAgYXMgaXQgY2FuIGJlIGAwYC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZy5qczoKKyAgICAgICAgRHJpdmUt
Ynk6IFJlbmFtZSBgUmVjb3JkaW5nU3dpenpsZVR5cGVzYCB0byBgUmVjb3JkaW5nU3dpenpsZVR5
cGVgLgorCiAyMDIxLTAyLTI1ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gV2ViIEluc3BlY3RvcjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0
ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUmVjb3JkaW5nLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1JlY29yZGluZy5q
c29uCmluZGV4IDA0NTNkZWVkYzE0NWNmOGQyZjZhYWVhYWM5MWJjMTcxMWQxMWFiNzMuLmFjNDRl
MzI5MTViZjQwMDY4YTFiZTE4NzM5ODZjNmFkNjUzM2U5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUmVjb3JkaW5nLmpzb24KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SZWNvcmRpbmcuanNvbgpAQCAt
MzIsNyArMzIsNyBAQAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJDb250YWluZXIgb2JqZWN0IGZvciBhIHNpbmdsZSBmcmFtZSBvZiB0
aGUgcmVjb3JkaW5nLiIsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImFjdGlvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5
cGUiOiAiYW55IiB9LCAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYW4gYWN0aW9u
IG1hZGUgdG8gdGhlIHJlY29yZGVkIG9iamVjdC4gRm9sbG93cyB0aGUgc3RydWN0dXJlIFtuYW1l
LCBwYXJhbWV0ZXJzLCBzd2l6emxlVHlwZXMsIHRyYWNlXSwgd2hlcmUgbmFtZSBpcyBhIHN0cmlu
ZywgcGFyYW1ldGVycyBpcyBhbiBhcnJheSwgc3dpenpsZVR5cGVzIGlzIGFuIGFycmF5LCBhbmQg
dHJhY2UgaXMgYW4gYXJyYXkuIn0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhY3Rpb25z
IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogImFueSIgfSwgImRlc2NyaXB0
aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGFuIGFjdGlvbiBtYWRlIHRvIHRoZSByZWNvcmRlZCBv
YmplY3QuIEZvbGxvd3MgdGhlIHN0cnVjdHVyZSBbbmFtZSwgcGFyYW1ldGVycywgc3dpenpsZVR5
cGVzLCB0cmFjZSwgc25hcHNob3RdLCB3aGVyZSBuYW1lIGlzIGEgc3RyaW5nLCBwYXJhbWV0ZXJz
IGlzIGFuIGFycmF5LCBzd2l6emxlVHlwZXMgaXMgYW4gYXJyYXksIHRyYWNlIGlzIGFuIGFycmF5
LCBhbmQgc25hcHNob3QgaXMgYSBkYXRhIFVSTCBpbWFnZSBvZiB0aGUgY3VycmVudCBjb250ZW50
cyBhZnRlciB0aGlzIGFjdGlvbi4ifSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImR1cmF0
aW9uIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IlRvdGFsIGV4ZWN1dGlvbiB0aW1lIG9mIGFsbCBhY3Rpb25zIHJlY29yZGVkIGluIHRoaXMgZnJh
bWUgaW4gbWlsbGlzZWNvbmRzLiAiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbmNv
bXBsZXRlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyB3YXMgc3RvcHBlZCBiZWZvcmUg
dGhpcyBmcmFtZSBlbmRlZC4iIH0KICAgICAgICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDVm
NzJkNGZmY2U2MDczMDZmMzFhMzIzNmRmNTM5MmUyYTMyZjNkMS4uZDEyMzUxMTRlMzE3ZDkxYzAz
MmMwMTQwOGJjYWYxNTRmYmVkMWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ5MSw3ICs0OTEsNiBA
QCBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxp
dGllcy5jcHAKIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKIGJpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCi1iaW5kaW5ncy9qcy9DYWxsVHJhY2VyLmNw
cAogYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCiBiaW5kaW5ncy9qcy9ET01HQ091dHB1dENvbnN0
cmFpbnQuY3BwCiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC0xNDM4LDYgKzE0
MzcsNyBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAog
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmNwcAogaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmNwcAogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAK
K2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYz
YmNiMTk0NzQ4NDhmYjg2Mjk4MTExMGEyMjczMzE4N2M5MjdhNi4uNDA3ZjE4NTI1NzkwY2I3OGU4
NTA1Y2Q3ODBmOTg1MDZkNjkyZDMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcxNiw3ICsyNzE2LDcgQEAKIAkJOTE3NUNF
NUUyMUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE3NUNFNUEy
MUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICov
OyB9OwogCQk5MTc1Q0U1RTIxRTI4MUVEMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkxNzVDRTVBMjFFMjgxRUQwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdC5oICovOyB9OwogCQk5MUI4RjBCNTIxOTUzRDY1MDAwQzJCMDAgLyogQ2Vy
dGlmaWNhdGVTdW1tYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MUI4RjBCMzIxOTUzRDY1MDAwQzJCMDAgLyogQ2VydGlmaWNhdGVTdW1tYXJ5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTFCOTUy
MjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTFCOTUyMjIxRjU4QTU4MDAwOTMx
REMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oICovOyB9OworCQk5MUI5NTIyNDFGNThBNThG
MDA5MzFEQzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNv
cmRpbmdTd2l6emxlVHlwZS5oICovOyB9OwogCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyog
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNo
YW5nZUludGVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkxRTBEREMxMjMwQjQxRTUwMDE5RTFFMyAvKiBQYWdlRE9NRGVidWdnZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTFFMEREQkYy
MzBCNDFFNTAwMTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dlckFnZW50LmggKi87IH07CiAJCTkxRTBE
REM0MjMwQjQxRjEwMDE5RTFFMyAvKiBXb3JrZXJET01EZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MUUwRERDMjIzMEI0MUYwMDAx
OUUxRTMgLyogV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oICovOyB9OwpAQCAtMjkzOSw4ICsyOTM5
LDYgQEAKIAkJOTUwMTgzQ0QyNUQ2MzNEOTAwRDQzNDBGIC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0
ZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1
MDE4M0NCMjVENjMzRDgwMEQ0MzQwRiAvKiBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTUxREVERDIy
NUUwODQ1QTAwMjBFMUVFIC8qIEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTFERUREMDI1RTA4NDVBMDAy
MEUxRUUgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NTFERURENjI1RTA4NDlFMDAyMEUxRUUg
LyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUxREVERDQyNUUwODQ5RDAwMjBFMUVFIC8qIEpTQXBw
bGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCAqLzsgfTsKLQkJOTUyMDc2MDUxRjI2NzVGRTAwN0Qy
QUFCIC8qIENhbGxUcmFjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MjA3NjAxMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmggKi87IH07
Ci0JCTk1MjA3NjA2MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjA3NjAyMUYyNjc1Rjkw
MDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLzsgfTsKIAkJOTUyN0Q3QUIyNUQ1RkRFMjAw
QTZFMTc2IC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjdEN0E4MjVENUZERTEwMEE2RTE3NiAvKiBB
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTUyN0Q3QUYyNUQ1RkU2QzAwQTZFMTc2IC8qIEpTQXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUyN0Q3QUQyNUQ1RkU2QjAwQTZFMTc2IC8qIEpTQXBwbGVQYXlEZXRhaWxz
VXBkYXRlRGF0YS5oICovOyB9OwogCQk5NTNCQ0VCMjI1RDYyODNEMDBBNEEyQTEgLyogSlNBcHBs
ZVBheURldGFpbHNVcGRhdGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NTNCQ0VBRjI1RDYyODNDMDBBNEEyQTEgLyogSlNBcHBsZVBheURldGFp
bHNVcGRhdGVCYXNlLmggKi87IH07CkBAIC0yOTQ5LDYgKzI5NDcsNyBAQAogCQk5NTk2QjkzMzI1
REVFRUEwMDBFRDJDRkEgLyogQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5NkI5MzAyNURFRUU5
RjAwRUQyQ0ZBIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NTk2QjkzODI1REVFRjAz
MDBFRDJDRkEgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTk2QjkzNjI1REVFRjAyMDBF
RDJDRkEgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmggKi87IH07CiAJCTk1
QTFFMkU5MjVDQzc1QTkwMDI2OEM4RSAvKiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUExRTJFNzI1
Q0M3NUE4MDAyNjhDOEUgLyogTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk1QUE1NzEwMjVFRUVE
MzIwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFBNTcwRTI1RUVFRDMxMDA0RTkyODMg
LyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oICovOyB9OwogCQk5NURGOUQyNTI1MkJFREIy
MDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVERjlEMjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5
NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzBCNzI4QTE0NEZGQUM2MDBGMDBBMzcg
LyogRXZlbnRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzBCNzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMzcy
LDcgKzExMzcxLDcgQEAKIAkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8qIFdlYkdQVVBpcGVs
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxODZGM0JBMjMyOUZFNjgwMEFGRjg1NyAv
KiBHUFVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
UFVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxQjhGMEIzMjE5
NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2VydGlmaWNhdGVTdW1tYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6emxlVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjb3JkaW5nU3dpenpsZVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdT
d2l6emxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRpbmdTd2l6emxlVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0U3RhdGVDaGFuZ2VJ
bnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFFMEREQkQyMzBCNDFFNDAw
MTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VET01EZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTFFMEREQkYyMzBCNDFFNTAwMTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dl
ckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VET01EZWJ1Z2dl
ckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTc5Miw5ICsxMTc5MSw2
IEBACiAJCTk1MURFREQwMjVFMDg0NUEwMDIwRTFFRSAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9k
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVNoaXBwaW5n
TWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTFERUREMzI1RTA4
NDlDMDAyMEUxRUUgLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUxREVERDQyNUUwODQ5RDAwMjBF
MUVFIC8qIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5NTIwNzYwMDFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVHJhY2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOTUyMDc2MDExRjI2NzVGOTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhbGxUcmFjZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTI3RDdBODI1RDVGREUxMDBBNkUxNzYgLyogQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MjdEN0FBMjVENUZERTEwMEE2RTE3
NiAvKiBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTUyN0Q3QUQyNUQ1RkU2QjAwQTZFMTc2IC8qIEpTQXBwbGVQYXlEZXRhaWxzVXBkYXRl
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxlUGF5RGV0YWls
c1VwZGF0ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExODEwLDYgKzEx
ODA2LDggQEAKIAkJOTU5NkI5MzUyNURFRUYwMDAwRUQyQ0ZBIC8qIEpTQXBwbGVQYXlQYXltZW50
TWV0aG9kTW9kZVVwZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NTk2QjkzNjI1REVFRjAyMDBFRDJDRkEgLyogSlNBcHBsZVBheVBheW1l
bnRNZXRob2RNb2RlVXBkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NUExRTJFNzI1Q0M3NUE4MDAyNjhDOEUgLyogTWVkaWFDb250cm9sc0NvbnRleHRN
ZW51SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xz
Q29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1QUE1NzBE
MjVFRUVEMzAwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUFBNTcwRTI1RUVFRDMxMDA0RTky
ODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVy
aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5
Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3
NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
ODE4LDYgKzE4ODE2LDggQEAKIAkJCQk5MTA5RTlDNTIyMkNBQkM4MDBCQjYyNjQgLyogSW5zcGVj
dG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCAqLywKIAkJCQk2QTIyRTg3MjFGMTA0MkM0MDBGNTQ2
QzMgLyogSW5zcGVjdG9yQ2FudmFzLmNwcCAqLywKIAkJCQk2QTIyRTg2RjFGMTA0MTg2MDBGNTQ2
QzMgLyogSW5zcGVjdG9yQ2FudmFzLmggKi8sCisJCQkJOTVBQTU3MEQyNUVFRUQzMDAwNEU5Mjgz
IC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwICovLAorCQkJCTk1QUE1NzBFMjVFRUVE
MzEwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggKi8sCiAJCQkJMUM4MUI5
NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovLAogCQkJCTFDODFCOTU3
MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLywKIAkJCQkxQzgx
Qjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovLApAQCAtMTg4
NTUsNyArMTg4NTUsNyBAQAogCQkJCTU5QzI3RjA2MTM4RDI4Q0YwMDc5QjdFMiAvKiBOZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oICovLAogCQkJCUE1RjM2RDM4MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdl
RGVidWdnZXIuY3BwICovLAogCQkJCUE1RjM2RDM5MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlRGVi
dWdnZXIuaCAqLywKLQkJCQk5MUI5NTIyMjFGNThBNTgwMDA5MzFEQzIgLyogUmVjb3JkaW5nU3dp
enpsZVR5cGVzLmggKi8sCisJCQkJOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGlu
Z1N3aXp6bGVUeXBlLmggKi8sCiAJCQkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8q
IFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovLAogCQkJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0Ix
MCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovLApAQCAtMjcwOTIsOSArMjcwOTIsNiBA
QAogCQkJCUUzMDU5MjY1MUUyN0EzQzYwMEQ1N0M5OCAvKiBDYWNoZWRTY3JpcHRGZXRjaGVyLmNw
cCAqLywKIAkJCQlFMzA1OTI2NjFFMjdBM0M2MDBENTdDOTggLyogQ2FjaGVkU2NyaXB0RmV0Y2hl
ci5oICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlci5oICovLAotCQkJCTk1MjA3NjAwMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJh
Y2VyLmNwcCAqLywKLQkJCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5o
ICovLAotCQkJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAq
LywKIAkJCQkwRjYwRjMyOTFERkJCMTA0MDA0MTZENkMgLyogQ29tbW9uVk0uY3BwICovLAogCQkJ
CTBGNjBGMzJBMURGQkIxMDQwMDQxNkQ2QyAvKiBDb21tb25WTS5oICovLAogCQkJCTBGOURBQTBD
MUZEMUM2NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuY3BwICovLApAQCAtMzE1
MTUsOCArMzE1MTIsNiBAQAogCQkJCUU0M0FGOEU3MUFDNUI3RUMwMENBNzE3RSAvKiBDYWNoZVZh
bGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAv
KiBDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzFFOEQwMTFFRDBDMkRB
MDBCMUQ5ODMgLyogQ2FsbGJhY2tSZXN1bHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTk1MjA3NjA1
MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5NTIw
NzYwNjFGMjY3NUZFMDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFRkNDNkM4RjIwRkU5MTQ0MDBBMjMyMUIgLyogQ2FudmFzQWN0aXZpdHlSZWNvcmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMzE3MTU2MUZCMDc5RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVDREFGNTFFNkI4RjhCMDA0RjExRUUgLyogQ2FudmFz
Q2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtMzI3NDQsNiArMzI3
MzksNyBAQAogCQkJCTkxMDlFOUM4MjIyQ0FCQ0EwMEJCNjI2NCAvKiBJbnNwZWN0b3JBdWRpdFJl
c291cmNlc09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkEyMkU4NzAxRjEwNDE4NjAwRjU0
NkMzIC8qIEluc3BlY3RvckNhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQTgxRkFB
NDQ2MjAwMzdEMUU2IC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5NUFBNTcxMDI1RUVFRDMyMDA0RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3Rv
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8q
IEluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OUMyMzBBMjFGMjky
MDYwMDRFQzkzOSAvKiBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTM0MzU1LDcgKzM0MzUxLDcgQEAKIAkJCQkwNzI4ODBEMTIwMTBGMUY2MDA3MUIyNTUgLyog
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkYyMDQ5
MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTU4NjRBMDIzQkY3Q0JGMDBBMEE2MUUgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGlu
Z1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMx
REMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhF
ODBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgx
NzVENDE0QzAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0VFRTQzNjFGNUY4RjIxMDAxNEE1RjUgLyogUmVjdEVkZ2VzLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDliMDVjMzlkNTI0NjZmZGFiY2Q3MzBkMzgwYjJkMzM2YTM4YWNjNDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhbGxUcmFj
ZXIuaCIKLQotI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJI
VE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQ2FsbFRyYWNlcjo6cmVjb3JkQ2FudmFz
QWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBjb25zdCBTdHJp
bmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50
PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQg
PSBjYW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQs
IG5hbWUsIFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCi12b2lkIENhbGxUcmFjZXI6OnJlY29y
ZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52
YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgbmFtZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmQ1NzFmOWIyZDUxNjc0MjU4OTU5MGEwZTk2NGM3MWEzYTYyOTI1Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWxsVHJhY2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKLSNp
bmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7
Ci1jbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKLQotY2xhc3MgQ2FsbFRyYWNlciB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgcmVjb3JkQ2FudmFzQWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVt
ZW50JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0Fj
dGlvblZhcmlhbnQ+JiYgPSB7IH0pOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZENhbnZhc0FjdGlv
bihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXpl
cl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FsbFRyYWNlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2Vy
VHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRhZWMyM2RhOWQxMzY4N2I5
YmVmNTFhY2FmOGM5NWJlZTE2NGExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2VyVHlwZXMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgotI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKLSNpbmNsdWRlICJE
T01NYXRyaXgyREluaXQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENh
bnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgotI2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTKQotI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgotI2VuZGlmCi0j
aW5jbHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0
MzJBcnJheS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDMyQXJyYXkuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgotI2luY2x1ZGUg
IldlYkdMRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKLSNpbmNsdWRl
ICJXZWJHTFF1ZXJ5LmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKLSNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR0xTYW1wbGVyLmgi
Ci0jaW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKLSNpbmNsdWRlICJXZWJHTFN5bmMuaCIKLSNpbmNs
dWRlICJXZWJHTFRleHR1cmUuaCIKLSNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgot
I2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFdFQkdMMikKLSNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAi
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdXNpbmcgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudCA9IFZhcmlhbnQ8Ci0gICAgLy8gZW51
bQotICAgIENhbnZhc0RpcmVjdGlvbiwKLSAgICBDYW52YXNGaWxsUnVsZSwKLSAgICBDYW52YXNM
aW5lQ2FwLAotICAgIENhbnZhc0xpbmVKb2luLAotICAgIENhbnZhc1RleHRBbGlnbiwKLSAgICBD
YW52YXNUZXh0QmFzZWxpbmUsCi0gICAgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LAotCi0gICAgLy8g
c3RydWN0Ci0gICAgRE9NTWF0cml4MkRJbml0LAotCi0gICAgLy8gcG9pbnRlcgotICAgIEVsZW1l
bnQqLAotICAgIEhUTUxJbWFnZUVsZW1lbnQqLAotICAgIEltYWdlQml0bWFwKiwKLSAgICBJbWFn
ZURhdGEqLAotICAgIFBhdGgyRCosCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMQnVmZmVy
KiwKLSAgICBXZWJHTEZyYW1lYnVmZmVyKiwKLSAgICBXZWJHTFByb2dyYW0qLAotICAgIFdlYkdM
UXVlcnkqLAotICAgIFdlYkdMUmVuZGVyYnVmZmVyKiwKLSAgICBXZWJHTFNhbXBsZXIqLAotICAg
IFdlYkdMU2hhZGVyKiwKLSAgICBXZWJHTFN5bmMqLAotICAgIFdlYkdMVGV4dHVyZSosCi0gICAg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLAotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QqLAotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiwKLSNl
bmRpZgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4sCi0gICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiwKLSAgICBSZWZQdHI8Q2FudmFzUGF0dGVy
bj4sCi0gICAgUmVmUHRyPEZsb2F0MzJBcnJheT4sCi0gICAgUmVmUHRyPEhUTUxDYW52YXNFbGVt
ZW50PiwKLSAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4sCi0jaWYgRU5BQkxFKFZJREVPKQot
ICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiwKLSNlbmRpZgotICAgIFJlZlB0cjxJbWFnZUJp
dG1hcD4sCi0jaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKLSAgICBSZWZQdHI8VHlwZWRPTUNTU0lt
YWdlVmFsdWU+LAotI2VuZGlmCi0gICAgUmVmUHRyPEltYWdlRGF0YT4sCi0jaWYgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVMpCi0gICAgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4sCi0jZW5kaWYKLSAg
ICBSZWZQdHI8SW50MzJBcnJheT4sCi0gICAgUmVmUHRyPFVpbnQzMkFycmF5PiwKLQotICAgIC8v
IHZhcmlhbnQKLSAgICBDYW52YXNJbWFnZVNvdXJjZSwKLSAgICBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQsCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UsCi0gICAgT3B0aW9uYWw8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4sCi0gICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UsCi0gICAgT3B0aW9uYWw8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+LAotI2VuZGlmCi0KLSAgICAvLyBhcnJheQot
ICAgIFZlY3RvcjxTdHJpbmc+LAotICAgIFZlY3RvcjxmbG9hdD4sCi0gICAgVmVjdG9yPHVpbnQz
Ml90PiwKLSAgICBWZWN0b3I8aW50MzJfdD4sCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OkZsb2F0MzJMaXN0OjpWYXJpYW50VHlwZSwKLSAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRUeXBlLAotI2VuZGlmCi0j
aWYgRU5BQkxFKFdFQkdMMikKLSAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0
OjpWYXJpYW50VHlwZSwKLSNlbmRpZgotCi0gICAgLy8gYmFzaWMKLSAgICBTdHJpbmcsCi0gICAg
ZG91YmxlLAotICAgIGZsb2F0LAotICAgIE9wdGlvbmFsPGZsb2F0PiwKLSAgICB1aW50NjRfdCwK
LSAgICBpbnQ2NF90LAotICAgIHVpbnQzMl90LAotICAgIGludDMyX3QsCi0gICAgdWludDhfdCwK
LSAgICBib29sCi0+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGViMjA5YWRl
MTA5NmYyNGJiMzAzZGZmNjA3NWU3M2E2YmJiMDIwOTkuLmQ4NjMzZGU4NjM2YWQ5MmNlNTQ0ZjEz
OGYxMTgxZDdhZjlkMjk4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01MzU5LDEwICs1MzU5LDEwIEBAIHN1YiBHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uCiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKSB1bmxlc3Mg
JGF0dHJpYnV0ZS0+aXNTdGF0aWMgb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Rm9yd2FyZFRvTWFwTGlrZX0gb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9y
d2FyZFRvU2V0TGlrZX07CiAKICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7
Ci0gICAgICAgICAgICBteSAkY2FsbFRyYWNpbmdDYWxsYmFjayA9ICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9IHx8ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9OwotICAgICAgICAgICAgaWYgKCRj
YWxsVHJhY2luZ0NhbGxiYWNrKSB7CisgICAgICAgICAgICBteSAkY2FsbFRyYWNlciA9ICRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9IHx8ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9OworICAgICAgICAgICAgaWYgKCRjYWxsVHJh
Y2VyKSB7CiAgICAgICAgICAgICAgICAgbXkgQGNhbGxUcmFjZXJBcmd1bWVudHMgPSAoKTsKLSAg
ICAgICAgICAgICAgICBHZW5lcmF0ZUNhbGxUcmFjZXIoJG91dHB1dEFycmF5LCAkY2FsbFRyYWNp
bmdDYWxsYmFjaywgJGF0dHJpYnV0ZS0+bmFtZSwgXEBjYWxsVHJhY2VyQXJndW1lbnRzLCAiICAg
ICIpOworICAgICAgICAgICAgICAgIEdlbmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRj
YWxsVHJhY2VyLCAkYXR0cmlidXRlLT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICIgICAg
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTU3NCwxMSArNTU3NCwxMSBAQCBz
dWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbgogICAgICAgICB1bnNoaWZ0
KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJmYWxz
ZSIsICJ0aGlzT2JqZWN0IikpOwogICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRl
Q2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJmYWxzZSIsICJ0aGlzT2JqZWN0IikpOwogCi0gICAg
ICAgIG15ICRjYWxsVHJhY2luZ0NhbGxiYWNrID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja30gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja307Ci0gICAgICAgIGlmICgkY2FsbFRyYWNpbmdDYWxs
YmFjaykgeworICAgICAgICBteSAkY2FsbFRyYWNlciA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NhbGxUcmFjZXJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NhbGxUcmFjZXJ9OworICAgICAgICBpZiAoJGNhbGxUcmFjZXIpIHsKICAgICAgICAgICAgIG15
ICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAgICBteSBAY2FsbFRyYWNlckFyZ3VtZW50cyA9
ICgibmF0aXZlVmFsdWUiKTsKLSAgICAgICAgICAgIEdlbmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0
QXJyYXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkYXR0cmlidXRlLT5uYW1lLCBcQGNhbGxUcmFj
ZXJBcmd1bWVudHMsICRpbmRlbnQpOworICAgICAgICAgICAgR2VuZXJhdGVDYWxsVHJhY2VyKCRv
dXRwdXRBcnJheSwgJGNhbGxUcmFjZXIsICRhdHRyaWJ1dGUtPm5hbWUsIFxAY2FsbFRyYWNlckFy
Z3VtZW50cywgJGluZGVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBteSAkZnVuY3Rpb25TdHJp
bmcgPSAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwpA
QCAtNjcxOCwxMCArNjcxOCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9u
Q2FsbAogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgJGluZGVudCwgJGhhc1Rocm93U2NvcGUpID0gQF87CiAKLSAgICBteSAk
Y2FsbFRyYWNpbmdDYWxsYmFjayA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxUcmFjaW5nQ2FsbGJhY2t9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxUcmFjaW5nQ2FsbGJhY2t9OwotICAgIGlmICgkY2FsbFRyYWNpbmdDYWxsYmFjaykgeworICAg
IG15ICRjYWxsVHJhY2VyID0gJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRy
YWNlcn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNlcn07Cisg
ICAgaWYgKCRjYWxsVHJhY2VyKSB7CiAgICAgICAgIG15IEBjYWxsVHJhY2VyQXJndW1lbnRzID0g
bWFwIHsgJF8tPm5hbWUgfSBAeyRvcGVyYXRpb24tPmFyZ3VtZW50c307Ci0gICAgICAgIEdlbmVy
YXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkb3BlcmF0
aW9uLT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICRpbmRlbnQpOworICAgICAgICBHZW5l
cmF0ZUNhbGxUcmFjZXIoJG91dHB1dEFycmF5LCAkY2FsbFRyYWNlciwgJG9wZXJhdGlvbi0+bmFt
ZSwgXEBjYWxsVHJhY2VyQXJndW1lbnRzLCAkaW5kZW50KTsKICAgICB9CiAKICAgICBteSAkZHJ5
UnVuID0gMTsKQEAgLTgxMDYsMTQgKzgxMDYsMTQgQEAgc3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVz
SWZOZWVkZWQoKQogCiBzdWIgR2VuZXJhdGVDYWxsVHJhY2VyKCkKIHsKLSAgICBteSAoJG91dHB1
dEFycmF5LCAkY2FsbFRyYWNpbmdDYWxsYmFjaywgJG5hbWUsICRhcmd1bWVudHMsICRpbmRlbnQp
ID0gQF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNhbGxUcmFjZXIsICRuYW1lLCAkYXJndW1l
bnRzLCAkaW5kZW50KSA9IEBfOwogCi0gICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxUcmFjZXIu
aCIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCRjYWxsVHJhY2VyIC4gIi5oIik7CiAKLSAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNp
bmdBY3RpdmUoKSkpXG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiICAg
IENhbGxUcmFjZXI6OiIgLiAkY2FsbFRyYWNpbmdDYWxsYmFjayAuICIoaW1wbCwgXCIiIC4gJG5h
bWUgLiAiXCJfcyIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJpZiAoVU5M
SUtFTFkoaW1wbC5oYXNBY3RpdmUiIC4gJGNhbGxUcmFjZXIgLiAiKCkpKVxuIik7CisgICAgcHVz
aChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiAgICAiIC4gJGNhbGxUcmFjZXIgLiAiOjpyZWNv
cmRBY3Rpb24oaW1wbCwgXCIiIC4gJG5hbWUgLiAiXCJfcyIpOwogICAgIGlmIChzY2FsYXIoQCRh
cmd1bWVudHMpKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiwgeyAiIC4gam9pbigi
LCAiLCBAJGFyZ3VtZW50cykgLiAiIH0iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
LCB7ICIgLiBqb2luKCIsICIsIG1hcCB7ICRjYWxsVHJhY2VyIC4gIjo6cHJvY2Vzc0FyZ3VtZW50
KGltcGwsICIgLiAkXyAuICIpIiB9IEAkYXJndW1lbnRzKSAuICIgfSIpOwogICAgIH0KICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIpO1xuIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IDVkOTU2YWFiNjFkZTQwNjc5
YTg4YmRkMjcyOGE4ZjVmNGYyOGQ3NWUuLjJhNWFkYWQ0MmNkODFkY2RlOGE1NmI5YmY1M2RkYTJk
MTE2YzVhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCkBAIC00NSw3ICs0NSw3IEBACiAgICAgICAgICJDYWNoZWRBdHRyaWJ1
dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXQogICAg
ICAgICB9LAotICAgICAgICAiQ2FsbFRyYWNpbmdDYWxsYmFjayI6IHsKKyAgICAgICAgIkNhbGxU
cmFjZXIiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAi
YXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCiAg
ICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXggMzFlMTRlOGM4YTc1NmY0MDQy
YTMxMTA4Yjg1ZDZiOTM2MTdjMGM1ZC4uNTQyM2U4YjNjODk4MGRhYTUwYjgxMWE0MDhjOTA5MjE0
ZTgzMWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2lu
Y2x1ZGUgIkpTVGVzdENhbGxUcmFjZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgotI2luY2x1ZGUgIkNhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpA
QCAtMzksNiArMzgsOSBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIlRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyLmgiCisjaW5jbHVkZSAiVGVzdEludGVyZmFjZUNh
bGxUcmFjZXIuaCIKKyNpbmNsdWRlICJUZXN0T3BlcmF0aW9uQ2FsbFRyYWNlci5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgpAQCAtMjI3LDggKzIyOSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDYWxsVHJh
Y2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2VHZXR0ZXIoSlNHbG9iYWxPYmplCiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkp
Ci0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0
QXR0cmlidXRlSW50ZXJmYWNlIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVU
ZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFj
ZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcyk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEJvb2xlYW4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVzdEF0dHJpYnV0ZUludGVyZmFjZSgpKSkp
OwogfQogCkBAIC0yNDQsOCArMjQ2LDggQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENh
bGxUcmFjZXJfdGVzdEF0dHJpYnV0ZUludGVyZmFjZVNldHRlcihKU0dsb2JhbE9iamUKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlmIChVTkxJS0VMWShp
bXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRy
YWNlckludGVyZmFjZShpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcywgeyBuYXRpdmVW
YWx1ZSB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlv
bihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRy
YWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5hdGl2ZVZhbHVlKSB9KTsKICAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICAgcmV0dXJuIGltcGwuc2V0VGVzdEF0dHJpYnV0ZUludGVyZmFjZShXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICAgfSk7CkBAIC0yNjIsOCArMjY0LDggQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZVNwZWNpZmllZEdldHRlcihKU0dsb2Jh
bE9iamUKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxs
VHJhY2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJBdHRy
aWJ1dGUoaW1wbCwgInRlc3RBdHRyaWJ1dGVTcGVjaWZpZWQiX3MpOworICAgIGlmIChVTkxJS0VM
WShpbXBsLmhhc0FjdGl2ZVRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQorICAgICAgICBUZXN0
QXR0cmlidXRlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlU3Bl
Y2lmaWVkIl9zKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
Qm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50ZXN0QXR0cmli
dXRlU3BlY2lmaWVkKCkpKSk7CiB9CiAKQEAgLTI3OSw4ICsyODEsOCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlU3BlY2lmaWVkU2V0dGVyKEpT
R2xvYmFsT2JqZQogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxU
cmFjZXI6OnRlc3RDYWxsVHJhY2VyQXR0cmlidXRlKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lm
aWVkIl9zLCB7IG5hdGl2ZVZhbHVlIH0pOworICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2
ZVRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQorICAgICAgICBUZXN0QXR0cmlidXRlQ2FsbFRy
YWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIl9zLCB7IFRl
c3RBdHRyaWJ1dGVDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0aXZlVmFsdWUp
IH0pOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmlidXRlU3BlY2lm
aWVkKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgICB9KTsKQEAgLTI5Nyw4ICsyOTksOCBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlV2l0aFZh
cmlhbnRHZXR0ZXIoSlNHbG9iYWxPYgogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGlmIChV
TkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0
ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9z
KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNl
cigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBs
LCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9zKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLnRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudCgpKSkpOwogfQogCkBAIC0z
MTQsOCArMzE2LDggQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENhbGxUcmFjZXJfdGVz
dEF0dHJpYnV0ZVdpdGhWYXJpYW50U2V0dGVyKEpTR2xvYmFsT2IKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
VW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKLSAgICAgICAg
Q2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgInRlc3RBdHRyaWJ1dGVX
aXRoVmFyaWFudCJfcywgeyBuYXRpdmVWYWx1ZSB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5o
YXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50
Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0
aXZlVmFsdWUpIH0pOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmli
dXRlV2l0aFZhcmlhbnQoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIH0pOwpAQCAtMzQ3LDgg
KzM0OSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdB
Y3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGlt
cGwsICJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5o
YXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbkludGVyZmFjZSJf
cyk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uSW50
ZXJmYWNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTM2Niw4ICszNjgsOCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxU
cmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlck9wZXJh
dGlvbihpbXBsLCAidGVzdE9wZXJhdGlvblNwZWNpZmllZCJfcyk7CisgICAgaWYgKFVOTElLRUxZ
KGltcGwuaGFzQWN0aXZlVGVzdE9wZXJhdGlvbkNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RP
cGVyYXRpb25DYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25TcGVj
aWZpZWQiX3MpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwudGVzdE9wZXJh
dGlvblNwZWNpZmllZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0zOTYsOCArMzk4LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgyKTsKICAgICBhdXRvIGMgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFj
aW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFj
ZShpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgYSwgYiwgYyB9KTsKKyAg
ICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkK
KyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVz
dE9wZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnBy
b2Nlc3NBcmd1bWVudChpbXBsLCBhKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NB
cmd1bWVudChpbXBsLCBiKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVu
dChpbXBsLCBjKSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RP
cGVyYXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiksIFdURk1vdmUoYykp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MjAsOCAr
NDIyLDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRv
IG5vZGVOdWxsYWJsZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJu
b2RlTnVsbGFibGVBcmciLCAiVGVzdENhbGxUcmFjZXIiLCAidGVzdE9wZXJhdGlvbldpdGhOdWxs
YWJsZUFyZ3VtZW50IiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJh
Y2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZh
Y2UoaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfcywgeyBub2RlTnVs
bGFibGVBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRB
Y3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfcywgeyBUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5vZGVOdWxsYWJsZUFy
ZykgfSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9u
V2l0aE51bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQ0LDggKzQ0Niw4IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2YXJpYW50QXJn
ID0gY29udmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VM
WShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2Fs
bFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQi
X3MsIHsgdmFyaWFudEFyZyB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6
OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQiX3Ms
IHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50
QXJnKSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRp
b25XaXRoVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudEFyZykpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjgsOCArNDcwLDggQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHZhcmlhbnROdWxsYWJs
ZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQs
IElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENh
bGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0
aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50Il9zLCB7IHZhcmlhbnROdWxsYWJsZUFyZyB9KTsKKyAg
ICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkK
KyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnROdWxsYWJsZUFyZykgfSk7
CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51
bGxhYmxlVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudE51bGxhYmxlQXJnKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ5MCw4ICs0OTIsOCBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gdmFyaWFudE9wdGlvbmFs
QXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRl
cjxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJldHVyblR5
cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQs
IElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVuaW9uPElETEJvb2xlYW4s
IElETEZsb2F0LCBJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQot
ICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdE9w
ZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudCJfcywgeyB2YXJpYW50T3B0aW9uYWxB
cmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxU
cmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24o
aW1wbCwgInRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVz
dEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50T3B0aW9u
YWxBcmcpIH0pOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwudGVzdE9wZXJh
dGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFy
ZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01MTIs
OCArNTE0LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxU
cmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHZhcmlh
bnREZWZhdWx0QXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3Ry
aW5nKCkgOiBjb252ZXJ0PElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJp
bmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaWYgKFVO
TElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRl
c3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJp
YW50QXJndW1lbnQiX3MsIHsgdmFyaWFudERlZmF1bHRBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZ
KGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJ
bnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRo
RGVmYXVsdFZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJv
Y2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnREZWZhdWx0QXJnKSB9KTsKICAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1
bWVudChXVEZNb3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q2FsbFRyYWNlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxUcmFjZXIuaWRsCmluZGV4IGM0MzQ4YzczZDg5ZGYxZDcw
MjYyZWI5NDYwNDdmYzUyNDJhZTNjYTQuLjMyOTk4ZDY5N2E3YTk4ZDY0NzI3YTI4N2Q0OTVmYTM0
N2Y4MzA0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0Q2FsbFRyYWNlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RDYWxsVHJhY2VyLmlkbApAQCAtMjYsMTEgKzI2LDExIEBACiB0eXBlZGVmIChi
b29sZWFuIG9yIGZsb2F0IG9yIERPTVN0cmluZykgVmFyaWFudFR5cGU7CiAKIFsKLSAgICBDYWxs
VHJhY2luZ0NhbGxiYWNrPXRlc3RDYWxsVHJhY2VySW50ZXJmYWNlLAorICAgIENhbGxUcmFjZXI9
VGVzdEludGVyZmFjZUNhbGxUcmFjZXIsCiAgICAgRXhwb3NlZD1UZXN0R2xvYmFsT2JqZWN0CiBd
IGludGVyZmFjZSBUZXN0Q2FsbFRyYWNlciB7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0
dHJpYnV0ZUludGVyZmFjZTsKLSAgICBbQ2FsbFRyYWNpbmdDYWxsYmFjaz10ZXN0Q2FsbFRyYWNl
ckF0dHJpYnV0ZV0gYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJpYnV0ZVNwZWNpZmllZDsKKyAg
ICBbQ2FsbFRyYWNlcj1UZXN0QXR0cmlidXRlQ2FsbFRyYWNlcl0gYXR0cmlidXRlIGJvb2xlYW4g
dGVzdEF0dHJpYnV0ZVNwZWNpZmllZDsKIAogICAgIGF0dHJpYnV0ZSBWYXJpYW50VHlwZSB0ZXN0
QXR0cmlidXRlV2l0aFZhcmlhbnQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdGVz
dFJlYWRvbmx5QXR0cmlidXRlOwpAQCAtMzgsNyArMzgsNyBAQCB0eXBlZGVmIChib29sZWFuIG9y
IGZsb2F0IG9yIERPTVN0cmluZykgVmFyaWFudFR5cGU7CiAgICAgY29uc3QgYm9vbGVhbiB0ZXN0
Q29uc3RWYWx1ZSA9IGZhbHNlOwogCiAgICAgdW5kZWZpbmVkIHRlc3RPcGVyYXRpb25JbnRlcmZh
Y2UoKTsKLSAgICBbQ2FsbFRyYWNpbmdDYWxsYmFjaz10ZXN0Q2FsbFRyYWNlck9wZXJhdGlvbl0g
dW5kZWZpbmVkIHRlc3RPcGVyYXRpb25TcGVjaWZpZWQoKTsKKyAgICBbQ2FsbFRyYWNlcj1UZXN0
T3BlcmF0aW9uQ2FsbFRyYWNlcl0gdW5kZWZpbmVkIHRlc3RPcGVyYXRpb25TcGVjaWZpZWQoKTsK
IAogICAgIHVuZGVmaW5lZCB0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyhib29sZWFuIGEsIGZs
b2F0IGIsIERPTVN0cmluZyBjKTsKICAgICB1bmRlZmluZWQgdGVzdE9wZXJhdGlvbldpdGhOdWxs
YWJsZUFyZ3VtZW50KE5vZGU/IG5vZGVOdWxsYWJsZUFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmNwcAppbmRleCBlNGJiODhlMjhmOWI0NzNiZjBhNWY3YWYxZmI4ZTVjNTEyMDA1MTVkLi5l
ZDA1NjI0NmQyNTJjZjRmOGI0OGIzNzhmYmVmMDE4MTE4Y2NmNjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2FudmFzQmFzZS5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgpAQCAtMTc2LDEwICsxNzgsMTAgQEAgSGFzaFNldDxFbGVtZW50Kj4gQ2FudmFzQmFzZTo6Y3Nz
Q2FudmFzQ2xpZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIGNzc0NhbnZhc0NsaWVudHM7CiB9CiAK
LWJvb2wgQ2FudmFzQmFzZTo6Y2FsbFRyYWNpbmdBY3RpdmUoKSBjb25zdAorYm9vbCBDYW52YXNC
YXNlOjpoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QKIHsKICAgICBh
dXRvKiBjb250ZXh0ID0gcmVuZGVyaW5nQ29udGV4dCgpOwotICAgIHJldHVybiBjb250ZXh0ICYm
IGNvbnRleHQtPmNhbGxUcmFjaW5nQWN0aXZlKCk7CisgICAgcmV0dXJuIGNvbnRleHQgJiYgY29u
dGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpOwogfQogCiBSZWZQdHI8
SW1hZ2VCdWZmZXI+IENhbnZhc0Jhc2U6OnNldEltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4mJiBidWZmZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZh
c0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCmluZGV4IDUyZTAxNTYz
YTAyMjZlMmRiYzJlNjI5YTYzODY0YzcwOGU1Y2FmYzEuLjgzZmM0NjU2MmFjMmZkZTI4ZGJkN2Zj
NzllOTRkNzMzM2E1Y2U5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFz
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCkBAIC0xMDMsNyAr
MTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgPSAwOwogCi0g
ICAgYm9vbCBjYWxsVHJhY2luZ0FjdGl2ZSgpIGNvbnN0OworICAgIGJvb2wgaGFzQWN0aXZlSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgQ2FudmFzQmFzZShJbnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKaW5kZXggMmE0ODVkNjFlOGU3YmQ1YjFiZDEwYjQ5ZTc2MmUxODk0NzZjMjJiNC4u
MGU2MDBjODkzNzVkZWE5ZGNjOTUxYjQzY2Y5NWUwN2FiZWUxNmE4NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTY2NSw3ICs2NjUsNyBAQCB2b2lkIEhU
TUxDYW52YXNFbGVtZW50OjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IExh
eW91dFJlY3QmIHIpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoVU5MSUtFTFkobV9jb250
ZXh0ICYmIG1fY29udGV4dC0+Y2FsbFRyYWNpbmdBY3RpdmUoKSkpCisgICAgaWYgKFVOTElLRUxZ
KG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXIoKSkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3Jk
aW5nQ2FudmFzRnJhbWUoKm1fY29udGV4dCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
Q2FudmFzRWxlbWVudC5pZGwKaW5kZXggOWNhZTQzM2E3Nzg2N2EzZjc2MGY5ZWUyZmY1MTRmNDM3
NjJjNjhjMi4uM2JkMjUwYmY4OGMyMWY1MDk2YTZiYjg2Njc0YTkzOTQ3YzUwNjkxNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5pZGwKQEAgLTQ1LDggKzQ1LDggQEAg
dHlwZWRlZiAoCiAgICAgUmVwb3J0RXh0ZXJuYWxNZW1vcnlDb3N0LAogICAgIEV4cG9zZWQ9V2lu
ZG93CiBdIGludGVyZmFjZSBIVE1MQ2FudmFzRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKLSAgICBb
Q0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBDYWxsVHJhY2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0Fj
dGlvbl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2lkdGg7Ci0gICAgW0NFUmVhY3Rpb25zPU5v
dE5lZWRlZCwgQ2FsbFRyYWNpbmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb25dIGF0dHJpYnV0
ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBDYWxs
VHJhY2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IHdpZHRoOworICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIENhbGxUcmFjZXI9SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcl0gYXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgaGVpZ2h0OwogCiAgICAg
W0NhbGxXaXRoPUdsb2JhbE9iamVjdCwgTWF5VGhyb3dFeGNlcHRpb25dIFJlbmRlcmluZ0NvbnRl
eHQ/IGdldENvbnRleHQoRE9NU3RyaW5nIGNvbnRleHRJZCwgYW55Li4uIGFyZ3VtZW50cyk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0Nv
bnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaAppbmRleCBmMzg4NjNmNzhmZWUzZmY4OTkyOWM3NGM0N2NhMmU1MzQxOTkwMDU1Li4wMDU2
YWViOWNlNzc0YmI1Mjc4N2ZkNzY4OGU0ZWFlODA5YWM1NjRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCkBAIC03Nyw4ICs3
Nyw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgcGFpbnRSZW5kZXJpbmdSZXN1bHRzVG9D
YW52YXMoKSB7fQogICAgIHZpcnR1YWwgUGxhdGZvcm1MYXllciogcGxhdGZvcm1MYXllcigpIGNv
bnN0IHsgcmV0dXJuIDA7IH0KIAotICAgIGJvb2wgY2FsbFRyYWNpbmdBY3RpdmUoKSBjb25zdCB7
IHJldHVybiBtX2NhbGxUcmFjaW5nQWN0aXZlOyB9Ci0gICAgdm9pZCBzZXRDYWxsVHJhY2luZ0Fj
dGl2ZShib29sIGNhbGxUcmFjaW5nQWN0aXZlKSB7IG1fY2FsbFRyYWNpbmdBY3RpdmUgPSBjYWxs
VHJhY2luZ0FjdGl2ZTsgfQorICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcigpIGNvbnN0IHsgcmV0dXJuIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjsgfQorICAgIHZvaWQgc2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihib29s
IGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIpIHsgbV9oYXNBY3RpdmVJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyID0gaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjsg
fQogCiAgICAgdmlydHVhbCBib29sIGNvbXBvc2l0aW5nUmVzdWx0c05lZWRVcGRhdGluZygpIGNv
bnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIG5lZWRzUHJlcGFyYXRpb25G
b3JEaXNwbGF5KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KQEAgLTEwMSw3ICsxMDEsNyBAQCBw
cm90ZWN0ZWQ6CiAgICAgdm9pZCBjaGVja09yaWdpbihjb25zdCBVUkwmKTsKICAgICB2b2lkIGNo
ZWNrT3JpZ2luKGNvbnN0IFR5cGVkT01DU1NJbWFnZVZhbHVlJik7CiAKLSAgICBib29sIG1fY2Fs
bFRyYWNpbmdBY3RpdmUgeyBmYWxzZSB9OworICAgIGJvb2wgbV9oYXNBY3RpdmVJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyIHsgZmFsc2UgfTsKIAogcHJpdmF0ZToKICAgICBDYW52YXNCYXNlJiBt
X2NhbnZhczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNS
ZW5kZXJpbmdDb250ZXh0MkQuaWRsCmluZGV4IGM1YTk1YjNkM2JhOTk1YzBjYWJiMGY0OTM2ODVj
NTQ5NWUyNDAzM2YuLmZlZTI0NGNmZmU2YjIzMTI0YWVhOGJkNzljMDg4MWQ1MTA5OGM3ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJELmlkbApAQCAtMjcsNyArMjcsNyBAQAogICAgIEN1c3RvbUlzUmVhY2hhYmxlLAog
ICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAg
IENhbGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uLAorICAgIENhbGxUcmFjZXI9
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZh
Y2UgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEIHsKICAgICAvLyBiYWNrLXJlZmVyZW5jZSB0byB0
aGUgY2FudmFzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJp
dG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAppbmRleCBjYzM3NTZkNTE4YWFhNjVkMmRjZjU0
NDMzMDEzYmNhZDNhOWQ4NmU4Li4wZGUyYWY4NWJjNjU0YzlmZmVjMzAyZThhOGM1ZTIyYTBkYjE1
ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJl
bmRlcmluZ0NvbnRleHQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdl
Qml0bWFwUmVuZGVyaW5nQ29udGV4dC5pZGwKQEAgLTI2LDcgKzI2LDcgQEAKIFsKICAgICBFbmFi
bGVkQXRSdW50aW1lPUltYWdlQml0bWFwLAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAot
ICAgIENhbGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uLAorICAgIENhbGxUcmFj
ZXI9SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciwKIF0gaW50ZXJmYWNlIEltYWdlQml0bWFwUmVu
ZGVyaW5nQ29udGV4dCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDYW52YXNFbGVtZW50
IGNhbnZhczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2Ny
ZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKaW5kZXggODhhYTM5ZmEw
MjFhZDkwYTM1OWVjOWRkY2E4MDI0YzMzOGU1YTk5Yy4uMGE4M2ZiMzE4YzRkZTgyZDliNzBiNDZm
MGMzY2ViYzQ4YTE4NjMxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
T2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCkBAIC0z
MCw3ICszMCw3IEBACiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCiAgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCiAgICAgSlNDdXN0b21NYXJrRnVuY3Rpb24sCi0gICAgLy8gQ2FsbFRyYWNp
bmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb24sIC8vIEZJWE1FOiBPZmZzY3JlZW5DYW52YXMu
CisgICAgLy8gQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLCAvLyBGSVhNRTog
T2Zmc2NyZWVuQ2FudmFzLgogXSBpbnRlcmZhY2UgT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEIHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgT2Zmc2NyZWVuQ2FudmFzIGNhbnZhczsK
ICAgICB1bmRlZmluZWQgY29tbWl0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Y2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGFhODlkMzJiOTlmZmVkYjAz
MGFhNTMyNGQ0MTA3MjZlMTY5MGExYzQuLjlkZjM4OTVhMjk1Y2UwZDkyZWY5YmFhNjVmNThhYjAz
OGM4OTM2NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
MlJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAiUmVuZGVy
Qm94LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgogI2luY2x1ZGUgIldl
YkdMQWN0aXZlSW5mby5oIgorI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCiAjaW5jbHVkZSAiV2Vi
R0xDb21wcmVzc2VkVGV4dHVyZUFTVEMuaCIKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0
dXJlQVRDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUVUQy5oIgpAQCAtNTcs
MTQgKzU4LDE5IEBACiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZVMzVENzUkdCLmgi
CiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1JlbmRlcmVySW5mby5oIgogI2luY2x1ZGUgIldlYkdMRGVi
dWdTaGFkZXJzLmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUgIldl
YkdMTG9zZUNvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTE11bHRpRHJhdy5oIgorI2luY2x1ZGUg
IldlYkdMUHJvZ3JhbS5oIgogI2luY2x1ZGUgIldlYkdMUXVlcnkuaCIKKyNpbmNsdWRlICJXZWJH
TFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1ZGUgIldl
YkdMU3luYy5oIgogI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMVHJh
bnNmb3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgogI2lu
Y2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFy
cmF5T2JqZWN0T0VTLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvR2VuZXJpY1R5cGVkQXJy
YXlWaWV3SW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBJbmxpbmVzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVz
Lmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmlu
Z0NvbnRleHQuaWRsCmluZGV4IDIwMWM0NzE1YWVjZGI2ODc3NDQyZDVkMmQ5NWU0YjY1ZGNlM2Qz
NzIuLjNkZTkzNWUxN2ZhMTA5ZmQzN2VkNThiM2VhNzM1YjFkYTljNjNjMmMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRs
CkBAIC01OSw3ICs1OSw3IEBAIHR5cGVkZWYgKEltYWdlQml0bWFwIG9yIEltYWdlRGF0YSBvciBI
VE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNFbGVtZW50KSBUZXhJCiAgICAgSlNHZW5lcmF0
ZVRvSlNPYmplY3QsCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBFeHBvc2VkPShXaW5k
b3csV29ya2VyKSwKLSAgICBDYWxsVHJhY2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0FjdGlvbiwK
KyAgICBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIsCiBdIGludGVyZmFjZSBX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0IHsKIAogICAgIC8vIFRoZSBzcGVjaWZpY2F0aW9uIHNwbGl0
cyB0aGUgQVBJIHN1cmZhY2UgaW50byBhIFdlYkdMMlJlbmRlcmluZ0NvbnRleHRCYXNlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNw
cAppbmRleCBkNGEyM2RiODA4ZjA4NDllMjY5NzZiMTEzODg1NTE3N2M5ZTJiYTcwLi5hMjk2MDM0
MWI1MTc4MzBkZjY2ZTU2Nzk0N2E4MTdlNWJkNzNlMjZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKQEAgLTU1LDYgKzU1
LDcgQEAKICNpbmNsdWRlICJPRVNWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIlJlbmRl
ckJveC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJX
ZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMQ29sb3JCdWZmZXJGbG9hdC5oIgogI2luY2x1
ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVz
c2VkVGV4dHVyZUFUQy5oIgpAQCAtNjcsOCArNjgsMTUgQEAKICNpbmNsdWRlICJXZWJHTERlYnVn
U2hhZGVycy5oIgogI2luY2x1ZGUgIldlYkdMRGVwdGhUZXh0dXJlLmgiCiAjaW5jbHVkZSAiV2Vi
R0xEcmF3QnVmZmVycy5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRl
ICJXZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xNdWx0aURyYXcuaCIKKyNpbmNs
dWRlICJXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgorI2lu
Y2x1ZGUgIldlYkdMU2FtcGxlci5oIgorI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2luY2x1
ZGUgIldlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5
T2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKaW5kZXggYTE2ZGEyMWU5
N2M3Y2EyN2E5ZGIxZGRlYmZkZjYyNTdiY2MxYzkwYy4uNzE4MjJjNGFiNWExYzAwNDgwZjIzMDVi
OWVkN2E2MjA3YmNmNzVmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCkBAIC00Miw3ICs0Miw3IEBAIHR5cGVkZWYgKElt
YWdlQml0bWFwIG9yIEltYWdlRGF0YSBvciBIVE1MSW1hZ2VFbGVtZW50IG9yIEhUTUxDYW52YXNF
bGVtZW50KSBUZXhJCiAgICAgRG9Ob3RDaGVja0NvbnN0YW50cywKICAgICBFeHBvcnRNYWNybz1X
RUJDT1JFX0VYUE9SVCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKLSAgICBDYWxsVHJh
Y2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0FjdGlvbiwKKyAgICBDYWxsVHJhY2VyPUluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXIsCiBdIGludGVyZmFjZSBXZWJHTFJlbmRlcmluZ0NvbnRleHQgewog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHRCYXNlLmNwcAppbmRleCAwOTExYWI2ZGUxZjY3ZDY2ZjE3NTU0ZGUxNmJkNTI4
NjRlOGMwM2E5Li43YTM4NTkwNzk3NTc1YjJkNjhkZjRlZTNhZjM0NWI2MTE0ZTc1ZDg5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlLmNwcApAQCAtMTAxLDEwICsxMDEsMTQgQEAKICNpbmNsdWRlICJXZWJHTFByb2dy
YW0uaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMUmVu
ZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgogI2luY2x1ZGUgIldl
YkdMU2hhZGVyLmgiCiAjaW5jbHVkZSAiV2ViR0xTaGFkZXJQcmVjaXNpb25Gb3JtYXQuaCIKICNp
bmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNr
LmgiCiAjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKKyNpbmNsdWRlICJXZWJHTFZl
cnRleEFycmF5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5o
IgogI2luY2x1ZGUgIldlYlhSU3lzdGVtLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29u
c29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CkBA
IC03OTA3LDcgKzc5MTEsNyBAQCB2b2lkIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpZENv
bXBvc2l0ZSgpCiB7CiAgICAgbV9jb21wb3NpdGluZ1Jlc3VsdHNOZWVkVXBkYXRpbmcgPSBmYWxz
ZTsKIAotICAgIGlmIChVTkxJS0VMWShjYWxsVHJhY2luZ0FjdGl2ZSgpKSkKKyAgICBpZiAoVU5M
SUtFTFkoaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKSkKICAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZSgqdGhp
cyk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAK
aW5kZXggZTVmMjIxMGFlOTg3MzNlOTg0YWI1ODRmNmY5YTNjODQ3YjVhODA0OS4uMjMxY2Q4ZWU1
ZGZiNTEzMDU2Yzc5MzRlY2U3ZjlkNzgyYzllMDM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAKQEAgLTI4LDE0ICsyOCwxNyBAQAogCiAjaW5jbHVk
ZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiQ2FjaGVkSW1hZ2UuaCIKKyNpbmNsdWRl
ICJDYW52YXNCYXNlLmgiCiAjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKICNpbmNsdWRlICJD
YW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgogI2luY2x1ZGUgIkNvbG9yU2VyaWFs
aXphdGlvbi5oIgorI2luY2x1ZGUgIkRPTU1hdHJpeDJESW5pdC5oIgogI2luY2x1ZGUgIkRvY3Vt
ZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKKyNp
bmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5jbHVkZSAiR3JhZGllbnQuaCIKICNpbmNs
dWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIK
QEAgLTQ1LDcgKzQ4LDkgQEAKICNpbmNsdWRlICJJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQu
aCIKICNpbmNsdWRlICJJbWFnZUJ1ZmZlci5oIgogI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NQWdl
bnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJK
U0NhbnZhc0RpcmVjdGlvbi5oIgogI2luY2x1ZGUgIkpTQ2FudmFzRmlsbFJ1bGUuaCIKICNpbmNs
dWRlICJKU0NhbnZhc0xpbmVDYXAuaCIKQEAgLTU2LDM0ICs2MSw0MyBAQAogI2luY2x1ZGUgIkpT
RXhlY1N0YXRlLmgiCiAjaW5jbHVkZSAiSlNJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaCIK
ICNpbmNsdWRlICJKU0ltYWdlU21vb3RoaW5nUXVhbGl0eS5oIgorI2luY2x1ZGUgIkpTV2ViR0wy
UmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmgi
CisjaW5jbHVkZSAiSlNXZWJHUFVEZXZpY2UuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMu
aCIKICNpbmNsdWRlICJQYXRoMkQuaCIKICNpbmNsdWRlICJQYXR0ZXJuLmgiCi0jaW5jbHVkZSAi
UmVjb3JkaW5nU3dpenpsZVR5cGVzLmgiCisjaW5jbHVkZSAiUmVjb3JkaW5nU3dpenpsZVR5cGUu
aCIKICNpbmNsdWRlICJTVkdQYXRoVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRv
cnMuaCIKKyNpbmNsdWRlICJUeXBlZE9NQ1NTSW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIldlYkdM
MlJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUg
IldlYkdMRnJhbWVidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRl
ICJXZWJHTFF1ZXJ5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlLmgiCisjaW5jbHVkZSAiV2ViR0xTYW1wbGVyLmgiCisjaW5jbHVkZSAiV2ViR0xTaGFk
ZXIuaCIKKyNpbmNsdWRlICJXZWJHTFN5bmMuaCIKKyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIK
KyNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCisjaW5jbHVkZSAiV2ViR0xVbmlm
b3JtTG9jYXRpb24uaCIKKyNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCisjaW5j
bHVkZSAiV2ViR1BVRGV2aWNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZm
ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlclZpZXcuaD4KICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvVHlwZWRBcnJheXMuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLQotI2lmIEVO
QUJMRShDU1NfVFlQRURfT00pCi0jaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKLSNl
bmRpZgotCi0jaWYgRU5BQkxFKFdFQkdMKQotI2luY2x1ZGUgIkpTV2ViR0xSZW5kZXJpbmdDb250
ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCi0jZW5kaWYKLQotI2lm
IEVOQUJMRShXRUJHTDIpCi0jaW5jbHVkZSAiSlNXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCi0j
aW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUo
V0VCR1BVKQotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKLSNpbmNsdWRlICJKU1dlYkdQ
VURldmljZS5oIgotI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgotI2VuZGlmCisjaW5jbHVkZSA8
d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
YXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI3OSw3ICsyOTMsNyBAQCB2
b2lkIEluc3BlY3RvckNhbnZhczo6Y2FudmFzQ2hhbmdlZCgpCiAgICAgYXV0byogY29udGV4dCA9
IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAKLSAgICBpZiAoIWNvbnRl
eHQtPmNhbGxUcmFjaW5nQWN0aXZlKCkpCisgICAgaWYgKCFjb250ZXh0LT5oYXNBY3RpdmVJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIFNpbmNl
IDJEIGNvbnRleHRzIGFyZSBhYmxlIHRvIGJlIGZ1bGx5IHJlcHJvZHVjZWQgaW4gdGhlIGZyb250
ZW5kLCB3ZSBkb24ndCBuZWVkIHNuYXBzaG90cy4KQEAgLTMwNyw3ICszMjEsNyBAQCB2b2lkIElu
c3BlY3RvckNhbnZhczo6cmVzZXRSZWNvcmRpbmdEYXRhKCkKICAgICBBU1NFUlQoY29udGV4dCk7
CiAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0
b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCiAK
LSAgICBjb250ZXh0LT5zZXRDYWxsVHJhY2luZ0FjdGl2ZShmYWxzZSk7CisgICAgY29udGV4dC0+
c2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcihmYWxzZSk7CiB9CiAKIGJvb2wg
SW5zcGVjdG9yQ2FudmFzOjpoYXNSZWNvcmRpbmdEYXRhKCkgY29uc3QKQEAgLTMyMCw2ICszMzQs
NDQ1IEBAIGJvb2wgSW5zcGVjdG9yQ2FudmFzOjpjdXJyZW50RnJhbWVIYXNEYXRhKCkgY29uc3QK
ICAgICByZXR1cm4gISFtX2ZyYW1lczsKIH0KIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGlj
IFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvclZlY3Rvcihjb25z
dCBWZWN0b3I8VD4mIHZlY3RvcikKK3sKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxK
U09OOjpWYWx1ZT46OmNyZWF0ZSgpOworICAgIGZvciAoYXV0byYgaXRlbSA6IHZlY3RvcikKKyAg
ICAgICAgYXJyYXktPmFkZEl0ZW0oaXRlbSk7CisgICAgcmV0dXJuIGFycmF5OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzRGlyZWN0aW9uIGFyZ3VtZW50KQorewor
ICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
Zyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzRmlsbFJ1bGUgYXJndW1lbnQpCit7Cisg
ICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNJbWFnZVNvdXJjZSYgYXJndW1lbnQpCit7
CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsK
KyAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CisgICAgfSk7Cit9CisKK09w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNMaW5lQ2FwIGFyZ3VtZW50KQorewor
ICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmlu
Zyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzTGluZUpvaW4gYXJndW1lbnQpCit7Cisg
ICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5n
KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlv
bmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0
b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpT
dHlsZVZhcmlhbnQmIGFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3Vt
ZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQo
dmFsdWUpOworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2Fu
dmFzVGV4dEFsaWduIGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0
YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2Fu
dmFzVGV4dEJhc2VsaW5lIGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9y
RGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
RE9NTWF0cml4MkRJbml0JiBhcmd1bWVudCkKK3sKKyAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJy
YXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5hLnZh
bHVlT3IoMSkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmIudmFsdWVPcigwKSk7Cisg
ICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYy52YWx1ZU9yKDApKTsKKyAgICBhcnJheS0+YWRk
SXRlbShhcmd1bWVudC5kLnZhbHVlT3IoMSkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50
LmUudmFsdWVPcigwKSk7CisgICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuZi52YWx1ZU9yKDAp
KTsKKyAgICByZXR1cm4ge3sgV1RGTW92ZShhcnJheSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpE
T01NYXRyaXggfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChFbGVtZW50
KiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworCisgICAgLy8gRWxlbWVudHMgYXJlIG5vdCBzZXJpYWxpemFibGUsIHNvIGFkZCBh
IHN0cmluZyBhcyBhIHBsYWNlaG9sZGVyIHNpbmNlIHRoZSBhY3R1YWwKKyAgICAvLyBlbGVtZW50
IGNhbm5vdCBiZSByZWNvbnN0cnVjdGVkIGluIHRoZSBmcm9udGVuZC4KKyAgICByZXR1cm4ge3sg
dmFsdWVJbmRleEZvckRhdGEoIkVsZW1lbnQiX3MpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Tm9u
ZSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEhUTUxJbWFnZUVsZW1l
bnQqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6
Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVj
b3JkaW5nU3dpenpsZVR5cGU6OkltYWdlIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNz
QXJndW1lbnQoSW1hZ2VCaXRtYXAqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlQml0bWFwIH19OworfQor
CitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4g
SW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VEYXRhKiBhcmd1bWVudCkKK3sK
KyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpJbWFnZURhdGEgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChJbWFn
ZVNtb290aGluZ1F1YWxpdHkgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhG
b3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKGFyZ3VtZW50KSksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChPcHRpb25hbDxmbG9hdD4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVh
dGUoc3RhdGljX2Nhc3Q8ZG91YmxlPigqYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
Ok51bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFBhdGgyRCog
YXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYnVpbGRTdHJpbmdGcm9tUGF0
aChhcmd1bWVudC0+cGF0aCgpKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpQYXRoMkQgfX07Cit9
CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFzR3JhZGllbnQ+
JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlOjpDYW52YXNHcmFkaWVudCB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYgYXJndW1lbnQpCit7CisgICAg
aWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Q2Fu
dmFzUGF0dGVybiB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0
cjxIVE1MQ2FudmFzRWxlbWVudD4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JE
YXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkltYWdlIH19OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiBhcmd1
bWVudCkKK3sKKyAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KGFyZ3VtZW50LmdldCgpKTsKK30K
KworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxJbWFnZUJpdG1hcD4mIGFy
Z3VtZW50KQoreworICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOwor
fQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEltYWdlRGF0YT4mIGFy
Z3VtZW50KQoreworICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoYXJndW1lbnQuZ2V0KCkpOwor
fQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6QXJyYXlCdWZm
ZXI+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRp
bmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mIGFyZ3VtZW50KQoreworICAg
IGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFy
cmF5IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6
RmxvYXQzMkFycmF5PiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgw
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkgfX07Cit9CisKK09wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiYgYXJndW1lbnQpCit7
CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICBy
ZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5
cGVkQXJyYXkgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8
SlNDOjpVaW50MzJBcnJheT4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVh
dGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoU3RyaW5nJiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3Ry
aW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoVmVjdG9yPFN0cmlu
Zz4mIGFyZ3VtZW50KQoreworICAgIGF1dG8gZGVkdXBsaWNhdGVkID0gYXJndW1lbnQubWFwKFsm
XSAoY29uc3QgU3RyaW5nJiBpdGVtKSB7CisgICAgICAgIHJldHVybiBpbmRleEZvckRhdGEoaXRl
bSk7CisgICAgfSk7CisgICAgcmV0dXJuIHt7IGJ1aWxkQXJyYXlGb3JWZWN0b3IoV1RGTW92ZShk
ZWR1cGxpY2F0ZWQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxmbG9hdD4mIGFyZ3VtZW50KQorewor
ICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dp
enpsZVR5cGU6OkFycmF5IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
VmVjdG9yPHVpbnQzMl90PiYgYXJndW1lbnQpCit7CisgICAgYXV0byBtYXBwZWQgPSBhcmd1bWVu
dC5tYXAoWyZdICh1aW50MzJfdCBpdGVtKSB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxk
b3VibGU+KGl0ZW0pOworICAgIH0pOworICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9y
KG1hcHBlZCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxpbnQzMl90PiYgYXJndW1lbnQpCit7CisgICAg
YXV0byBtYXBwZWQgPSBhcmd1bWVudC5tYXAoWyZdIChpbnQzMl90IGl0ZW0pIHsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PGRvdWJsZT4oaXRlbSk7CisgICAgfSk7CisgICAgcmV0dXJuIHt7
IGJ1aWxkQXJyYXlGb3JWZWN0b3IobWFwcGVkKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkFycmF5
IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoZG91YmxlIGFyZ3VtZW50
KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGFyZ3VtZW50KSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KGZsb2F0IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3Jl
YXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
Ok51bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KHVpbnQ2NF90
IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19j
YXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsK
K30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGludDY0X3QgYXJndW1lbnQpCit7
CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihh
cmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQodWludDMyX3QgYXJndW1lbnQpCit7CisgICAgcmV0dXJu
IHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1bWVudCkpLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoaW50MzJfdCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFs
dWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpOdW1iZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudCh1
aW50OF90IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0
YXRpY19jYXN0PGludD4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9
fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGJvb2wgYXJndW1lbnQpCit7
CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoYXJndW1lbnQpLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6Qm9vbGVhbiB9fTsKK30KKworI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCisK
K09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFs
dWU+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShDU1Nf
VFlQRURfT00pCisKKyNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKworT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxPZmZzY3JlZW5DYW52YXM+JiBhcmd1bWVudCkKK3sK
KyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJl
dHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpJbWFnZSB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorCisj
aWYgRU5BQkxFKFZJREVPKQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRy
PEhUTUxWaWRlb0VsZW1lbnQ+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0
YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKK30KKworI2VuZGlm
IC8vIEVOQUJMRShWSURFTykKKworI2lmIEVOQUJMRShXRUJHTCkKKworT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZl
ckRhdGFTb3VyY2U+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworCisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oKmFyZ3VtZW50
LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFs
dWUpOworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9u
YWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JiBhcmd1bWVudCkK
K3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIFdURjo6c3dpdGNoT24oKmFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7Cisg
ICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xCdWZmZXIqIGFyZ3VtZW50KQoreworICAg
IGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTEJ1
ZmZlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMRnJhbWVi
dWZmZXIqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBX
VEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlOjpXZWJHTEZyYW1lYnVmZmVyIH19OworfQorCitPcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
Ojpwcm9jZXNzQXJndW1lbnQoV2ViR0xQcm9ncmFtKiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFy
Z3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09O
OjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xQcm9ncmFtIH19
OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xRdWVyeSogYXJndW1l
bnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGU6OldlYkdMUXVlcnkgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChX
ZWJHTFJlbmRlcmJ1ZmZlciogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0
ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMUmVuZGVyYnVmZmVyIH19OworfQorCitP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
QnVmZmVyRGF0YVNvdXJjZSYgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24o
YXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1
bWVudCh2YWx1ZSk7CisgICAgfSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpGbG9hdDMyTGlzdDo6VmFyaWFudFR5cGUmIGFy
Z3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8m
IHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0p
OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6SW50MzJMaXN0OjpWYXJpYW50VHlwZSYgYXJndW1lbnQpCit7CisgICAgcmV0dXJu
IFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAoYXV0byYgdmFsdWUpIHsKKyAgICAgICAgcmV0
dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7CisgICAgfSk7Cit9CisKK09wdGlvbmFsPEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6
OnByb2Nlc3NBcmd1bWVudChXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJj
ZSYgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNoT24oYXJndW1lbnQsIFsmXSAo
YXV0byYgdmFsdWUpIHsKKyAgICAgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudCh2YWx1ZSk7Cisg
ICAgfSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFNhbXBsZXIq
IGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpXZWJHTFNhbXBsZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChXZWJHTFNoYWRlciogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAg
ICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNy
ZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU2hhZGVyIH19OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTeW5jKiBhcmd1bWVudCkKK3sKKyAgICBp
ZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7
eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTeW5j
IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xUZXh0dXJlKiBh
cmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6V2ViR0xUZXh0dXJlIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoV2ViR0xVbmlmb3JtTG9jYXRpb24qIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1l
bnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZh
bHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFVuaWZvcm1Mb2NhdGlv
biB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2Vk
QXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVmVydGV4QXJy
YXlPYmplY3QqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0IH19OworfQorCisjZW5k
aWYgLy8gRU5BQkxFKFdFQkdMKQorCisjaWYgRU5BQkxFKFdFQkdMMikKKworT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVHJhbnNmb3JtRmVlZGJhY2sqIGFyZ3VtZW50KQorewor
ICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoV2ViR0wyUmVuZGVyaW5nQ29udGV4dDo6VWludDMyTGlzdDo6VmFyaWFudFR5cGUmIGFyZ3Vt
ZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZh
bHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOwor
fQorCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMMikKKwogc3RhdGljIGJvb2wgc2hvdWxkU25hcHNo
b3RCaXRtYXBSZW5kZXJlckFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUpCiB7CiAgICAgcmV0dXJu
IG5hbWUgPT0gInRyYW5zZmVyRnJvbUltYWdlQml0bWFwIjsKQEAgLTM0NSw3ICs3OTgsNyBAQCBz
dGF0aWMgYm9vbCBzaG91bGRTbmFwc2hvdFdlYkdMMkFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUp
CiB9CiAjZW5kaWYKIAotdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbihjb25zdCBT
dHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJp
YW50PiYmIHBhcmFtZXRlcnMpCit2b2lkIEluc3BlY3RvckNhbnZhczo6cmVjb3JkQWN0aW9uKFN0
cmluZyYmIG5hbWUsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
cyYmIGFyZ3VtZW50cykKIHsKICAgICBpZiAoIW1faW5pdGlhbFN0YXRlKSB7CiAgICAgICAgIC8v
IFdlIHNob3VsZCBvbmx5IGNvbnN0cnVjdCB0aGUgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIGZpcnN0
IGFjdGlvbiBvZiB0aGUgcmVjb3JkaW5nLgpAQCAtMzczLDEwICs4MjYsNiBAQCB2b2lkIEluc3Bl
Y3RvckNhbnZhczo6cmVjb3JkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjppbml0aWFs
aXplcl9saXN0PFJlYwogCiAgICAgYXBwZW5kQWN0aW9uU25hcHNob3RJZk5lZWRlZCgpOwogCi0g
ICAgbV9sYXN0UmVjb3JkZWRBY3Rpb24gPSBidWlsZEFjdGlvbihuYW1lLCBXVEZNb3ZlKHBhcmFt
ZXRlcnMpKTsKLSAgICBtX2J1ZmZlclVzZWQgKz0gbV9sYXN0UmVjb3JkZWRBY3Rpb24tPm1lbW9y
eUNvc3QoKTsKLSAgICBtX2N1cnJlbnRBY3Rpb25zLT5hZGRJdGVtKCptX2xhc3RSZWNvcmRlZEFj
dGlvbik7Ci0KICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwogICAgIEFTU0VS
VChjb250ZXh0KTsKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4g
V2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJH
UFVEZXZpY2UKQEAgLTM5MSw2ICs4NDAsMTAgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29y
ZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWMKICAg
ICBlbHNlIGlmIChpczxXZWJHTDJSZW5kZXJpbmdDb250ZXh0Pihjb250ZXh0KSAmJiBzaG91bGRT
bmFwc2hvdFdlYkdMMkFjdGlvbihuYW1lKSkKICAgICAgICAgbV9jb250ZW50Q2hhbmdlZCA9IHRy
dWU7CiAjZW5kaWYKKworICAgIG1fbGFzdFJlY29yZGVkQWN0aW9uID0gYnVpbGRBY3Rpb24oV1RG
TW92ZShuYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKTsKKyAgICBtX2J1ZmZlclVzZWQgKz0gbV9s
YXN0UmVjb3JkZWRBY3Rpb24tPm1lbW9yeUNvc3QoKTsKKyAgICBtX2N1cnJlbnRBY3Rpb25zLT5h
ZGRJdGVtKCptX2xhc3RSZWNvcmRlZEFjdGlvbik7CiB9CiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFz
OjpmaW5hbGl6ZUZyYW1lKCkKQEAgLTc4Niw2ICsxMjM5LDExIEBAIGludCBJbnNwZWN0b3JDYW52
YXM6OmluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxpbnQ+KGluZGV4KTsKIH0KIAorUmVmPEpTT046OlZhbHVlPiBJbnNwZWN0b3JD
YW52YXM6OnZhbHVlSW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50IGRhdGEpCit7Cisg
ICAgcmV0dXJuIEpTT046OlZhbHVlOjpjcmVhdGUoaW5kZXhGb3JEYXRhKGRhdGEpKTsKK30KKwog
U3RyaW5nIEluc3BlY3RvckNhbnZhczo6c3RyaW5nSW5kZXhGb3JLZXkoY29uc3QgU3RyaW5nJiBr
ZXkpCiB7CiAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyKGluZGV4Rm9yRGF0YShrZXkpKTsKQEAg
LTgwMywxNCArMTI2MSw2IEBAIHN0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxkb3VibGU+PiBidWls
ZEFycmF5Rm9yQWZmaW5lVHJhbnNmb3JtKGNvbnN0IEFmZmluZVRyYW5zCiAgICAgcmV0dXJuIGFy
cmF5OwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8
SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9yVmVjdG9yKGNvbnN0IFZlY3RvcjxUPiYgdmVjdG9y
KQotewotICAgIGF1dG8gYXJyYXkgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRl
KCk7Ci0gICAgZm9yIChhdXRvJiBpdGVtIDogdmVjdG9yKQotICAgICAgICBhcnJheS0+YWRkSXRl
bShpdGVtKTsKLSAgICByZXR1cm4gYXJyYXk7Ci19Ci0KIFJlZjxQcm90b2NvbDo6UmVjb3JkaW5n
OjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZhczo6YnVpbGRJbml0aWFsU3RhdGUoKQogewog
ICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNDb250ZXh0KCk7CkBAIC05MTUsMjM5ICsxMzY1LDIw
IEBAIFJlZjxQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3RhdGU+IEluc3BlY3RvckNhbnZh
czo6YnVpbGRJbml0aWFsU3RhdGUoKQogICAgIHJldHVybiBpbml0aWFsU3RhdGVQYXlsb2FkOwog
fQogCi1SZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IEluc3BlY3RvckNhbnZhczo6YnVp
bGRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3Jk
Q2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQorUmVmPEpTT046OkFycmF5T2Y8SlNP
Tjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKFN0cmluZyYmIG5hbWUsIElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50cyYmIGFyZ3VtZW50cykK
IHsKICAgICBhdXRvIGFjdGlvbiA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUo
KTsKLSAgICBhY3Rpb24tPmFkZEl0ZW0oaW5kZXhGb3JEYXRhKG5hbWUpKTsKKyAgICBhY3Rpb24t
PmFkZEl0ZW0oaW5kZXhGb3JEYXRhKFdURk1vdmUobmFtZSkpKTsKIAogICAgIGF1dG8gcGFyYW1l
dGVyc0RhdGEgPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7CiAgICAgYXV0
byBzd2l6emxlVHlwZXMgPSBKU09OOjpBcnJheU9mPGludD46OmNyZWF0ZSgpOworICAgIGZvciAo
YXV0byYmIGFyZ3VtZW50IDogV1RGTW92ZShhcmd1bWVudHMpKSB7CisgICAgICAgIGlmICghYXJn
dW1lbnQpCisgICAgICAgICAgICBjb250aW51ZTsKIAotICAgIGF1dG8gYWRkUGFyYW1ldGVyID0g
WyZwYXJhbWV0ZXJzRGF0YSwgJnN3aXp6bGVUeXBlc10gKGF1dG8gdmFsdWUsIFJlY29yZGluZ1N3
aXp6bGVUeXBlcyBzd2l6emxlVHlwZSkgewotICAgICAgICBwYXJhbWV0ZXJzRGF0YS0+YWRkSXRl
bSh2YWx1ZSk7Ci0gICAgICAgIHN3aXp6bGVUeXBlcy0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+
KHN3aXp6bGVUeXBlKSk7Ci0gICAgfTsKLQotICAgIC8vIERlY2xhcmVkIGJlZm9yZSBpdCdzIGlu
aXRpYWxpemVkIHNvIGl0IGNhbiBiZSB1c2VkIHJlY3Vyc2l2ZWx5LgotICAgIEZ1bmN0aW9uPHZv
aWQoY29uc3QgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudCYpPiBwYXJzZVBhcmFtZXRlcjsKLSAg
ICBwYXJzZVBhcmFtZXRlciA9IFsmXSAoY29uc3QgYXV0byYgcGFyYW1ldGVyKSB7Ci0gICAgICAg
IFdURjo6c3dpdGNoT24ocGFyYW1ldGVyLAotICAgICAgICAgICAgWyZdIChDYW52YXNEaXJlY3Rp
b24gdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25U
b1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7IH0sCi0gICAg
ICAgICAgICBbJl0gKENhbnZhc0ZpbGxSdWxlIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZv
ckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZdIChDYW52YXNMaW5lQ2FwIHZhbHVl
KSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
dmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAg
WyZdIChDYW52YXNMaW5lSm9pbiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNv
bnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoQ2FudmFzVGV4dEFsaWduIHZhbHVlKSB7IGFk
ZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUp
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZdIChD
YW52YXNUZXh0QmFzZWxpbmUgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252
ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0
cmluZyk7IH0sCi0gICAgICAgICAgICBbJl0gKEltYWdlU21vb3RoaW5nUXVhbGl0eSB2YWx1ZSkg
eyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZh
bHVlKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgRE9NTWF0cml4MkRJbml0JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGF1dG8g
YXJyYXkgPSBKU09OOjpBcnJheU9mPGRvdWJsZT46OmNyZWF0ZSgpOwotICAgICAgICAgICAgICAg
IGFycmF5LT5hZGRJdGVtKHZhbHVlLmEudmFsdWVPcigxKSk7Ci0gICAgICAgICAgICAgICAgYXJy
YXktPmFkZEl0ZW0odmFsdWUuYi52YWx1ZU9yKDApKTsKLSAgICAgICAgICAgICAgICBhcnJheS0+
YWRkSXRlbSh2YWx1ZS5jLnZhbHVlT3IoMCkpOwotICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJ
dGVtKHZhbHVlLmQudmFsdWVPcigxKSk7Ci0gICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0o
dmFsdWUuZS52YWx1ZU9yKDApKTsKLSAgICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1
ZS5mLnZhbHVlT3IoMCkpOwotICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihXVEZNb3ZlKGFy
cmF5KSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpET01NYXRyaXgpOwotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIFsmXSAoY29uc3QgRWxlbWVudCogdmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRWxlbWVudHMgYXJlIG5vdCBz
ZXJpYWxpemFibGUsIHNvIGFkZCBhIHN0cmluZyBhcyBhIHBsYWNlaG9sZGVyIHNpbmNlIHRoZSBh
Y3R1YWwKLSAgICAgICAgICAgICAgICAgICAgLy8gZWxlbWVudCBjYW5ub3QgYmUgcmVjb25zdHJ1
Y3RlZCBpbiB0aGUgZnJvbnRlbmQuCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihp
bmRleEZvckRhdGEoIkVsZW1lbnQiKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpOb25lKTsKLSAg
ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChIVE1MSW1h
Z2VFbGVtZW50KiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
ICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3
aXp6bGVUeXBlczo6SW1hZ2UpOyB9LAotICAgICAgICAgICAgWyZdIChJbWFnZUJpdG1hcCogdmFs
dWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFk
ZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6Oklt
YWdlQml0bWFwKTsgfSwKLSAgICAgICAgICAgIFsmXSAoSW1hZ2VEYXRhKiB2YWx1ZSkgewotICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVy
KGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VEYXRhKTsg
fSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUGF0aDJEKiB2YWx1ZSkgewotICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9y
RGF0YShidWlsZFN0cmluZ0Zyb21QYXRoKHZhbHVlLT5wYXRoKCkpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGVzOjpQYXRoMkQpOyB9LAotI2lmIEVOQUJMRShXRUJHTCkKLSAgICAgICAgICAgIC8vIEZJ
WE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTc2MDA5PiBXZWIgSW5zcGVjdG9yOiBzZW5kIGRh
dGEgZm9yIFdlYkdMIG9iamVjdHMgZHVyaW5nIGEgcmVjb3JkaW5nIGluc3RlYWQgb2YgYSBwbGFj
ZWhvbGRlciBzdHJpbmcKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xCdWZmZXIqIHZhbHVl
KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQ
YXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTEJ1ZmZlcik7Ci0gICAgICAg
ICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTEZyYW1lYnVmZmVyKiB2YWx1ZSkg
ewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFy
YW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xGcmFtZWJ1ZmZlcik7Ci0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFByb2dyYW0qIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJh
bWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFByb2dyYW0pOwotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xRdWVyeSogdmFsdWUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigw
LCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdMUXVlcnkpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xSZW5kZXJidWZmZXIqIHZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwg
UmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFJlbmRlcmJ1ZmZlcik7Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFNhbXBsZXIqIHZhbHVlKSB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwg
UmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFNhbXBsZXIpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xTaGFkZXIqIHZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3Jk
aW5nU3dpenpsZVR5cGVzOjpXZWJHTFNoYWRlcik7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgWyZdIChjb25zdCBXZWJHTFN5bmMqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZh
bHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenps
ZVR5cGVzOjpXZWJHTFN5bmMpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29u
c3QgV2ViR0xUZXh0dXJlKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
V2ViR0xUZXh0dXJlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdl
YkdMVHJhbnNmb3JtRmVlZGJhY2sqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVl
KQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5
cGVzOjpXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICBbJl0gKGNvbnN0IFdlYkdMVW5pZm9ybUxvY2F0aW9uKiB2YWx1ZSkgewotICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29y
ZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xVbmlmb3JtTG9jYXRpb24pOwotICAgICAgICAgICAgfSwK
LSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCogdmFsdWUpIHsK
LSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFt
ZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdMVmVydGV4QXJyYXlPYmplY3QpOwot
ICAgICAgICAgICAgfSwKLSNlbmRpZgotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8QXJy
YXlCdWZmZXI+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
ICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRB
cnJheSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8QXJy
YXlCdWZmZXJWaWV3PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAg
ICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlR5
cGVkQXJyYXkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRy
PENhbnZhc0dyYWRpZW50PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0g
ICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZXM6OkNhbnZhc0dyYWRpZW50KTsKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYgdmFsdWUpIHsKLSAgICAg
ICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihp
bmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkNhbnZhc1BhdHRlcm4p
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEZsb2F0MzJB
cnJheT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAg
ICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpUeXBlZEFycmF5
KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxIVE1MQ2Fu
dmFzRWxlbWVudD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAg
ICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGVzOjpJbWFnZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChj
b25zdCBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRh
KHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7Ci0gICAgICAgICAgICB9LAot
I2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQ
dHI8T2Zmc2NyZWVuQ2FudmFzPiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUp
Ci0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSNp
ZiBFTkFCTEUoVklERU8pCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxIVE1MVmlkZW9F
bGVtZW50PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAg
ICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6
emxlVHlwZXM6OkltYWdlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoQ1NT
X1RZUEVEX09NKQotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8VHlwZWRPTUNTU0ltYWdl
VmFsdWU+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
ICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlczo6SW1hZ2UpOwotICAgICAgICAgICAgfSwKLSNlbmRpZgotICAgICAgICAgICAgWyZd
IChjb25zdCBSZWZQdHI8SW1hZ2VCaXRtYXA+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2
YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VCaXRtYXApOwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEltYWdlRGF0YT4mIHZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0
ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZURhdGEp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEludDMyQXJy
YXk+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAg
ICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8VWludDMyQXJy
YXk+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAg
ICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBDYW52YXNJbWFnZVNvdXJj
ZSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBXVEY6OnZpc2l0KHBhcnNlUGFyYW1ldGVyLCB2
YWx1ZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBDYW52YXNSZW5k
ZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQmIHZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgV1RGOjp2aXNpdChwYXJzZVBhcmFtZXRlciwgdmFsdWUpOwotICAgICAgICAgICAgfSwKLSNp
ZiBFTkFCTEUoV0VCR0wpCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgV1RG
Ojp2aXNpdChwYXJzZVBhcmFtZXRlciwgdmFsdWUpOwotICAgICAgICAgICAgfSwKLSAgICAgICAg
ICAgIFsmXSAoY29uc3QgT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVy
RGF0YVNvdXJjZT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAg
ICAgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcih2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OlRl
eEltYWdlU291cmNlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFyc2VQ
YXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0
IE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OlRleEltYWdlU291cmNlPiYgdmFs
dWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIHBh
cnNlUGFyYW1ldGVyKHZhbHVlLnZhbHVlKCkpOwotICAgICAgICAgICAgfSwKLSNlbmRpZgotICAg
ICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8U3RyaW5nPiYgdmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvIGRlZHVwbGljYXRlZCA9IHZhbHVlLm1hcChbJl0gKGNvbnN0IFN0cmluZyYgaXRl
bSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXhGb3JEYXRhKGl0ZW0pOwotICAg
ICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihidWlsZEFycmF5
Rm9yVmVjdG9yKGRlZHVwbGljYXRlZCksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsK
LSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxmbG9hdD4mIHZh
bHVlKSB7IGFkZFBhcmFtZXRlcihidWlsZEFycmF5Rm9yVmVjdG9yKHZhbHVlKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGVzOjpBcnJheSk7IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3Rvcjx1
aW50MzJfdD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBtYXBwZWQgPSB2YWx1ZS5t
YXAoWyZdICh1aW50MzJfdCBpdGVtKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGF0
aWNfY2FzdDxkb3VibGU+KGl0ZW0pOwotICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAg
ICAgIGFkZFBhcmFtZXRlcihidWlsZEFycmF5Rm9yVmVjdG9yKG1hcHBlZCksIFJlY29yZGluZ1N3
aXp6bGVUeXBlczo6QXJyYXkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29u
c3QgVmVjdG9yPGludDMyX3Q+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoYnVpbGRBcnJheUZvclZl
Y3Rvcih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6QXJyYXkpOyB9LAotI2lmIEVOQUJM
RShXRUJHTCkKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZTo6RmxvYXQzMkxpc3Q6OlZhcmlhbnRUeXBlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdU
Rjo6dmlzaXQocGFyc2VQYXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkludDMyTGlzdDo6VmFy
aWFudFR5cGUmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgV1RGOjp2aXNpdChwYXJzZVBhcmFt
ZXRlciwgdmFsdWUpOwotICAgICAgICAgICAgfSwKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJHTDIp
Ci0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OlVpbnQzMkxp
c3Q6OlZhcmlhbnRUeXBlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFy
c2VQYXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSAgICAgICAgICAg
IFsmXSAoY29uc3QgU3RyaW5nJiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZh
bHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZd
IChkb3VibGUgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKHZhbHVlLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZXM6Ok51bWJlcik7IH0sCi0gICAgICAgICAgICBbJl0gKGZsb2F0IHZhbHVlKSB7IGFkZFBhcmFt
ZXRlcih2YWx1ZSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpOdW1iZXIpOyB9LAotICAgICAgICAg
ICAgWyZdIChjb25zdCBPcHRpb25hbDxmbG9hdD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcih2YWx1ZS52YWx1
ZSgpKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKHVpbnQ2NF90IHZhbHVlKSB7
IGFkZFBhcmFtZXRlcihzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGVzOjpOdW1iZXIpOyB9LAotICAgICAgICAgICAgWyZdIChpbnQ2NF90IHZhbHVlKSB7IGFk
ZFBhcmFtZXRlcihzdGF0aWNfY2FzdDxkb3VibGU+KHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGVzOjpOdW1iZXIpOyB9LAotICAgICAgICAgICAgWyZdICh1aW50MzJfdCB2YWx1ZSkgeyBhZGRQ
YXJhbWV0ZXIoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsmXSAoaW50MzJfdCB2YWx1ZSkgeyBhZGRQYXJh
bWV0ZXIodmFsdWUsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAg
ICAgIFsmXSAodWludDhfdCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoc3RhdGljX2Nhc3Q8aW50Pih2
YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsm
XSAoYm9vbCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIodmFsdWUsIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6Qm9vbGVhbik7IH0KLSAgICAgICAgKTsKLSAgICB9OwotICAgIGZvciAoYXV0byYgcGFyYW1l
dGVyIDogcGFyYW1ldGVycykKLSAgICAgICAgcGFyc2VQYXJhbWV0ZXIocGFyYW1ldGVyKTsKLQor
ICAgICAgICBwYXJhbWV0ZXJzRGF0YS0+YWRkSXRlbShhcmd1bWVudC0+dmFsdWUuY29weVJlZigp
KTsKKyAgICAgICAgc3dpenpsZVR5cGVzLT5hZGRJdGVtKHN0YXRpY19jYXN0PGludD4oYXJndW1l
bnQtPnN3aXp6bGVUeXBlKSk7CisgICAgfQogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHBh
cmFtZXRlcnNEYXRhKSk7CiAgICAgYWN0aW9uLT5hZGRJdGVtKFdURk1vdmUoc3dpenpsZVR5cGVz
KSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52
YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaAppbmRleCBi
MjdiYzhkNDkyMzkxMTdiZWU1MjVkNWZlNmFjMjZlMmQ2MTZiNWM3Li4yNjI1YmQwYTc2M2YwNjZj
MTFmMmIyNDBmN2M5YTdjOTQwYzFlZDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhcy5oCkBAIC0yNSwxNCArMjUsMTQgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNp
bmNsdWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250
ZXh0LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sT2JqZWN0cy5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3Jp
cHRDYWxsRnJhbWUuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2su
aD4KICNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBA
IC04Niw3ICs4NiwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZXNldFJlY29yZGluZ0RhdGEoKTsK
ICAgICBib29sIGhhc1JlY29yZGluZ0RhdGEoKSBjb25zdDsKICAgICBib29sIGN1cnJlbnRGcmFt
ZUhhc0RhdGEoKSBjb25zdDsKLSAgICB2b2lkIHJlY29yZEFjdGlvbihjb25zdCBTdHJpbmcmLCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7
CisKKyAgICAvLyBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyCisjZGVmaW5lIFBST0NFU1NfQVJH
VU1FTlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCisgICAgT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChBcmd1
bWVudFR5cGUpOyBcCisvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgorICAg
IEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19B
UkdVTUVOVF9ERUNMQVJBVElPTikKKyN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9O
CisgICAgdm9pZCByZWNvcmRBY3Rpb24oU3RyaW5nJiYsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50cyYmID0geyB9KTsKIAogICAgIFJlZjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6RnJhbWU+PiByZWxlYXNlRnJhbWVzKCkg
eyByZXR1cm4gbV9mcmFtZXMucmVsZWFzZU5vbk51bGwoKTsgfQogCkBAIC0xMzcsOSArMTQ0LDEw
IEBAIHByaXZhdGU6CiAgICAgPjsKIAogICAgIGludCBpbmRleEZvckRhdGEoRHVwbGljYXRlRGF0
YVZhcmlhbnQpOworICAgIFJlZjxKU09OOjpWYWx1ZT4gdmFsdWVJbmRleEZvckRhdGEoRHVwbGlj
YXRlRGF0YVZhcmlhbnQpOwogICAgIFN0cmluZyBzdHJpbmdJbmRleEZvcktleShjb25zdCBTdHJp
bmcmKTsKICAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6UmVjb3JkaW5nOjpJbml0aWFsU3Rh
dGU+IGJ1aWxkSW5pdGlhbFN0YXRlKCk7Ci0gICAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFs
dWU+PiBidWlsZEFjdGlvbihjb25zdCBTdHJpbmcmLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVj
b3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7CisgICAgUmVmPEpTT046OkFycmF5T2Y8
SlNPTjo6VmFsdWU+PiBidWlsZEFjdGlvbihTdHJpbmcmJiwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnRzJiYgPSB7IH0pOwogICAgIFJlZjxKU09OOjpBcnJheU9m
PEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckNhbnZhc0dyYWRpZW50KGNvbnN0IENhbnZhc0dy
YWRpZW50Jik7CiAgICAgUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5
Rm9yQ2FudmFzUGF0dGVybihjb25zdCBDYW52YXNQYXR0ZXJuJik7CiAgICAgUmVmPEpTT046OkFy
cmF5T2Y8SlNPTjo6VmFsdWU+PiBidWlsZEFycmF5Rm9ySW1hZ2VEYXRhKGNvbnN0IEltYWdlRGF0
YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwMDk1ZTYzNTlmNGQ5MGU2NjMzZjEwMWYyMDkz
ZTY5MTkyNGZjMzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHAKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlci5oIgorCisjaW5jbHVkZSAiQ2FudmFzQmFzZS5oIgorI2luY2x1ZGUgIkNhbnZhc0dyYWRp
ZW50LmgiCisjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgorI2luY2x1ZGUgIkNhbnZhc1JlbmRl
cmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKKyNp
bmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKKyNpbmNsdWRlICJFbGVtZW50LmgiCisjaW5jbHVk
ZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmgiCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorI2luY2x1ZGUg
Ik9mZnNjcmVlbkNhbnZhcy5oIgorI2luY2x1ZGUgIlBhdGgyRC5oIgorI2luY2x1ZGUgIlJlY29y
ZGluZ1N3aXp6bGVUeXBlLmgiCisjaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKKyNp
bmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIu
aCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFt
LmgiCisjaW5jbHVkZSAiV2ViR0xRdWVyeS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVy
LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgorI2luY2x1ZGUgIldl
YkdMU2FtcGxlci5oIgorI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAiV2ViR0xT
eW5jLmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xUcmFuc2Zv
cm1GZWVkYmFjay5oIgorI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCisjaW5jbHVk
ZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Fy
cmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMuaD4KKyNpbmNsdWRlIDx3dGYv
T3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1Zhcmlh
bnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIEluc3BlY3RvckNhbnZhc0Fn
ZW50KiBlbmFibGVkQ2FudmFzQWdlbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVu
ZGVyaW5nQ29udGV4dCkKK3sKKyAgICBBU1NFUlQoSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uUHVi
bGljOjpoYXNGcm9udGVuZHMoKSk7CisKKyAgICBhdXRvKiBhZ2VudHMgPSBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246Omluc3RydW1lbnRpbmdBZ2VudHMoY2FudmFzUmVuZGVyaW5nQ29udGV4dC5j
YW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBBU1NFUlQoYWdlbnRz
KTsKKyAgICBpZiAoIWFnZW50cykKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBBU1NF
UlQoYWdlbnRzLT5lbmFibGVkQ2FudmFzQWdlbnQoKSk7CisgICAgcmV0dXJuIGFnZW50cy0+ZW5h
YmxlZENhbnZhc0FnZW50KCk7Cit9CisKKyNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklU
SU9OKEFyZ3VtZW50VHlwZSkgXAorT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnByb2Nlc3NBcmd1
bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBBcmd1
bWVudFR5cGUgYXJndW1lbnQpIFwKK3sgXAorICAgIGlmIChhdXRvKiBjYW52YXNBZ2VudCA9IGVu
YWJsZWRDYW52YXNBZ2VudChjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkgXAorICAgICAgICByZXR1
cm4gY2FudmFzQWdlbnQtPnByb2Nlc3NBcmd1bWVudChjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBh
cmd1bWVudCk7IFwKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OyBcCit9IFwKKy8vIGVuZCBvZiBQ
Uk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04KKyAgICBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFT
X0NBTExfVFJBQ0VSX0FSR1VNRU5UKFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTikKKyN1bmRl
ZiBQUk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04KKwordm9pZCBJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpyZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVy
aW5nQ29udGV4dCwgU3RyaW5nJiYgbmFtZSwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnRzJiYgYXJndW1lbnRzKQoreworICAgIGlmIChhdXRvKiBjYW52YXNBZ2Vu
dCA9IGVuYWJsZWRDYW52YXNBZ2VudChjYW52YXNSZW5kZXJpbmdDb250ZXh0KSkKKyAgICAgICAg
Y2FudmFzQWdlbnQtPnJlY29yZEFjdGlvbihjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBXVEZNb3Zl
KG5hbWUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6cHJvY2Vzc0FyZ3VtZW50KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50
LCB1aW50MzJfdCBhcmd1bWVudCkKK3sKKyAgICBBU1NFUlQoY2FudmFzRWxlbWVudC5yZW5kZXJp
bmdDb250ZXh0KCkpOworICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQoKmNhbnZhc0VsZW1lbnQu
cmVuZGVyaW5nQ29udGV4dCgpLCBhcmd1bWVudCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNF
bGVtZW50LCBTdHJpbmcmJiBuYW1lLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudHMmJiBhcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGNhbnZhc0VsZW1lbnQucmVu
ZGVyaW5nQ29udGV4dCgpKTsKKyAgICByZWNvcmRBY3Rpb24oKmNhbnZhc0VsZW1lbnQucmVuZGVy
aW5nQ29udGV4dCgpLCBXVEZNb3ZlKG5hbWUpLCBXVEZNb3ZlKGFyZ3VtZW50cykpOworfQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MWU3ODNkYThkNTE5NjBj
MjQzNmJmOWQ1MzZkNTRkNWUyMzA2MzA3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaApAQCAtMCwwICsxLDIwOCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZS5oIgorI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKKyNp
bmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvVHlwZWRBcnJheXMuaD4KKyNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgorI2luY2x1
ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEFycmF5QnVmZmVyOwor
Y2xhc3MgQXJyYXlCdWZmZXJWaWV3OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBDYW52YXNHcmFkaWVudDsKK2NsYXNzIENhbnZhc1BhdHRlcm47
CitjbGFzcyBDYW52YXNSZW5kZXJpbmdDb250ZXh0OworY2xhc3MgRWxlbWVudDsKK2NsYXNzIEhU
TUxDYW52YXNFbGVtZW50OworY2xhc3MgSFRNTEltYWdlRWxlbWVudDsKK2NsYXNzIEhUTUxWaWRl
b0VsZW1lbnQ7CitjbGFzcyBJbWFnZUJpdG1hcDsKK2NsYXNzIEltYWdlRGF0YTsKK2NsYXNzIE9m
ZnNjcmVlbkNhbnZhczsKK2NsYXNzIFBhdGgyRDsKK2NsYXNzIFR5cGVkT01DU1NJbWFnZVZhbHVl
OworY2xhc3MgV2ViR0xCdWZmZXI7CitjbGFzcyBXZWJHTEZyYW1lYnVmZmVyOworY2xhc3MgV2Vi
R0xQcm9ncmFtOworY2xhc3MgV2ViR0xRdWVyeTsKK2NsYXNzIFdlYkdMUmVuZGVyYnVmZmVyOwor
Y2xhc3MgV2ViR0xTYW1wbGVyOworY2xhc3MgV2ViR0xTaGFkZXI7CitjbGFzcyBXZWJHTFN5bmM7
CitjbGFzcyBXZWJHTFRleHR1cmU7CitjbGFzcyBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrOworY2xh
c3MgV2ViR0xVbmlmb3JtTG9jYXRpb247CitjbGFzcyBXZWJHTFZlcnRleEFycmF5T2JqZWN0Owor
c3RydWN0IERPTU1hdHJpeDJESW5pdDsKK2VudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5cGUg
OiBpbnQ7CitlbnVtIGNsYXNzIENhbnZhc0RpcmVjdGlvbjsKK2VudW0gY2xhc3MgQ2FudmFzRmls
bFJ1bGU7CitlbnVtIGNsYXNzIENhbnZhc0xpbmVDYXA7CitlbnVtIGNsYXNzIENhbnZhc0xpbmVK
b2luOworZW51bSBjbGFzcyBDYW52YXNUZXh0QWxpZ247CitlbnVtIGNsYXNzIENhbnZhc1RleHRC
YXNlbGluZTsKK2VudW0gSW1hZ2VTbW9vdGhpbmdRdWFsaXR5OworCisjaWYgRU5BQkxFKENTU19U
WVBFRF9PTSkKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9D
U1NfVFlQRURfT01fQVJHVU1FTlQobWFjcm8pIFwKKyAgICBtYWNybyhSZWZQdHI8VHlwZWRPTUNT
U0ltYWdlVmFsdWU+JikgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FM
TF9UUkFDRVJfQ1NTX1RZUEVEX09NX0FSR1VNRU5UCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9J
TlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0NTU19UWVBFRF9PTV9BUkdVTUVOVChtYWNybykK
KyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1RZUEVEX09NKQorCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9D
QU5WQVMpCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfT0ZG
U0NSRUVOX0NBTlZBU19BUkdVTUVOVChtYWNybykgXAorICAgIG1hY3JvKFJlZlB0cjxPZmZzY3Jl
ZW5DYW52YXM+JikgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9U
UkFDRVJfT0ZGU0NSRUVOX0NBTlZBU19BUkdVTUVOVAorI2Vsc2UKKyNkZWZpbmUgRk9SX0VBQ0hf
SU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9PRkZTQ1JFRU5fQ0FOVkFTX0FSR1VNRU5UKG1h
Y3JvKQorI2VuZGlmIC8vIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorCisjaWYgRU5BQkxFKFZJ
REVPKQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1ZJREVP
X0FSR1VNRU5UKG1hY3JvKSBcCisgICAgbWFjcm8oUmVmUHRyPEhUTUxWaWRlb0VsZW1lbnQ+Jikg
XAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfVklERU9f
QVJHVU1FTlQKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9U
UkFDRVJfVklERU9fQVJHVU1FTlQobWFjcm8pCisjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQorCisj
aWYgRU5BQkxFKFdFQkdMKQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExf
VFJBQ0VSX1dFQkdMX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgbWFjcm8oT3B0aW9uYWw8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4mKSBcCisgICAgbWFjcm8oT3B0
aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+JikgXAorICAg
IG1hY3JvKFdlYkdMQnVmZmVyKikgXAorICAgIG1hY3JvKFdlYkdMRnJhbWVidWZmZXIqKSBcCisg
ICAgbWFjcm8oV2ViR0xQcm9ncmFtKikgXAorICAgIG1hY3JvKFdlYkdMUXVlcnkqKSBcCisgICAg
bWFjcm8oV2ViR0xSZW5kZXJidWZmZXIqKSBcCisgICAgbWFjcm8oV2ViR0xSZW5kZXJpbmdDb250
ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZSYpIFwKKyAgICBtYWNybyhXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlOjpGbG9hdDMyTGlzdDo6VmFyaWFudFR5cGUmKSBcCisgICAgbWFjcm8oV2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6SW50MzJMaXN0OjpWYXJpYW50VHlwZSYpIFwKKyAgICBtYWNy
byhXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJjZSYpIFwKKyAgICBtYWNy
byhXZWJHTFNhbXBsZXIqKSBcCisgICAgbWFjcm8oV2ViR0xTaGFkZXIqKSBcCisgICAgbWFjcm8o
V2ViR0xTeW5jKikgXAorICAgIG1hY3JvKFdlYkdMVGV4dHVyZSopIFwKKyAgICBtYWNybyhXZWJH
TFVuaWZvcm1Mb2NhdGlvbiopIFwKKyAgICBtYWNybyhXZWJHTFZlcnRleEFycmF5T2JqZWN0Kikg
XAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfV0VCR0xf
QVJHVU1FTlQKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9U
UkFDRVJfV0VCR0xfQVJHVU1FTlQobWFjcm8pCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMKQorCisj
aWYgRU5BQkxFKFdFQkdMMikKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxM
X1RSQUNFUl9XRUJHTDJfQVJHVU1FTlQobWFjcm8pIFwKKyAgICBtYWNybyhXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrKikgXAorICAgIG1hY3JvKFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OlVpbnQzMkxp
c3Q6OlZhcmlhbnRUeXBlJikgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNf
Q0FMTF9UUkFDRVJfV0VCR0wyX0FSR1VNRU5UCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9JTlNQ
RUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMMl9BUkdVTUVOVChtYWNybykKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCR0wyKQorCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FM
TF9UUkFDRVJfQVJHVU1FTlQobWFjcm8pIFwKKyAgICBtYWNybyhDYW52YXNEaXJlY3Rpb24pIFwK
KyAgICBtYWNybyhDYW52YXNGaWxsUnVsZSkgXAorICAgIG1hY3JvKENhbnZhc0ltYWdlU291cmNl
JikgXAorICAgIG1hY3JvKENhbnZhc0xpbmVDYXApIFwKKyAgICBtYWNybyhDYW52YXNMaW5lSm9p
bikgXAorICAgIG1hY3JvKENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2U6OlN0eWxlVmFyaWFu
dCYpIFwKKyAgICBtYWNybyhDYW52YXNUZXh0QWxpZ24pIFwKKyAgICBtYWNybyhDYW52YXNUZXh0
QmFzZWxpbmUpIFwKKyAgICBtYWNybyhET01NYXRyaXgyREluaXQmKSBcCisgICAgbWFjcm8oRWxl
bWVudCopIFwKKyAgICBtYWNybyhIVE1MSW1hZ2VFbGVtZW50KikgXAorICAgIG1hY3JvKEltYWdl
Qml0bWFwKikgXAorICAgIG1hY3JvKEltYWdlRGF0YSopIFwKKyAgICBtYWNybyhJbWFnZVNtb290
aGluZ1F1YWxpdHkpIFwKKyAgICBtYWNybyhPcHRpb25hbDxmbG9hdD4mKSBcCisgICAgbWFjcm8o
UGF0aDJEKikgXAorICAgIG1hY3JvKFJlZlB0cjxDYW52YXNHcmFkaWVudD4mKSBcCisgICAgbWFj
cm8oUmVmUHRyPENhbnZhc1BhdHRlcm4+JikgXAorICAgIG1hY3JvKFJlZlB0cjxIVE1MQ2FudmFz
RWxlbWVudD4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JikgXAorICAg
IG1hY3JvKFJlZlB0cjxJbWFnZUJpdG1hcD4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEltYWdlRGF0
YT4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+JikgXAorICAgIG1hY3Jv
KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyVmlldz4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEpTQzo6
RmxvYXQzMkFycmF5PiYpIFwKKyAgICBtYWNybyhSZWZQdHI8SlNDOjpJbnQzMkFycmF5PiYpIFwK
KyAgICBtYWNybyhSZWZQdHI8SlNDOjpVaW50MzJBcnJheT4mKSBcCisgICAgbWFjcm8oU3RyaW5n
JikgXAorICAgIG1hY3JvKFZlY3RvcjxTdHJpbmc+JikgXAorICAgIG1hY3JvKFZlY3RvcjxmbG9h
dD4mKSBcCisgICAgbWFjcm8oVmVjdG9yPHVpbnQzMl90PiYpIFwKKyAgICBtYWNybyhWZWN0b3I8
aW50MzJfdD4mKSBcCisgICAgbWFjcm8oZG91YmxlKSBcCisgICAgbWFjcm8oZmxvYXQpIFwKKyAg
ICBtYWNybyh1aW50NjRfdCkgXAorICAgIG1hY3JvKGludDY0X3QpIFwKKyAgICBtYWNybyh1aW50
MzJfdCkgXAorICAgIG1hY3JvKGludDMyX3QpIFwKKyAgICBtYWNybyh1aW50OF90KSBcCisgICAg
bWFjcm8oYm9vbCkgXAorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJf
Q1NTX1RZUEVEX09NX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NB
TlZBU19DQUxMX1RSQUNFUl9PRkZTQ1JFRU5fQ0FOVkFTX0FSR1VNRU5UKG1hY3JvKSBcCisgICAg
Rk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9WSURFT19BUkdVTUVOVChtYWNy
bykgXAorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfV0VCR0xfQVJH
VU1FTlQobWFjcm8pIFwKKyAgICBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VS
X1dFQkdMMl9BUkdVTUVOVChtYWNybykgXAorLy8gZW5kIG9mIEZPUl9FQUNIX0lOU1BFQ1RPUl9D
QU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQKKworY2xhc3MgSW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlciB7CitwdWJsaWM6CisgICAgc3RydWN0IFByb2Nlc3NlZEFyZ3VtZW50IHsKKyAgICAgICAg
UmVmPEpTT046OlZhbHVlPiB2YWx1ZTsKKyAgICAgICAgUmVjb3JkaW5nU3dpenpsZVR5cGUgc3dp
enpsZVR5cGU7CisgICAgfTsKKworICAgIHVzaW5nIFByb2Nlc3NlZEFyZ3VtZW50cyA9IHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxPcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4+OworCisjZGVmaW5l
IFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBcCisgICAgc3RhdGlj
IE9wdGlvbmFsPFByb2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCYsIEFyZ3VtZW50VHlwZSk7IFwKKy8vIGVuZCBvZiBQUk9DRVNTX0FSR1VNRU5U
X0RFQ0xBUkFUSU9OCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9B
UkdVTUVOVChQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKQorI3VuZGVmIFBST0NFU1NfQVJH
VU1FTlRfREVDTEFSQVRJT04KKworICAgIHN0YXRpYyB2b2lkIHJlY29yZEFjdGlvbihDYW52YXNS
ZW5kZXJpbmdDb250ZXh0JiwgU3RyaW5nJiYsIFByb2Nlc3NlZEFyZ3VtZW50cyYmID0geyB9KTsK
KworICAgIHN0YXRpYyBPcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50
KGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiwgdWludDMyX3QpOworICAgIHN0YXRpYyB2b2lkIHJl
Y29yZEFjdGlvbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYsIFN0cmluZyYmLCBQcm9jZXNzZWRB
cmd1bWVudHMmJiA9IHsgfSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CmluZGV4IGNlMDllNTdmMDExNDQxOWE2NzA0ZGVlNmEzNDc3NjUyMGNhZGY1OWMuLjAxMTM5MWM1
ZmQxMjEwYWQ2MGQzZWY5ZmEzMzcwNjkzZjk4NDA4MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC0xMDc0LDEy
ICsxMDc0LDYgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5nZUNhbnZh
c01lbW9yeUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW4KICAgICAgICAgY2FudmFzQWdlbnQt
PmRpZENoYW5nZUNhbnZhc01lbW9yeShjb250ZXh0KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYg
aW5zdHJ1bWVudGluZ0FnZW50cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVy
aW5nQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVj
b3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQotewotICAgIGlmIChhdXRvKiBj
YW52YXNBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCi0g
ICAgICAgIGNhbnZhc0FnZW50LT5yZWNvcmRDYW52YXNBY3Rpb24oY2FudmFzUmVuZGVyaW5nQ29u
dGV4dCwgbmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCwgYm9vbCBmb3JjZURpc3BhdGNoKQogewogICAgIGlmIChhdXRvKiBjYW52YXNBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZENhbnZhc0FnZW50KCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
NTk3OTM4Mzg1MTM5YTE5OWQyMGU4NDFhYzgwNTc2MTkzYTE5ZWQ1My4uOGNlYWE1ZGQyMjg5YTAw
NWJjZDdiNjM5MTAxMDIxMjQzNGNjMzUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMzIsNyArMzIsNiBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NTZWxlY3Rvci5oIgotI2luY2x1ZGUgIkNhbGxUcmFj
ZXJUeXBlcy5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKICNpbmNsdWRlICJDYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRGF0YWJhc2UuaCIKQEAgLTI5NSw3ICsyOTQsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQ1NTQ2FudmFzQ2xpZW50Tm9kZXMo
Q2FudmFzQmFzZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5n
ZUNhbnZhc01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQg
cmVjb3JkQ2FudmFzQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBjb25zdCBTdHJpbmcm
LCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsg
fSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNlKTsKICNpZiBFTkFC
TEUoV0VCR0wpCiAgICAgc3RhdGljIHZvaWQgZGlkRW5hYmxlRXh0ZW5zaW9uKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2UmLCBjb25zdCBTdHJpbmcmKTsKQEAgLTMzNyw2ICszMzUsNyBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIGJvb2wgdGltZWxpbmVBZ2VudFRyYWNraW5nKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqKTsKIAogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50
aW5nQWdlbnRzKFBhZ2UqKTsKKyAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1
bWVudGluZ0FnZW50cyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBzdGF0aWMgdm9p
ZCByZWdpc3Rlckluc3RydW1lbnRpbmdBZ2VudHMoSW5zdHJ1bWVudGluZ0FnZW50cyYpOwogICAg
IHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdB
Z2VudHMmKTsKQEAgLTUwNCw3ICs1MDMsNiBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIGRp
ZENoYW5nZUNTU0NhbnZhc0NsaWVudE5vZGVzSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgQ2Fu
dmFzQmFzZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENyZWF0ZUNhbnZhc1JlbmRlcmluZ0NvbnRl
eHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQ2FudmFzTWVtb3J5SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZENh
bnZhc0FjdGlvbkltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmLCBjb25zdCBTdHJpbmcmLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0
aW9uVmFyaWFudD4mJiA9IHsgfSk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoUmVjb3JkaW5n
Q2FudmFzRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250
ZXh0JiwgYm9vbCBmb3JjZURpc3BhdGNoID0gZmFsc2UpOwogI2lmIEVOQUJMRShXRUJHTCkKICAg
ICBzdGF0aWMgdm9pZCBkaWRFbmFibGVFeHRlbnNpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJik7CkBAIC01MzgsNyAr
NTM2LDYgQEAgcHJpdmF0ZToKIAogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0
cnVtZW50aW5nQWdlbnRzKGNvbnN0IEZyYW1lJik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdB
Z2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMoY29uc3QgRnJhbWUqKTsKLSAgICBzdGF0aWMgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2Vu
dHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdl
bnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKERvY3VtZW50Jik7CiAgICAgc3RhdGljIEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMoRG9jdW1lbnQqKTsKQEAgLTE0MjMsMTMg
KzE0MjAsNiBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENoYW5n
ZUNhbnZhc01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZQogICAgICAgICBkaWRDaGFuZ2VDYW52
YXNNZW1vcnlJbXBsKCphZ2VudHMsIGNvbnRleHQpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250
ZXh0JiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxS
ZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7Ci0gICAgaWYgKGF1dG8qIGFnZW50cyA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMoY29udGV4dC5jYW52YXNCYXNlKCkuc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpKSkKLSAgICAgICAgcmVjb3JkQ2FudmFzQWN0aW9uSW1wbCgqYWdlbnRzLCBjb250ZXh0LCBu
YW1lLCBXVEZNb3ZlKHBhcmFtZXRlcnMpKTsKLX0KLQogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShDYW52YXNSZW5kZXJp
bmdDb250ZXh0JiBjb250ZXh0LCBib29sIGZvcmNlRGlzcGF0Y2gpCiB7CiAgICAgRkFTVF9SRVRV
Uk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGUuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9SZWNvcmRpbmdTd2l6emxlVHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4MzM4ODliNWQzOGVhZTA3NjZj
ZGY4OTIxOTNjOGFkMDgxYzlhOGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGUuaApAQCAtMCwwICsxLDU5IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKKy8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggV0kuUmVjb3Jk
aW5nLlN3aXp6bGUuCitlbnVtIGNsYXNzIFJlY29yZGluZ1N3aXp6bGVUeXBlIDogaW50IHsKKyAg
ICBOb25lID0gMCwKKyAgICBOdW1iZXIgPSAxLAorICAgIEJvb2xlYW4gPSAyLAorICAgIFN0cmlu
ZyA9IDMsCisgICAgQXJyYXkgPSA0LAorICAgIFR5cGVkQXJyYXkgPSA1LAorICAgIEltYWdlID0g
NiwKKyAgICBJbWFnZURhdGEgPSA3LAorICAgIERPTU1hdHJpeCA9IDgsCisgICAgUGF0aDJEID0g
OSwKKyAgICBDYW52YXNHcmFkaWVudCA9IDEwLAorICAgIENhbnZhc1BhdHRlcm4gPSAxMSwKKyAg
ICBXZWJHTEJ1ZmZlciA9IDEyLAorICAgIFdlYkdMRnJhbWVidWZmZXIgPSAxMywKKyAgICBXZWJH
TFJlbmRlcmJ1ZmZlciA9IDE0LAorICAgIFdlYkdMVGV4dHVyZSA9IDE1LAorICAgIFdlYkdMU2hh
ZGVyID0gMTYsCisgICAgV2ViR0xQcm9ncmFtID0gMTcsCisgICAgV2ViR0xVbmlmb3JtTG9jYXRp
b24gPSAxOCwKKyAgICBJbWFnZUJpdG1hcCA9IDE5LAorICAgIFdlYkdMUXVlcnkgPSAyMCwKKyAg
ICBXZWJHTFNhbXBsZXIgPSAyMSwKKyAgICBXZWJHTFN5bmMgPSAyMiwKKyAgICBXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrID0gMjMsCisgICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCA9IDI0LAorfTsK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1JlY29yZGluZ1N3aXp6bGVUeXBlcy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1JlY29yZGluZ1N3aXp6bGVUeXBlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAy
NzQ1ZTg0NjQxNWVhYWY1NTE2OGVjYzMyNzEyZTg1N2IwMjVmYTA4Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9S
ZWNvcmRpbmdTd2l6emxlVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNl
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gS2VlcCB0aGlzIGluIHN5bmMgd2l0aCBXSS5S
ZWNvcmRpbmcuU3dpenpsZS4KLWVudW0gY2xhc3MgUmVjb3JkaW5nU3dpenpsZVR5cGVzIDogaW50
IHsKLSAgICBOb25lID0gMCwKLSAgICBOdW1iZXIgPSAxLAotICAgIEJvb2xlYW4gPSAyLAotICAg
IFN0cmluZyA9IDMsCi0gICAgQXJyYXkgPSA0LAotICAgIFR5cGVkQXJyYXkgPSA1LAotICAgIElt
YWdlID0gNiwKLSAgICBJbWFnZURhdGEgPSA3LAotICAgIERPTU1hdHJpeCA9IDgsCi0gICAgUGF0
aDJEID0gOSwKLSAgICBDYW52YXNHcmFkaWVudCA9IDEwLAotICAgIENhbnZhc1BhdHRlcm4gPSAx
MSwKLSAgICBXZWJHTEJ1ZmZlciA9IDEyLAotICAgIFdlYkdMRnJhbWVidWZmZXIgPSAxMywKLSAg
ICBXZWJHTFJlbmRlcmJ1ZmZlciA9IDE0LAotICAgIFdlYkdMVGV4dHVyZSA9IDE1LAotICAgIFdl
YkdMU2hhZGVyID0gMTYsCi0gICAgV2ViR0xQcm9ncmFtID0gMTcsCi0gICAgV2ViR0xVbmlmb3Jt
TG9jYXRpb24gPSAxOCwKLSAgICBJbWFnZUJpdG1hcCA9IDE5LAotICAgIFdlYkdMUXVlcnkgPSAy
MCwKLSAgICBXZWJHTFNhbXBsZXIgPSAyMSwKLSAgICBXZWJHTFN5bmMgPSAyMiwKLSAgICBXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrID0gMjMsCi0gICAgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCA9IDI0
LAotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAppbmRleCA1ZTU2
NWIzZDYxNzM3Y2RhMWFhMGVjZjYxYTZiNzA5NWZkMWEwZWVjLi4yYmQ2ZTRjNDg4NDdhNmU3YmJl
NDc1YTc1NTJlYTBlZmJmZDU3NDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmNwcApAQCAtMjYsNTYgKzI2LDY5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2FudmFzQWdlbnQu
aCIKIAorI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKKyNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5o
IgorI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVk
ZSAiRE9NTWF0cml4MkRJbml0LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJF
bGVtZW50LmgiCiAjaW5jbHVkZSAiRXZlbnRMb29wLmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKKyNp
bmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQu
aCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFZpZGVvRWxl
bWVudC5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwLmgiCiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiSW1hZ2VEYXRhLmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRE9NQWdlbnQuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JTaGFkZXJQcm9ncmFtLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIgogI2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCisjaW5jbHVkZSAiT2Zmc2Ny
ZWVuQ2FudmFzLmgiCisjaW5jbHVkZSAiUGF0aDJELmgiCiAjaW5jbHVkZSAiU2NyaXB0U3RhdGUu
aCIKICNpbmNsdWRlICJTdHJpbmdBZGFwdG9ycy5oIgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0lkZW50aWZpZXJzRmFjdG9yeS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVk
U2NyaXB0Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
Lmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgotI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvTG9jay5o
PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKLSNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMu
aCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQkdMKQorI2luY2x1ZGUgIlR5cGVkT01DU1NJbWFn
ZVZhbHVlLmgiCisjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgogI2luY2x1ZGUg
IldlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIldlYkdMUXVlcnkuaCIKKyNpbmNsdWRlICJXZWJH
TFJlbmRlcmJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgogI2lu
Y2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFdFQkdMMikKLSNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCi0jZW5kaWYKLQot
I2lmIEVOQUJMRShXRUJHUFUpCi0jaW5jbHVkZSAiR1BVQ2FudmFzQ29udGV4dC5oIgorI2luY2x1
ZGUgIldlYkdMU2FtcGxlci5oIgorI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAi
V2ViR0xTeW5jLmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xU
cmFuc2Zvcm1GZWVkYmFjay5oIgorI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCisj
aW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkdQVUNvbXB1
dGVQaXBlbGluZS5oIgogI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgogI2luY2x1ZGUgIldlYkdQ
VVBpcGVsaW5lLmgiCiAjaW5jbHVkZSAiV2ViR1BVUmVuZGVyUGlwZWxpbmUuaCIKICNpbmNsdWRl
ICJXZWJHUFVTd2FwQ2hhaW4uaCIKLSNlbmRpZgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Fy
cmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJ
bmxpbmVzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVHlwZWRBcnJheXMuaD4KKyNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8
d3RmL0xvY2suaD4KKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVm
UHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtMjg5LDcgKzMwMiw3IEBAIFByb3RvY29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3Bl
Y3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29yZGluZyhjb25zdCBQcm90b2NvCiAgICAgaWYgKCFj
b250ZXh0KQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3Mp
OwogCi0gICAgaWYgKGNvbnRleHQtPmNhbGxUcmFjaW5nQWN0aXZlKCkpCisgICAgaWYgKGNvbnRl
eHQtPmhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSkKICAgICAgICAgcmV0dXJu
IG1ha2VVbmV4cGVjdGVkKCJBbHJlYWR5IHJlY29yZGluZyBjYW52YXMiX3MpOwogCiAgICAgUmVj
b3JkaW5nT3B0aW9ucyByZWNvcmRpbmdPcHRpb25zOwpAQCAtMzE2LDcgKzMyOSw3IEBAIFByb3Rv
Y29sOjpFcnJvclN0cmluZ09yPHZvaWQ+IEluc3BlY3RvckNhbnZhc0FnZW50OjpzdG9wUmVjb3Jk
aW5nKGNvbnN0IFByb3RvY29sCiAgICAgaWYgKCFjb250ZXh0KQogICAgICAgICByZXR1cm4gbWFr
ZVVuZXhwZWN0ZWQoIk5vdCBzdXBwb3J0ZWQiX3MpOwogCi0gICAgaWYgKCFjb250ZXh0LT5jYWxs
VHJhY2luZ0FjdGl2ZSgpKQorICAgIGlmICghY29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcigpKQogICAgICAgICByZXR1cm4gbWFrZVVuZXhwZWN0ZWQoIk5vdCByZWNv
cmRpbmcgY2FudmFzIl9zKTsKIAogICAgIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKCpj
b250ZXh0LCB0cnVlKTsKQEAgLTQ2Miw1MyArNDc1LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6ZGlkQ2hhbmdlQ2FudmFzTWVtb3J5KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRl
eHQKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmNhbnZhc01lbW9yeUNoYW5nZWQoaW5z
cGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCksIG5vZGUtPm1lbW9yeUNvc3QoKSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJp
bmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0
ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRl
cnMpCi17Ci0gICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBmaW5kSW5zcGVjdG9yQ2FudmFzKGNh
bnZhc1JlbmRlcmluZ0NvbnRleHQpOwotICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOwotICAg
IGlmICghaW5zcGVjdG9yQ2FudmFzKQotICAgICAgICByZXR1cm47Ci0KLSAgICBBU1NFUlQoY2Fu
dmFzUmVuZGVyaW5nQ29udGV4dC5jYWxsVHJhY2luZ0FjdGl2ZSgpKTsKLSAgICBpZiAoIWNhbnZh
c1JlbmRlcmluZ0NvbnRleHQuY2FsbFRyYWNpbmdBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgLy8gT25seSBlbnF1ZXVlIG9uZSBtaWNyb3Rhc2sgZm9yIGFsbCBhY3RpdmVseSByZWNv
cmRpbmcgY2FudmFzZXMuCi0gICAgaWYgKG1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnMuaXNF
bXB0eSgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBzY3JpcHRFeGVjdXRpb25Db250ZXh0ID0gaW5z
cGVjdG9yQ2FudmFzLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCkpIHsKLSAgICAgICAgICAgIHNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQtPmV2ZW50TG9vcCgpLnF1ZXVlTWljcm90YXNrKFt3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKV0gewotICAgICAgICAgICAgICAgIGlmICghd2Vha1RoaXMp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGF1dG8mIGNh
bnZhc0FnZW50ID0gKndlYWtUaGlzOwotCi0gICAgICAgICAgICAgICAgYXV0byBpZGVudGlmaWVy
cyA9IGNvcHlUb1ZlY3RvcihjYW52YXNBZ2VudC5tX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJz
KTsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGlkZW50aWZpZXIgOiBpZGVudGlmaWVycykg
ewotICAgICAgICAgICAgICAgICAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IGNhbnZhc0FnZW50
Lm1faWRlbnRpZmllclRvSW5zcGVjdG9yQ2FudmFzLmdldChpZGVudGlmaWVyKTsKLSAgICAgICAg
ICAgICAgICAgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMpCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLQotICAgICAgICAgICAgICAgICAgICBhdXRvKiBjYW52YXNSZW5kZXJpbmdD
b250ZXh0ID0gaW5zcGVjdG9yQ2FudmFzLT5jYW52YXNDb250ZXh0KCk7Ci0gICAgICAgICAgICAg
ICAgICAgIEFTU0VSVChjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsKLSAgICAgICAgICAgICAgICAg
ICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6
IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCi0KLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQtPmNhbGxUcmFjaW5n
QWN0aXZlKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNBZ2VudC5kaWRGaW5pc2hS
ZWNvcmRpbmdDYW52YXNGcmFtZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7Ci0gICAgICAgICAg
ICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FudmFzQWdlbnQubV9yZWNvcmRpbmdDYW52YXNJ
ZGVudGlmaWVycy5jbGVhcigpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBtX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmFkZChpbnNwZWN0b3JDYW52YXMtPmlk
ZW50aWZpZXIoKSk7Ci0KLSAgICBpbnNwZWN0b3JDYW52YXMtPnJlY29yZEFjdGlvbihuYW1lLCBX
VEZNb3ZlKHBhcmFtZXRlcnMpKTsKLQotICAgIGlmICghaW5zcGVjdG9yQ2FudmFzLT5oYXNCdWZm
ZXJTcGFjZSgpKQotICAgICAgICBkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShjYW52YXNS
ZW5kZXJpbmdDb250ZXh0LCB0cnVlKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
Y2FudmFzQ2hhbmdlZChDYW52YXNCYXNlJiBjYW52YXNCYXNlLCBjb25zdCBGbG9hdFJlY3QmKQog
ewogICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNCYXNlLnJlbmRlcmluZ0NvbnRleHQoKTsKQEAg
LTUzOSw3ICs1MDUsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpjYW52YXNEZXN0cm95
ZWQoQ2FudmFzQmFzZSYgY2FudmFzQmFzZSkKIAogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
ZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29u
dGV4dCwgYm9vbCBmb3JjZURpc3BhdGNoKQogewotICAgIGlmICghY29udGV4dC5jYWxsVHJhY2lu
Z0FjdGl2ZSgpKQorICAgIGlmICghY29udGV4dC5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0g
ZmluZEluc3BlY3RvckNhbnZhcyhjb250ZXh0KTsKQEAgLTcxNSw2ICs2ODEsNjAgQEAgdm9pZCBJ
bnNwZWN0b3JDYW52YXNBZ2VudDo6d2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBl
bGluZSYgcGlwZWxpbmUpCiB9CiAjZW5kaWYgLy8gRU5BQkxFKFdFQkdQVSkKIAorI2RlZmluZSBQ
Uk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04oQXJndW1lbnRUeXBlKSBcCitPcHRpb25hbDxJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OnByb2Nlc3NBcmd1bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5k
ZXJpbmdDb250ZXh0LCBBcmd1bWVudFR5cGUgYXJndW1lbnQpIFwKK3sgXAorICAgIGF1dG8gaW5z
cGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhjYW52YXNSZW5kZXJpbmdDb250ZXh0
KTsgXAorICAgIEFTU0VSVChpbnNwZWN0b3JDYW52YXMpOyBcCisgICAgcmV0dXJuIGluc3BlY3Rv
ckNhbnZhcy0+cHJvY2Vzc0FyZ3VtZW50KGFyZ3VtZW50KTsgXAorfSBcCisvLyBlbmQgb2YgUFJP
Q0VTU19BUkdVTUVOVF9ERUZJTklUSU9OCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19D
QUxMX1RSQUNFUl9BUkdVTUVOVChQUk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04pCisjdW5kZWYg
UFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OCisKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OnJlY29yZEFjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250
ZXh0LCBTdHJpbmcmJiBuYW1lLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRB
cmd1bWVudHMmJiBhcmd1bWVudHMpCit7CisgICAgQVNTRVJUKGNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQuaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKTsKKworICAgIGF1dG8gaW5z
cGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhjYW52YXNSZW5kZXJpbmdDb250ZXh0
KTsKKyAgICBBU1NFUlQoaW5zcGVjdG9yQ2FudmFzKTsKKworICAgIC8vIE9ubHkgZW5xdWV1ZSBv
bmUgbWljcm90YXNrIGZvciBhbGwgYWN0aXZlbHkgcmVjb3JkaW5nIGNhbnZhc2VzLgorICAgIGlm
IChtX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
YXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpKSB7CisgICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5l
dmVudExvb3AoKS5xdWV1ZU1pY3JvdGFzayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyld
IHsKKyAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgICAgICAgICBhdXRvJiBjYW52YXNBZ2VudCA9ICp3ZWFrVGhpczsK
KworICAgICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3IoY2FudmFz
QWdlbnQubV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycyk7CisgICAgICAgICAgICAgICAgZm9y
IChhdXRvJiBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBpbnNwZWN0b3JDYW52YXMgPSBjYW52YXNBZ2VudC5tX2lkZW50aWZpZXJUb0luc3BlY3Rv
ckNhbnZhcy5nZXQoaWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgICAgIGlmICghaW5zcGVj
dG9yQ2FudmFzKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAg
ICAgICAgICAgICAgYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA9IGluc3BlY3RvckNhbnZh
cy0+Y2FudmFzQ29udGV4dCgpOworICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FudmFzUmVu
ZGVyaW5nQ29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93
ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFz
IHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQorCisgICAgICAgICAgICAgICAgICAgIGlmIChj
YW52YXNSZW5kZXJpbmdDb250ZXh0LT5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
KCkpCisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXNBZ2VudC5kaWRGaW5pc2hSZWNvcmRp
bmdDYW52YXNGcmFtZSgqY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQubV9yZWNvcmRpbmdDYW52YXNJZGVudGlm
aWVycy5jbGVhcigpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBt
X3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmFkZChpbnNwZWN0b3JDYW52YXMtPmlkZW50aWZp
ZXIoKSk7CisKKyAgICBpbnNwZWN0b3JDYW52YXMtPnJlY29yZEFjdGlvbihXVEZNb3ZlKG5hbWUp
LCBXVEZNb3ZlKGFyZ3VtZW50cykpOworCisgICAgaWYgKCFpbnNwZWN0b3JDYW52YXMtPmhhc0J1
ZmZlclNwYWNlKCkpCisgICAgICAgIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKGNhbnZh
c1JlbmRlcmluZ0NvbnRleHQsIHRydWUpOworfQorCiB2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50
OjpzdGFydFJlY29yZGluZyhJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcywgUHJvdG9j
b2w6OlJlY29yZGluZzo6SW5pdGlhdG9yIGluaXRpYXRvciwgUmVjb3JkaW5nT3B0aW9ucyYmIHJl
Y29yZGluZ09wdGlvbnMpCiB7CiAgICAgYXV0byogY29udGV4dCA9IGluc3BlY3RvckNhbnZhcy5j
YW52YXNDb250ZXh0KCk7CkBAIC03MzIsNyArNzUyLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNB
Z2VudDo6c3RhcnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMsIFBy
b3QKICAgICApCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChjb250ZXh0LT5jYWxsVHJhY2lu
Z0FjdGl2ZSgpKQorICAgIGlmIChjb250ZXh0LT5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGluc3BlY3RvckNhbnZhcy5yZXNldFJl
Y29yZGluZ0RhdGEoKTsKQEAgLTc0Miw3ICs3NjIsNyBAQCB2b2lkIEluc3BlY3RvckNhbnZhc0Fn
ZW50OjpzdGFydFJlY29yZGluZyhJbnNwZWN0b3JDYW52YXMmIGluc3BlY3RvckNhbnZhcywgUHJv
dAogICAgICAgICBpbnNwZWN0b3JDYW52YXMuc2V0QnVmZmVyTGltaXQocmVjb3JkaW5nT3B0aW9u
cy5tZW1vcnlMaW1pdC52YWx1ZSgpKTsKICAgICBpZiAocmVjb3JkaW5nT3B0aW9ucy5uYW1lKQog
ICAgICAgICBpbnNwZWN0b3JDYW52YXMuc2V0UmVjb3JkaW5nTmFtZShyZWNvcmRpbmdPcHRpb25z
Lm5hbWUudmFsdWUoKSk7Ci0gICAgY29udGV4dC0+c2V0Q2FsbFRyYWNpbmdBY3RpdmUodHJ1ZSk7
CisgICAgY29udGV4dC0+c2V0SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcih0cnVl
KTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZWNvcmRpbmdTdGFydGVkKGluc3BlY3Rv
ckNhbnZhcy5pZGVudGlmaWVyKCksIGluaXRpYXRvcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKaW5kZXggODZi
ZGI1MTI1NjlhMzExZjdhMjUwODk1ZThmZmJjOWRkOWViY2RjMC4uNTBiMzM2Yzg5YjY2YTVhY2Rm
Y2FkYzZkMWM3NDk1OWZmZDdlMzc1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaApAQCAtMjUsMTYgKzI1LDE4IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbFRyYWNlclR5cGVzLmgiCiAjaW5jbHVk
ZSAiQ2FudmFzQmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhcy5oIgorI2luY2x1ZGUg
Ikluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lu
c3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0
PgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAj
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7CkBA
IC05OCw3ICsxMDAsNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRDaGFuZ2VDU1NDYW52YXNDbGll
bnROb2RlcyhDYW52YXNCYXNlJik7CiAgICAgdm9pZCBkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdD
b250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKICAgICB2b2lkIGRpZENoYW5nZUNhbnZh
c01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7Ci0gICAgdm9pZCByZWNvcmRDYW52YXNB
Y3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIGNvbnN0IFN0cmluZyYsIHN0ZDo6aW5pdGlh
bGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmID0geyB9KTsKICAgICB2b2lk
IGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBi
b29sIGZvcmNlRGlzcGF0Y2ggPSBmYWxzZSk7CiAgICAgdm9pZCBjb25zb2xlU3RhcnRSZWNvcmRp
bmdDYW52YXMoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIEpTQzo6SlNHbG9iYWxPYmplY3QmLCBK
U0M6OkpTT2JqZWN0KiBvcHRpb25zKTsKICAgICB2b2lkIGNvbnNvbGVTdG9wUmVjb3JkaW5nQ2Fu
dmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKQEAgLTExNyw2ICsxMTgsMTQgQEAgcHVibGlj
OgogICAgIHZvaWQgd2lsbERlc3Ryb3lXZWJHUFVQaXBlbGluZShXZWJHUFVQaXBlbGluZSYpOwog
I2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKKyAgICAvLyBJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyCisjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04oQXJndW1lbnRUeXBlKSBc
CisgICAgT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IHByb2Nlc3NBcmd1bWVudChDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgQXJndW1lbnRUeXBl
KTsgXAorLy8gZW5kIG9mIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04KKyAgICBGT1JfRUFD
SF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0FSR1VNRU5UKFBST0NFU1NfQVJHVU1FTlRf
REVDTEFSQVRJT04pCisjdW5kZWYgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgorICAgIHZv
aWQgcmVjb3JkQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBTdHJpbmcmJiwgSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnRzJiYgPSB7IH0pOworCiBwcml2
YXRlOgogICAgIHN0cnVjdCBSZWNvcmRpbmdPcHRpb25zIHsKICAgICAgICAgT3B0aW9uYWw8bG9u
Zz4gZnJhbWVDb3VudDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxv
YWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCmluZGV4IDBh
Y2Y1ZjQ4OTM1MTBjZTdmN2YzZmM1NThhN2Q1MDUzZDUxYzQyM2YuLmQxYWEzMzU0Nzg2NjBjZDhi
M2FiZDAyYzNiZWNjMDA5MDIwN2UxZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9JbWFnZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVy
LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVk
ZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgorI2luY2x1ZGUgIkhUTUxJbWFn
ZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTmFtZXMuaCIKICNpbmNsdWRlICJIVE1MT2JqZWN0
RWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxQYXJzZXJJZGlvbXMuaCIKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKaW5kZXggZjRmZTcwZjEyNjM3M2I0MDBlNjAzNDc4
ODVmMjZmZTliZTYzM2MxNy4uOGNjM2M1NjhjNDM3OTZhYzYxYjMwOTc1NDdhODllZjgxMmQ5OGQ0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHAKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlICJDYWNoZWRUZXh0VHJhY2suaCIKICNpbmNsdWRlICJDcm9zc09y
aWdpbkFjY2Vzc0NvbnRyb2wuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkhU
TUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVHJhY2tFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiTG9nZ2luZy5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggZjk1MjAxZDEyNjA4NjNhY2JhYzI5M2ZiMWY5NWJmMWI1YmFmMmJi
Ni4uNTEwZTQwYTVlNTBlOTIyMzE0ZmZiODU1NjE4ODljOWQxMjllMWI2ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC02NSw2ICs2NSw3IEBACiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVk
ZSAiRnVsbHNjcmVlbk1hbmFnZXIuaCIKICNpbmNsdWRlICJIVE1MRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxJbWFnZUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50LmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZy5qcwppbmRleCA1MTNlZjc2YWY1NjE0MjkxZTI4NjRh
YWVhNThlNzQ3YzY4YTg0ZmFmLi45NzVkODliNTNhMGVlMDQ1MTY1ZGEyYWNiZTEwYzQ5MTc4ZDMx
ZTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvUmVjb3JkaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9SZWNvcmRpbmcuanMKQEAgLTg5OCw3ICs4OTgsNyBAQCBXSS5SZWNvcmRpbmcuVHlw
ZSA9IHsKICAgICBDYW52YXNXZWJHTDI6ICJjYW52YXMtd2ViZ2wyIiwKIH07CiAKLS8vIEtlZXAg
dGhpcyBpbiBzeW5jIHdpdGggV2ViQ29yZTo6UmVjb3JkaW5nU3dpenpsZVR5cGVzLgorLy8gS2Vl
cCB0aGlzIGluIHN5bmMgd2l0aCBXZWJDb3JlOjpSZWNvcmRpbmdTd2l6emxlVHlwZS4KIFdJLlJl
Y29yZGluZy5Td2l6emxlID0gewogICAgIE5vbmU6IDAsCiAgICAgTnVtYmVyOiAxLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGlu
Z0FjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9S
ZWNvcmRpbmdBY3Rpb24uanMKaW5kZXggZjMxY2QzM2QzMjM3ZGYzYmRiNDJmMTY5MjU5NzUwNGY4
MTBiOWZlYi4uN2Q4YjMxZGQxZjc4ODBhN2ViYzhkNjgxM2M5ZDU4MTY1NjY4NzM4MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGlu
Z0FjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvUmVjb3JkaW5nQWN0aW9uLmpzCkBAIC0zMyw3ICszMyw3IEBAIFdJLlJlY29yZGluZ0FjdGlv
biA9IGNsYXNzIFJlY29yZGluZ0FjdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlz
Ll9wYXlsb2FkUGFyYW1ldGVycyA9IHBhcmFtZXRlcnM7CiAgICAgICAgIHRoaXMuX3BheWxvYWRT
d2l6emxlVHlwZXMgPSBzd2l6emxlVHlwZXM7CiAgICAgICAgIHRoaXMuX3BheWxvYWRUcmFjZSA9
IHRyYWNlOwotICAgICAgICB0aGlzLl9wYXlsb2FkU25hcHNob3QgPSBzbmFwc2hvdCB8fCAtMTsK
KyAgICAgICAgdGhpcy5fcGF5bG9hZFNuYXBzaG90ID0gc25hcHNob3QgPz8gLTE7CiAKICAgICAg
ICAgdGhpcy5fbmFtZSA9ICIiOwogICAgICAgICB0aGlzLl9wYXJhbWV0ZXJzID0gW107CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggZDk1NDMwMzI1OGRhMjkxZjFmZDZhNGUxYzNkZTYzMTljMzA5YTQ2Ny4uZWZhYWE1MzJlYWYw
NmYzMzMxMzZkNWY3YWFmYmNiZTdjMzk4MDY5YiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDIx
LTAzLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIg
SW5zcGVjdG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1i
b2wgdG8gYmUgY3JlYXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNzI4
MDU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aW5zcGVjdG9yL2NhbnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5qczoKKyAgICAgICAg
KiBpbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy13ZWJnbDItZnVsbC1leHBlY3RlZC50eHQ6Cisg
ICAgICAgIFVzZSBhbiBhY3R1YWwgYHVuaWZvcm1gIG5hbWUgaW5zdGVhZCBvZiBhIHJhbmRvbSB0
ZXN0IHN0cmluZy4KKwogMjAyMS0wMy0wMiAgQ2hyaXMgR2FtYnJlbGwgIDxjZ2FtYnJlbGxAYXBw
bGUuY29tPgogCiAgICAgICAgIFtMYXlvdXRUZXN0c10gQ29udmVydCBodHRwL3Rlc3RzL2Rvd25s
b2FkIGNvbnZlcnQgUEhQIHRvIFB5dGhvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy9yZWNvcmRpbmctd2ViZ2wyLWZ1bGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmctd2ViZ2wyLWZ1bGwtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDdhOTVlNWNiOWVlMDE0MGExMzk2ZWUxZDUyN2JmYjBiZGMzZjM4OWYuLmI1YWJmNDZjMTcw
N2JiYjNkY2M0ZjUzMmM4OTY0ODc0MmRlNTMwMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9jYW52YXMvcmVjb3JkaW5nLXdlYmdsMi1mdWxsLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy13ZWJnbDItZnVsbC1leHBlY3Rl
ZC50eHQKQEAgLTUyMCw4ICs1MjAsOCBAQCBmcmFtZXM6CiAgICAgICAgIDE6IChhbm9ueW1vdXMg
ZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDcyOiAoZHVyYXRp
b24pCi0gICAgMDogZ2V0VW5pZm9ybSgwKQotICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xQcm9n
cmFtXQorICAgIDA6IGdldFVuaWZvcm0oMCwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdM
UHJvZ3JhbSwgV2ViR0xVbmlmb3JtTG9jYXRpb25dCiAgICAgICB0cmFjZToKICAgICAgICAgMDog
Z2V0VW5pZm9ybQogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQpAQCAtNzI5LDEzNCAr
NzI5LDEzNCBAQCBmcmFtZXM6CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAg
ICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEwMjogKGR1cmF0aW9uKQotICAgIDA6IHVu
aWZvcm0xZigxKQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyXQorICAgIDA6IHVuaWZvcm0x
ZigwLCAxKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJl
cl0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtMWYKICAgICAgICAgMTogKGFub255
bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTAzOiAo
ZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybTFmdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlw
ZWRBcnJheV0KKyAgICAwOiB1bmlmb3JtMWZ2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtX
ZWJHTFVuaWZvcm1Mb2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAw
OiB1bmlmb3JtMWZ2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6
IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEwNDogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0x
aSgxKQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyXQorICAgIDA6IHVuaWZvcm0xaSgwLCAx
KQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlcl0KICAg
ICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtMWkKICAgICAgICAgMTogKGFub255bW91cyBm
dW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTA1OiAoZHVyYXRp
b24pCi0gICAgMDogdW5pZm9ybTFpdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJh
eV0KKyAgICAwOiB1bmlmb3JtMWl2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVu
aWZvcm1Mb2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlm
b3JtMWl2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1
dGVGcmFtZUZ1bmN0aW9uCiAgIDEwNjogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0yZigxLCAy
KQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyLCBOdW1iZXJdCisgICAgMDogdW5pZm9ybTJm
KDAsIDEsIDIpCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2NhdGlvbiwgTnVt
YmVyLCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTJmCiAgICAgICAg
IDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9u
CiAgIDEwNzogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0yZnYoMCkKLSAgICAgIHN3aXp6bGVU
eXBlczogW1R5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTJmdigwLCAwKQorICAgICAgc3dpenps
ZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToK
ICAgICAgICAgMDogdW5pZm9ybTJmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQog
ICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMDg6IChkdXJhdGlvbikKLSAgICAw
OiB1bmlmb3JtMmkoMSwgMikKLSAgICAgIHN3aXp6bGVUeXBlczogW051bWJlciwgTnVtYmVyXQor
ICAgIDA6IHVuaWZvcm0yaSgwLCAxLCAyKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlm
b3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVyXQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVu
aWZvcm0yaQogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVj
dXRlRnJhbWVGdW5jdGlvbgogICAxMDk6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMml2KDAp
Ci0gICAgICBzd2l6emxlVHlwZXM6IFtUeXBlZEFycmF5XQorICAgIDA6IHVuaWZvcm0yaXYoMCwg
MCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBUeXBlZEFycmF5
XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm0yaXYKICAgICAgICAgMTogKGFub255
bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTEwOiAo
ZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybTNmKDEsIDIsIDMpCi0gICAgICBzd2l6emxlVHlwZXM6
IFtOdW1iZXIsIE51bWJlciwgTnVtYmVyXQorICAgIDA6IHVuaWZvcm0zZigwLCAxLCAyLCAzKQor
ICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVy
LCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTNmCiAgICAgICAgIDE6
IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAg
IDExMTogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0zZnYoMCkKLSAgICAgIHN3aXp6bGVUeXBl
czogW1R5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTNmdigwLCAwKQorICAgICAgc3dpenpsZVR5
cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAg
ICAgICAgMDogdW5pZm9ybTNmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAg
ICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTI6IChkdXJhdGlvbikKLSAgICAwOiB1
bmlmb3JtM2koMSwgMiwgMykKLSAgICAgIHN3aXp6bGVUeXBlczogW051bWJlciwgTnVtYmVyLCBO
dW1iZXJdCisgICAgMDogdW5pZm9ybTNpKDAsIDEsIDIsIDMpCisgICAgICBzd2l6emxlVHlwZXM6
IFtXZWJHTFVuaWZvcm1Mb2NhdGlvbiwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KICAgICAgIHRy
YWNlOgogICAgICAgICAwOiB1bmlmb3JtM2kKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlv
bikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTEzOiAoZHVyYXRpb24pCi0g
ICAgMDogdW5pZm9ybTNpdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0KKyAg
ICAwOiB1bmlmb3JtM2l2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1M
b2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtM2l2
CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFt
ZUZ1bmN0aW9uCiAgIDExNDogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm00ZigxLCAyLCAzLCA0
KQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyXQor
ICAgIDA6IHVuaWZvcm00ZigwLCAxLCAyLCAzLCA0KQorICAgICAgc3dpenpsZVR5cGVzOiBbV2Vi
R0xVbmlmb3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KICAgICAg
IHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtNGYKICAgICAgICAgMTogKGFub255bW91cyBmdW5j
dGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTE1OiAoZHVyYXRpb24p
Ci0gICAgMDogdW5pZm9ybTRmdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0K
KyAgICAwOiB1bmlmb3JtNGZ2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZv
cm1Mb2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3Jt
NGZ2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVG
cmFtZUZ1bmN0aW9uCiAgIDExNjogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm00aSgxLCAyLCAz
LCA0KQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyLCBOdW1iZXIsIE51bWJlciwgTnVtYmVy
XQorICAgIDA6IHVuaWZvcm00aSgwLCAxLCAyLCAzLCA0KQorICAgICAgc3dpenpsZVR5cGVzOiBb
V2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KICAg
ICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtNGkKICAgICAgICAgMTogKGFub255bW91cyBm
dW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTE3OiAoZHVyYXRp
b24pCi0gICAgMDogdW5pZm9ybTRpdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJh
eV0KKyAgICAwOiB1bmlmb3JtNGl2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVu
aWZvcm1Mb2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlm
b3JtNGl2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1
dGVGcmFtZUZ1bmN0aW9uCiAgIDExODogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm1NYXRyaXgy
ZnYodHJ1ZSwgMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW0Jvb2xlYW4sIFR5cGVkQXJyYXldCisg
ICAgMDogdW5pZm9ybU1hdHJpeDJmdigwLCB0cnVlLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBb
V2ViR0xVbmlmb3JtTG9jYXRpb24sIEJvb2xlYW4sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToK
ICAgICAgICAgMDogdW5pZm9ybU1hdHJpeDJmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0
aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTk6IChkdXJhdGlvbikK
LSAgICAwOiB1bmlmb3JtTWF0cml4M2Z2KHRydWUsIDApCi0gICAgICBzd2l6emxlVHlwZXM6IFtC
b29sZWFuLCBUeXBlZEFycmF5XQorICAgIDA6IHVuaWZvcm1NYXRyaXgzZnYoMCwgdHJ1ZSwgMCkK
KyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBCb29sZWFuLCBUeXBl
ZEFycmF5XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm1NYXRyaXgzZnYKICAgICAg
ICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rp
b24KICAgMTIwOiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybU1hdHJpeDRmdih0cnVlLCAwKQot
ICAgICAgc3dpenpsZVR5cGVzOiBbQm9vbGVhbiwgVHlwZWRBcnJheV0KKyAgICAwOiB1bmlmb3Jt
TWF0cml4NGZ2KDAsIHRydWUsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1M
b2NhdGlvbiwgQm9vbGVhbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1
bmlmb3JtTWF0cml4NGZ2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc291cmNlcy9yZWNvcmRpbmctd2Vi
Z2wyLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5n
LXdlYmdsMi5qcwppbmRleCAzMTU4OGUyOTQyYjFlOWY5YzJiNDViOTZmNGY2ZmZhMWI4MTkxNDQw
Li43N2I1OTg5N2YyOTA2OGEzODhlODQ1OWQyZmZiZjFkNmRkYzhiMGYwIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc291cmNlcy9yZWNvcmRpbmctd2ViZ2wyLmpz
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb3VyY2VzL3JlY29yZGluZy13
ZWJnbDIuanMKQEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24gbG9hZCgpIHsKIAogICAgIGJ1ZmZl
ciA9IGNvbnRleHQuY3JlYXRlQnVmZmVyKCk7CiAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LmNy
ZWF0ZUZyYW1lYnVmZmVyKCk7Ci0gICAgdW5pZm9ybUxvY2F0aW9uID0gY29udGV4dC5nZXRVbmlm
b3JtTG9jYXRpb24ocHJvZ3JhbSwgInRlc3QiKTsKKyAgICB1bmlmb3JtTG9jYXRpb24gPSBjb250
ZXh0LmdldFVuaWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGVzdFVuaWZvcm0iKTsKICAgICByZW5k
ZXJidWZmZXIgPSBjb250ZXh0LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwogICAgIHNoYWRlciA9IGNv
bnRleHQuY3JlYXRlU2hhZGVyKGNvbnRleHQuVkVSVEVYX1NIQURFUik7CiAgICAgdGV4dHVyZSA9
IGNvbnRleHQuY3JlYXRlVGV4dHVyZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422039</attachid>
            <date>2021-03-02 21:12:40 -0800</date>
            <delta_ts>2021-03-03 16:42:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222639-20210302221239.patch</filename>
            <type>text/plain</type>
            <size>145062</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdhMjFlMTQzNTc4ZjNmYmY0YjY1ZjExZGMyOTAy
OTM4ODY5MjY3MmYuLmIzMGVhNzMyMGEwMDkyZmE2MmVmNjU0Mjc0MTAzOWFjZTQ2NzQ4NDggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTAyICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBg
UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8gYmUgY3Jl
YXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNzI4MDU3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3By
b3RvY29sL1JlY29yZGluZy5qc29uOgorICAgICAgICBEcml2ZS1ieTogQWRkIGluZm8gYWJvdXQg
YHNuYXBzaG90YCB0byB0aGUgYCJkZXNjcmlwdGlvbiJgIG9mIGAiYWN0aW9ucyJgIGluIGAiRnJh
bWUiYC4KKwogMjAyMS0wMy0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgog
CiAgICAgICAgIEZsYWt5IEpTQyB0ZXN0OiBzdHJlc3Mvc2hhcmVkLWFycmF5LWJ1ZmZlci1zb3J0
LXdoaWxlLWRpZmZlcmVudC10aHJlYWQtaXMtbW9kaWZ5aW5nLmpzLmRlZmF1bHQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpp
bmRleCA1ZmU2YmNmNWY1YTU4MTNjMTIxYzhiM2FhZjE5MGFmZWQ0ZTBkM2ZlLi5lODBlYWM2MDM1
YzVkY2NiZDMwODBkYTc5YjAxMWRiYzU3ZTlmYTI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTEw
IEBACisyMDIxLTAzLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEg
aHVnZSBzeW1ib2wgdG8gYmUgY3JlYXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzczNzI4MDU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFRoZSBvbmx5IHJlYXNvbiB0aGF0IGBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50YCBl
eGlzdHMgaXMgc28gdGhhdCB0aGUgZ2VuZXJhdGVkIElETCBjb2RlCisgICAgICAgIGNhbiBwYXNz
IGFsbCBhcmd1bWVudHMgYXQgb25jZSB0byB0aGUgZnVuY3Rpb24gZGVmaW5lZCBieSBgQ2FsbFRy
YWNpbmdDYWxsYmFja2AuIEluc3RlYWQsCisgICAgICAgIGNoYW5nZSBgQ2FsbFRyYWNpbmdDYWxs
YmFja2AgKHdoaWNoIGV4cGVjdHMgYSBgc3RhdGljYCBmdW5jdGlvbiBvbiBgQ2FsbFRyYWNlcmAp
IHRvIGJlCisgICAgICAgIGBDYWxsVHJhY2VyYCAod2hpY2ggZXhwZWN0cyBhIGBjbGFzc2ApIHNv
IHRoYXQgbW9yZSB0aGFuIG9uZSBmdW5jdGlvbiBjYW4gYmUgdXNlZCBpbiB0aGUKKyAgICAgICAg
Z2VuZXJhdGVkIElETCBjb2RlIChhbmQgc28gdGhhdCBub3QgZXZlcnkgdXNhZ2UgaGFzIHRvIGJl
IHBhcnQgb2YgYENhbGxUcmFjZXIpLiBUaGVzZSBuZXcKKyAgICAgICAgZnVuY3Rpb25zIGFyZToK
KyAgICAgICAgIC0gYHByb2Nlc3NBcmd1bWVudGAsIHdoaWNoIGlzIHVzZWQgdG8gY29udmVydCB0
aGUgYXJndW1lbnQgdG8gYSBtb3JlIGdlbmVyaWMgdHlwZQorICAgICAgICAgLSBgcmVjb3JkQWN0
aW9uYCwgd2hpY2ggaXMgYmFzaWNhbGx5IHdoYXQgYENhbGxUcmFjaW5nQ2FsbGJhY2tgIHVzZWQg
dG8gYmUKKyAgICAgICAgSW4gdGhlIGNhc2Ugb2YgYEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJg
ICh3aGljaCBpcyB3aGF0IGByZWNvcmRDYW52YXNBY3Rpb25gIHVzZWQgdG8gYmUpLAorICAgICAg
ICBgcHJvY2Vzc0FyZ3VtZW50YCBjb252ZXJ0cyB0byBhIGBzdHJ1Y3RgIG9mIGBKU09OOjpWYWx1
ZWAgYW5kIGBSZWNvcmRpbmdTd2l6emxlVHlwZWAsIHdoaWNoCisgICAgICAgIHVzZWQgdG8gaGFw
cGVuIHdheSBsYXRlciBpbiBgSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbmAgKHdoaWNoIGlz
IHdoeSB0aGVyZSB1c2VkIHRvIGJlCisgICAgICAgIGBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50
YCBhcyB0aGVyZSB3YXMgbm8gb3RoZXIgZ29vZCB3YXkgb2YgaGFuZGxpbmcgYWxsIHRoZSB2YXJp
b3VzCisgICAgICAgIGFyZ3VtZW50cyBvZiBhbGwgdGhlIHZhcmlvdXMgZnVuY3Rpb25zKS4gVGhl
IG9ubHkgZWZmZWN0IHRoYXQgdGhpcyBjaGFuZ2UgaGFzIGlzIHRoYXQgbm93CisgICAgICAgIHRo
ZSBkZWR1cGxpY2F0ZWQgYGRhdGFgIGluIHRoZSBgUmVjb3JkaW5nYCBwYXlsb2FkIG1pZ2h0IGhh
dmUgYSBkaWZmZXJlbnQgb3JkZXIsIGFzCisgICAgICAgIGFyZ3VtZW50cyBhcmUgZGVkdXBsaWNh
dGVkIGJlZm9yZSBhY3Rpb24gbmFtZXMsIGJ1dCB0aGlzIHNob3VsZG4ndCBoYXZlIGFueSBub3Rp
Y2FibGUgZWZmZWN0CisgICAgICAgIGFzIHRoZSBXZWIgSW5zcGVjdG9yIGZyb250ZW5kIGhhbmRs
ZXMgdGhlICJ1bnBhY2tpbmciIG9mIHRoZSBkZWR1cGxpY2F0ZWQgYGRhdGFgIGluIHRoZSBzYW1l
CisgICAgICAgIHdheSAoYW5kIHRoZSB0ZXN0cyBjb25maXJtIGl0KS4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAoR2VuZXJhdGVBdHRy
aWJ1dGVHZXR0ZXJCb2R5RGVmaW5pdGlvbik6CisgICAgICAgIChHZW5lcmF0ZUF0dHJpYnV0ZVNl
dHRlckJvZHlEZWZpbml0aW9uKToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb25GdW5j
dGlvbkNhbGwpOgorICAgICAgICAoR2VuZXJhdGVDYWxsVHJhY2VyKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbjoKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVGVzdENhbGxUcmFjZXIuaWRsOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcDoKKyAgICAgICAgUmVwbGFjZSBgQ2FsbFRyYWNp
bmdDYWxsYmFja2Agd2l0aCBgQ2FsbFRyYWNlcmAKKworICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
ZW5hYmxlZENhbnZhc0FnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0Nh
bGxUcmFjZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9DYWxsVHJhY2VyLmNw
cDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnJlY29yZENh
bnZhc0FjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnJlY29yZENhbnZhc0FjdGlvbkltcGwpOiBEZWxldGVkLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb25JbXBsKTogRGVsZXRl
ZC4KKyAgICAgICAgUmF0aGVyIHRoYW4gcGlwaW5nIHRocm91Z2ggYEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbmAgKHdoaWNoIHdvdWxkIHJlcXVpcmUgYWRkaW5nIGAjaW5jbHVkZWAKKyAgICAgICAg
Zm9yIGFsbCB0aGUgYXJndW1lbnQgdHlwZXMgaW4gdGhlIGAuaGApLCBqdXN0IHB1bGwgb3V0IHRo
ZSBgSW5zcGVjdG9yQ2FudmFzQWdlbnRgIGFuZCB1c2UgaXQKKyAgICAgICAgbG9jYWxseSBoZXJl
LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzOjpjYW52YXNDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
czo6cmVzZXRSZWNvcmRpbmdEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
cmVjb3JkQWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6dmFsdWVJ
bmRleEZvckRhdGEpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6
YnVpbGRBY3Rpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFz
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpzdGFydFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29y
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDYW52YXNBZ2VudDo6ZGlkRmluaXNo
UmVjb3JkaW5nQ2FudmFzRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFz
QWdlbnQ6OnJlY29yZEFjdGlvbik6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OnJlY29yZENhbnZhc0FjdGlvbik6IERlbGV0ZWQuCisgICAgICAgIENyZWF0
ZSBpbmRpdmlkdWFsIGBwcm9jZXNzQXJndW1lbnRgIG1lbWJlciBmdW5jdGlvbiBmb3IgZWFjaCB0
eXBlIHVzZWQgYnkgdGhlIHZhcmlvdXMgY2FudmFzCisgICAgICAgIGNvbnRleHRzIGluc3RlYWQg
b2YgaGF2aW5nIG9uZSBnaWFudCBgV1RGOjpzd2l0Y2hPbmAgZm9yIGBSZWNvcmRDYW52YXNBY3Rp
b25WYXJpYW50YC4KKworICAgICAgICAqIGh0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGw6CisgICAgICAg
ICogaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbDoKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsOgorICAg
ICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaWRsOgorICAgICAgICAq
IGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGw6CisgICAgICAgIFJlcGxhY2Ug
YENhbGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uYCB3aXRoIGBDYWxsVHJhY2Vy
PUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJgLgorCisgICAgICAgICogaHRtbC9DYW52YXNCYXNl
Lmg6CisgICAgICAgICogaHRtbC9DYW52YXNCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
bnZhc0Jhc2U6Omhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc0Jhc2U6OmNhbGxUcmFjaW5nQWN0aXZlIGNvbnN0
KTogRGVsZXRlZC4KKyAgICAgICAgKiBodG1sL0hUTUxDYW52YXNFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkhUTUxDYW52YXNFbGVtZW50OjpwYWludCk6CisgICAgICAgICogaHRtbC9j
YW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFz
UmVuZGVyaW5nQ29udGV4dDo6aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciBjb25z
dCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6c2V0
SGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcik6IEFkZGVkLgorICAgICAgICAoV2Vi
Q29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6Y2FsbFRyYWNpbmdBY3RpdmUgY29uc3QpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q2FudmFzUmVuZGVyaW5nQ29udGV4dDo6c2V0Q2Fs
bFRyYWNpbmdBY3RpdmUpOiBEZWxldGVkLgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZTo6ZGlkQ29tcG9zaXRlKToKKyAgICAgICAgUmVwbGFjZSBgY2FsbFRyYWNpbmdB
Y3RpdmVgIHdpdGggYGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJgLgorCisgICAg
ICAgICogaW5zcGVjdG9yL1JlY29yZGluZ1N3aXp6bGVUeXBlLmg6IFJlbmFtZWQgZnJvbSBTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGVzLmguCisgICAgICAgIERy
aXZlLWJ5OiBSZW5hbWUgYFJlY29yZGluZ1N3aXp6bGVUeXBlc2AgdG8gYFJlY29yZGluZ1N3aXp6
bGVUeXBlYC4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMMlJl
bmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHA6CisgICAgICAgICogbG9hZGVyL0ltYWdlTG9hZGVyLmNwcDoKKyAgICAgICAg
KiBsb2FkZXIvVGV4dFRyYWNrTG9hZGVyLmNwcDoKKyAgICAgICAgKiBwYWdlL1BhZ2UuY3BwOgor
ICAgICAgICBEcml2ZS1ieTogdW5pZmllZCBzb3VyY2VzIGluY2x1ZGUgZml4ZXMKKwogMjAyMS0w
My0wMiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0Nd
IFJlbW92ZSBJbXB1cmVQcm94eVR5cGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IGMxYjli
ODE0ODNhOTg1OGEwYjc0YTY4ZjQ4MjExYzZiZTM2ZWFkNjAuLmRiMmQwMjlhMDE4ZmQ0YWJlMjQ4
NTVhMTE2ZmNhNDI5NGQyNTI0ZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE4IEBACisyMDIxLTAzLTAyICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2Vz
IGEgaHVnZSBzeW1ib2wgdG8gYmUgY3JlYXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9w
cm9ibGVtLzczNzI4MDU3PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzOgorICAg
ICAgICAoV0kuUmVjb3JkaW5nQWN0aW9uKToKKyAgICAgICAgRG9uJ3QgdXNlIGB8fGAgZm9yIHRo
ZSBmYWxsYmFjayBvZiBgX3BheWxvYWRTbmFwc2hvdGAgYXMgaXQgY2FuIGJlIGAwYC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZy5qczoKKyAgICAgICAgRHJpdmUt
Ynk6IFJlbmFtZSBgUmVjb3JkaW5nU3dpenpsZVR5cGVzYCB0byBgUmVjb3JkaW5nU3dpenpsZVR5
cGVgLgorCiAyMDIxLTAyLTI1ICBCSiBCdXJnICA8YmJ1cmdAYXBwbGUuY29tPgogCiAgICAgICAg
IFtDb2NvYV0gV2ViIEluc3BlY3RvcjogYWRkIHN1cHBvcnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0
ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5zcGVjdG9yRXh0ZW5zaW9uRGVsZWdhdGUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUmVjb3JkaW5nLmpz
b24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL1JlY29yZGluZy5q
c29uCmluZGV4IDA0NTNkZWVkYzE0NWNmOGQyZjZhYWVhYWM5MWJjMTcxMWQxMWFiNzMuLmFjNDRl
MzI5MTViZjQwMDY4YTFiZTE4NzM5ODZjNmFkNjUzM2U5YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvUmVjb3JkaW5nLmpzb24KKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9SZWNvcmRpbmcuanNvbgpAQCAt
MzIsNyArMzIsNyBAQAogICAgICAgICAgICAgInR5cGUiOiAib2JqZWN0IiwKICAgICAgICAgICAg
ICJkZXNjcmlwdGlvbiI6ICJDb250YWluZXIgb2JqZWN0IGZvciBhIHNpbmdsZSBmcmFtZSBvZiB0
aGUgcmVjb3JkaW5nLiIsCiAgICAgICAgICAgICAicHJvcGVydGllcyI6IFsKLSAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogImFjdGlvbnMiLCAidHlwZSI6ICJhcnJheSIsICJpdGVtcyI6IHsgInR5
cGUiOiAiYW55IiB9LCAiZGVzY3JpcHRpb24iOiAiSW5mb3JtYXRpb24gYWJvdXQgYW4gYWN0aW9u
IG1hZGUgdG8gdGhlIHJlY29yZGVkIG9iamVjdC4gRm9sbG93cyB0aGUgc3RydWN0dXJlIFtuYW1l
LCBwYXJhbWV0ZXJzLCBzd2l6emxlVHlwZXMsIHRyYWNlXSwgd2hlcmUgbmFtZSBpcyBhIHN0cmlu
ZywgcGFyYW1ldGVycyBpcyBhbiBhcnJheSwgc3dpenpsZVR5cGVzIGlzIGFuIGFycmF5LCBhbmQg
dHJhY2UgaXMgYW4gYXJyYXkuIn0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJhY3Rpb25z
IiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0eXBlIjogImFueSIgfSwgImRlc2NyaXB0
aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGFuIGFjdGlvbiBtYWRlIHRvIHRoZSByZWNvcmRlZCBv
YmplY3QuIEZvbGxvd3MgdGhlIHN0cnVjdHVyZSBbbmFtZSwgcGFyYW1ldGVycywgc3dpenpsZVR5
cGVzLCB0cmFjZSwgc25hcHNob3RdLCB3aGVyZSBuYW1lIGlzIGEgc3RyaW5nLCBwYXJhbWV0ZXJz
IGlzIGFuIGFycmF5LCBzd2l6emxlVHlwZXMgaXMgYW4gYXJyYXksIHRyYWNlIGlzIGFuIGFycmF5
LCBhbmQgc25hcHNob3QgaXMgYSBkYXRhIFVSTCBpbWFnZSBvZiB0aGUgY3VycmVudCBjb250ZW50
cyBhZnRlciB0aGlzIGFjdGlvbi4ifSwKICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImR1cmF0
aW9uIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjog
IlRvdGFsIGV4ZWN1dGlvbiB0aW1lIG9mIGFsbCBhY3Rpb25zIHJlY29yZGVkIGluIHRoaXMgZnJh
bWUgaW4gbWlsbGlzZWNvbmRzLiAiIH0sCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJpbmNv
bXBsZXRlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlv
biI6ICJGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29yZGluZyB3YXMgc3RvcHBlZCBiZWZvcmUg
dGhpcyBmcmFtZSBlbmRlZC4iIH0KICAgICAgICAgICAgIF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNDVm
NzJkNGZmY2U2MDczMDZmMzFhMzIzNmRmNTM5MmUyYTMyZjNkMS4uZDEyMzUxMTRlMzE3ZDkxYzAz
MmMwMTQwOGJjYWYxNTRmYmVkMWU1OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ5MSw3ICs0OTEsNiBA
QCBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxp
dGllcy5jcHAKIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVsZVNjcmlwdExvYWRlci5jcHAKIGJpbmRp
bmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCi1iaW5kaW5ncy9qcy9DYWxsVHJhY2VyLmNw
cAogYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCiBiaW5kaW5ncy9qcy9ET01HQ091dHB1dENvbnN0
cmFpbnQuY3BwCiBiaW5kaW5ncy9qcy9ET01XcmFwcGVyV29ybGQuY3BwCkBAIC0xNDM4LDYgKzE0
MzcsNyBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAog
aW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0LmNwcAogaW5zcGVjdG9yL0luc3BlY3Rv
ckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmNwcAogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5jcHAK
K2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcAogaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuY3BwCiBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5j
cHAKIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQSURpc3BhdGNoZXIuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNzYz
YmNiMTk0NzQ4NDhmYjg2Mjk4MTExMGEyMjczMzE4N2M5MjdhNi4uNDA3ZjE4NTI1NzkwY2I3OGU4
NTA1Y2Q3ODBmOTg1MDZkNjkyZDMxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcxNiw3ICsyNzE2LDcgQEAKIAkJOTE3NUNF
NUUyMUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTE3NUNFNUEy
MUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICov
OyB9OwogCQk5MTc1Q0U1RTIxRTI4MUVEMDBERjJDMjggLyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vz
c2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkxNzVDRTVBMjFFMjgxRUQwMERGMkMyOCAvKiBKU0luc3BlY3RvckF1ZGl0QWNjZXNz
aWJpbGl0eU9iamVjdC5oICovOyB9OwogCQk5MUI4RjBCNTIxOTUzRDY1MDAwQzJCMDAgLyogQ2Vy
dGlmaWNhdGVTdW1tYXJ5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA5MUI4RjBCMzIxOTUzRDY1MDAwQzJCMDAgLyogQ2VydGlmaWNhdGVTdW1tYXJ5Lmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJOTFCOTUy
MjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTFCOTUyMjIxRjU4QTU4MDAwOTMx
REMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oICovOyB9OworCQk5MUI5NTIyNDFGNThBNThG
MDA5MzFEQzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNv
cmRpbmdTd2l6emxlVHlwZS5oICovOyB9OwogCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyog
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNo
YW5nZUludGVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTkxRTBEREMxMjMwQjQxRTUwMDE5RTFFMyAvKiBQYWdlRE9NRGVidWdnZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTFFMEREQkYy
MzBCNDFFNTAwMTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dlckFnZW50LmggKi87IH07CiAJCTkxRTBE
REM0MjMwQjQxRjEwMDE5RTFFMyAvKiBXb3JrZXJET01EZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MUUwRERDMjIzMEI0MUYwMDAx
OUUxRTMgLyogV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oICovOyB9OwpAQCAtMjkzOSw4ICsyOTM5
LDYgQEAKIAkJOTUwMTgzQ0QyNUQ2MzNEOTAwRDQzNDBGIC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0
ZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1
MDE4M0NCMjVENjMzRDgwMEQ0MzQwRiAvKiBBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTUxREVERDIy
NUUwODQ1QTAwMjBFMUVFIC8qIEFwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTFERUREMDI1RTA4NDVBMDAy
MEUxRUUgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NTFERURENjI1RTA4NDlFMDAyMEUxRUUg
LyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUxREVERDQyNUUwODQ5RDAwMjBFMUVFIC8qIEpTQXBw
bGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCAqLzsgfTsKLQkJOTUyMDc2MDUxRjI2NzVGRTAwN0Qy
QUFCIC8qIENhbGxUcmFjZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk1MjA3NjAxMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmggKi87IH07
Ci0JCTk1MjA3NjA2MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjA3NjAyMUYyNjc1Rjkw
MDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLzsgfTsKIAkJOTUyN0Q3QUIyNUQ1RkRFMjAw
QTZFMTc2IC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjdEN0E4MjVENUZERTEwMEE2RTE3NiAvKiBB
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTUyN0Q3QUYyNUQ1RkU2QzAwQTZFMTc2IC8qIEpTQXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTUyN0Q3QUQyNUQ1RkU2QjAwQTZFMTc2IC8qIEpTQXBwbGVQYXlEZXRhaWxz
VXBkYXRlRGF0YS5oICovOyB9OwogCQk5NTNCQ0VCMjI1RDYyODNEMDBBNEEyQTEgLyogSlNBcHBs
ZVBheURldGFpbHNVcGRhdGVCYXNlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NTNCQ0VBRjI1RDYyODNDMDBBNEEyQTEgLyogSlNBcHBsZVBheURldGFp
bHNVcGRhdGVCYXNlLmggKi87IH07CkBAIC0yOTQ5LDYgKzI5NDcsNyBAQAogCQk5NTk2QjkzMzI1
REVFRUEwMDBFRDJDRkEgLyogQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTU5NkI5MzAyNURFRUU5
RjAwRUQyQ0ZBIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NTk2QjkzODI1REVFRjAz
MDBFRDJDRkEgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTk2QjkzNjI1REVFRjAyMDBF
RDJDRkEgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmggKi87IH07CiAJCTk1
QTFFMkU5MjVDQzc1QTkwMDI2OEM4RSAvKiBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUExRTJFNzI1
Q0M3NUE4MDAyNjhDOEUgLyogTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk1QUE1NzEwMjVFRUVE
MzIwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUFBNTcwRTI1RUVFRDMxMDA0RTkyODMg
LyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oICovOyB9OwogCQk5NURGOUQyNTI1MkJFREIy
MDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGljcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVERjlEMjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBv
aW50ZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk5NzA1OTk3QTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5
NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzBCNzI4QTE0NEZGQUM2MDBGMDBBMzcg
LyogRXZlbnRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA5NzBCNzI4OTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTExMzcy
LDcgKzExMzcxLDcgQEAKIAkJOTE4NkYzQjcyMzI5RkI0RjAwQUZGODU3IC8qIFdlYkdQVVBpcGVs
aW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkdQVVBpcGVsaW5lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxODZGM0JBMjMyOUZFNjgwMEFGRjg1NyAv
KiBHUFVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBH
UFVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxQjhGMEIzMjE5
NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1hcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2VydGlmaWNhdGVTdW1tYXJ5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6emxlVHlw
ZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjb3JkaW5nU3dpenpsZVR5cGVzLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdT
d2l6emxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNvcmRpbmdTd2l6emxlVHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0U3RhdGVDaGFuZ2VJ
bnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFFMEREQkQyMzBCNDFFNDAw
MTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhZ2VET01EZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTFFMEREQkYyMzBCNDFFNTAwMTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dl
ckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhZ2VET01EZWJ1Z2dl
ckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTc5Miw5ICsxMTc5MSw2
IEBACiAJCTk1MURFREQwMjVFMDg0NUEwMDIwRTFFRSAvKiBBcHBsZVBheVNoaXBwaW5nTWV0aG9k
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheVNoaXBwaW5n
TWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTFERUREMzI1RTA4
NDlDMDAyMEUxRUUgLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5U2hpcHBpbmdNZXRob2REYXRh
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUxREVERDQyNUUwODQ5RDAwMjBF
MUVFIC8qIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQk5NTIwNzYwMDFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVHJhY2VyLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJOTUyMDc2MDExRjI2NzVGOTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owot
CQk5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IENhbGxUcmFjZXJUeXBlcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
NTI3RDdBODI1RDVGREUxMDBBNkUxNzYgLyogQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRh
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1MjdEN0FBMjVENUZERTEwMEE2RTE3
NiAvKiBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTUyN0Q3QUQyNUQ1RkU2QjAwQTZFMTc2IC8qIEpTQXBwbGVQYXlEZXRhaWxzVXBkYXRl
RGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0FwcGxlUGF5RGV0YWls
c1VwZGF0ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTExODEwLDYgKzEx
ODA2LDggQEAKIAkJOTU5NkI5MzUyNURFRUYwMDAwRUQyQ0ZBIC8qIEpTQXBwbGVQYXlQYXltZW50
TWV0aG9kTW9kZVVwZGF0ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NTk2QjkzNjI1REVFRjAyMDBFRDJDRkEgLyogSlNBcHBsZVBheVBheW1l
bnRNZXRob2RNb2RlVXBkYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
QXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5NUExRTJFNzI1Q0M3NUE4MDAyNjhDOEUgLyogTWVkaWFDb250cm9sc0NvbnRleHRN
ZW51SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYUNvbnRyb2xz
Q29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1QUE1NzBE
MjVFRUVEMzAwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUFBNTcwRTI1RUVFRDMxMDA0RTky
ODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTk1REY5RDIzMjUyQkVEOTkwMDBEN0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVy
aXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGlj
eUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5
Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3
NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4
ODE4LDYgKzE4ODE2LDggQEAKIAkJCQk5MTA5RTlDNTIyMkNBQkM4MDBCQjYyNjQgLyogSW5zcGVj
dG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCAqLywKIAkJCQk2QTIyRTg3MjFGMTA0MkM0MDBGNTQ2
QzMgLyogSW5zcGVjdG9yQ2FudmFzLmNwcCAqLywKIAkJCQk2QTIyRTg2RjFGMTA0MTg2MDBGNTQ2
QzMgLyogSW5zcGVjdG9yQ2FudmFzLmggKi8sCisJCQkJOTVBQTU3MEQyNUVFRUQzMDAwNEU5Mjgz
IC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwICovLAorCQkJCTk1QUE1NzBFMjVFRUVE
MzEwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmggKi8sCiAJCQkJMUM4MUI5
NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oICovLAogCQkJCTFDODFCOTU3
MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250cm9sbGVyLmNwcCAqLywKIAkJCQkxQzgx
Qjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9yQ29udHJvbGxlci5oICovLApAQCAtMTg4
NTUsNyArMTg4NTUsNyBAQAogCQkJCTU5QzI3RjA2MTM4RDI4Q0YwMDc5QjdFMiAvKiBOZXR3b3Jr
UmVzb3VyY2VzRGF0YS5oICovLAogCQkJCUE1RjM2RDM4MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdl
RGVidWdnZXIuY3BwICovLAogCQkJCUE1RjM2RDM5MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlRGVi
dWdnZXIuaCAqLywKLQkJCQk5MUI5NTIyMjFGNThBNTgwMDA5MzFEQzIgLyogUmVjb3JkaW5nU3dp
enpsZVR5cGVzLmggKi8sCisJCQkJOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGlu
Z1N3aXp6bGVUeXBlLmggKi8sCiAJCQkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVs
aW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8q
IFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovLAogCQkJCUE1ODQwRTIyMTg3QjhBQzIwMDg0M0Ix
MCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwICovLApAQCAtMjcwOTIsOSArMjcwOTIsNiBA
QAogCQkJCUUzMDU5MjY1MUUyN0EzQzYwMEQ1N0M5OCAvKiBDYWNoZWRTY3JpcHRGZXRjaGVyLmNw
cCAqLywKIAkJCQlFMzA1OTI2NjFFMjdBM0M2MDBENTdDOTggLyogQ2FjaGVkU2NyaXB0RmV0Y2hl
ci5oICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3Vy
Y2VQcm92aWRlci5oICovLAotCQkJCTk1MjA3NjAwMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJh
Y2VyLmNwcCAqLywKLQkJCQk5NTIwNzYwMTFGMjY3NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5o
ICovLAotCQkJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAq
LywKIAkJCQkwRjYwRjMyOTFERkJCMTA0MDA0MTZENkMgLyogQ29tbW9uVk0uY3BwICovLAogCQkJ
CTBGNjBGMzJBMURGQkIxMDQwMDQxNkQ2QyAvKiBDb21tb25WTS5oICovLAogCQkJCTBGOURBQTBD
MUZEMUM2NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENvbnN0cmFpbnQuY3BwICovLApAQCAtMzE1
MTUsOCArMzE1MTIsNiBAQAogCQkJCUU0M0FGOEU3MUFDNUI3RUMwMENBNzE3RSAvKiBDYWNoZVZh
bGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAv
KiBDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk3QzFFOEQwMTFFRDBDMkRB
MDBCMUQ5ODMgLyogQ2FsbGJhY2tSZXN1bHQuaCBpbiBIZWFkZXJzICovLAotCQkJCTk1MjA3NjA1
MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmggaW4gSGVhZGVycyAqLywKLQkJCQk5NTIw
NzYwNjFGMjY3NUZFMDA3RDJBQUIgLyogQ2FsbFRyYWNlclR5cGVzLmggaW4gSGVhZGVycyAqLywK
IAkJCQlFRkNDNkM4RjIwRkU5MTQ0MDBBMjMyMUIgLyogQ2FudmFzQWN0aXZpdHlSZWNvcmQuaCBp
biBIZWFkZXJzICovLAogCQkJCTMxMzE3MTU2MUZCMDc5RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVDREFGNTFFNkI4RjhCMDA0RjExRUUgLyogQ2FudmFz
Q2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFkZXJzICovLApAQCAtMzI3NDQsNiArMzI3
MzksNyBAQAogCQkJCTkxMDlFOUM4MjIyQ0FCQ0EwMEJCNjI2NCAvKiBJbnNwZWN0b3JBdWRpdFJl
c291cmNlc09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNkEyMkU4NzAxRjEwNDE4NjAwRjU0
NkMzIC8qIEluc3BlY3RvckNhbnZhcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVCODFDQTgxRkFB
NDQ2MjAwMzdEMUU2IC8qIEluc3BlY3RvckNhbnZhc0FnZW50LmggaW4gSGVhZGVycyAqLywKKwkJ
CQk5NUFBNTcxMDI1RUVFRDMyMDA0RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3Rv
ckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8q
IEluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1OUMyMzBBMjFGMjky
MDYwMDRFQzkzOSAvKiBJbnNwZWN0b3JDUFVQcm9maWxlckFnZW50LmggaW4gSGVhZGVycyAqLywK
QEAgLTM0MzU1LDcgKzM0MzUxLDcgQEAKIAkJCQkwNzI4ODBEMTIwMTBGMUY2MDA3MUIyNTUgLyog
UmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTQxQkYyMDQ5
MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVvU291cmNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0MTU4NjRBMDIzQkY3Q0JGMDBBMEE2MUUgLyogUmVhbHRpbWVWaWRlb1V0aWxpdGllcy5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGlu
Z1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJCQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMx
REMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQzNjhF
ODBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgx
NzVENDE0QzAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
Q0VFRTQzNjFGNUY4RjIxMDAxNEE1RjUgLyogUmVjdEVkZ2VzLmggaW4gSGVhZGVycyAqLywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDliMDVjMzlkNTI0NjZmZGFiY2Q3MzBkMzgwYjJkMzM2YTM4YWNjNDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkNhbGxUcmFj
ZXIuaCIKLQotI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKLSNpbmNsdWRlICJI
VE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQgQ2FsbFRyYWNlcjo6cmVjb3JkQ2FudmFz
QWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBjYW52YXNFbGVtZW50LCBjb25zdCBTdHJp
bmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50
PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgaWYgKGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQg
PSBjYW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSkKLSAgICAgICAgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQs
IG5hbWUsIFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCi12b2lkIENhbGxUcmFjZXI6OnJlY29y
ZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250
ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52
YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgbmFtZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZmQ1NzFmOWIyZDUxNjc0MjU4OTU5MGEwZTk2NGM3MWEzYTYyOTI1Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWxsVHJhY2VyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKLSNp
bmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7
Ci1jbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKLQotY2xhc3MgQ2FsbFRyYWNlciB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIHZvaWQgcmVjb3JkQ2FudmFzQWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVt
ZW50JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0Fj
dGlvblZhcmlhbnQ+JiYgPSB7IH0pOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZENhbnZhc0FjdGlv
bihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXpl
cl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
Q2FsbFRyYWNlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2Vy
VHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRhZWMyM2RhOWQxMzY4N2I5
YmVmNTFhY2FmOGM5NWJlZTE2NGExYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2VyVHlwZXMu
aAorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgotI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKLSNpbmNsdWRlICJE
T01NYXRyaXgyREluaXQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTENh
bnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVkZSAi
SFRNTFZpZGVvRWxlbWVudC5oIgotI2luY2x1ZGUgIkltYWdlRGF0YS5oIgotI2lmIEVOQUJMRShP
RkZTQ1JFRU5fQ0FOVkFTKQotI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgotI2VuZGlmCi0j
aW5jbHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0
MzJBcnJheS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0ludDMyQXJyYXkuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5oPgotI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgot
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
LQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgotI2luY2x1ZGUg
IldlYkdMRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKLSNpbmNsdWRl
ICJXZWJHTFF1ZXJ5LmgiCi0jaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKLSNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCi0jaW5jbHVkZSAiV2ViR0xTYW1wbGVyLmgi
Ci0jaW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKLSNpbmNsdWRlICJXZWJHTFN5bmMuaCIKLSNpbmNs
dWRlICJXZWJHTFRleHR1cmUuaCIKLSNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgot
I2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxF
KFdFQkdMMikKLSNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCi0jaW5jbHVkZSAi
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LQotdXNpbmcgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudCA9IFZhcmlhbnQ8Ci0gICAgLy8gZW51
bQotICAgIENhbnZhc0RpcmVjdGlvbiwKLSAgICBDYW52YXNGaWxsUnVsZSwKLSAgICBDYW52YXNM
aW5lQ2FwLAotICAgIENhbnZhc0xpbmVKb2luLAotICAgIENhbnZhc1RleHRBbGlnbiwKLSAgICBD
YW52YXNUZXh0QmFzZWxpbmUsCi0gICAgSW1hZ2VTbW9vdGhpbmdRdWFsaXR5LAotCi0gICAgLy8g
c3RydWN0Ci0gICAgRE9NTWF0cml4MkRJbml0LAotCi0gICAgLy8gcG9pbnRlcgotICAgIEVsZW1l
bnQqLAotICAgIEhUTUxJbWFnZUVsZW1lbnQqLAotICAgIEltYWdlQml0bWFwKiwKLSAgICBJbWFn
ZURhdGEqLAotICAgIFBhdGgyRCosCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMQnVmZmVy
KiwKLSAgICBXZWJHTEZyYW1lYnVmZmVyKiwKLSAgICBXZWJHTFByb2dyYW0qLAotICAgIFdlYkdM
UXVlcnkqLAotICAgIFdlYkdMUmVuZGVyYnVmZmVyKiwKLSAgICBXZWJHTFNhbXBsZXIqLAotICAg
IFdlYkdMU2hhZGVyKiwKLSAgICBXZWJHTFN5bmMqLAotICAgIFdlYkdMVGV4dHVyZSosCi0gICAg
V2ViR0xVbmlmb3JtTG9jYXRpb24qLAotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QqLAotI2Vu
ZGlmCi0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiwKLSNl
bmRpZgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4sCi0gICAgUmVmUHRyPEFycmF5QnVmZmVyVmll
dz4sCi0gICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiwKLSAgICBSZWZQdHI8Q2FudmFzUGF0dGVy
bj4sCi0gICAgUmVmUHRyPEZsb2F0MzJBcnJheT4sCi0gICAgUmVmUHRyPEhUTUxDYW52YXNFbGVt
ZW50PiwKLSAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVudD4sCi0jaWYgRU5BQkxFKFZJREVPKQot
ICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiwKLSNlbmRpZgotICAgIFJlZlB0cjxJbWFnZUJp
dG1hcD4sCi0jaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKLSAgICBSZWZQdHI8VHlwZWRPTUNTU0lt
YWdlVmFsdWU+LAotI2VuZGlmCi0gICAgUmVmUHRyPEltYWdlRGF0YT4sCi0jaWYgRU5BQkxFKE9G
RlNDUkVFTl9DQU5WQVMpCi0gICAgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4sCi0jZW5kaWYKLSAg
ICBSZWZQdHI8SW50MzJBcnJheT4sCi0gICAgUmVmUHRyPFVpbnQzMkFycmF5PiwKLQotICAgIC8v
IHZhcmlhbnQKLSAgICBDYW52YXNJbWFnZVNvdXJjZSwKLSAgICBDYW52YXNSZW5kZXJpbmdDb250
ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQsCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UsCi0gICAgT3B0aW9uYWw8V2ViR0xS
ZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNvdXJjZT4sCi0gICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UsCi0gICAgT3B0aW9uYWw8V2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+LAotI2VuZGlmCi0KLSAgICAvLyBhcnJheQot
ICAgIFZlY3RvcjxTdHJpbmc+LAotICAgIFZlY3RvcjxmbG9hdD4sCi0gICAgVmVjdG9yPHVpbnQz
Ml90PiwKLSAgICBWZWN0b3I8aW50MzJfdD4sCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgIFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OkZsb2F0MzJMaXN0OjpWYXJpYW50VHlwZSwKLSAgICBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRUeXBlLAotI2VuZGlmCi0j
aWYgRU5BQkxFKFdFQkdMMikKLSAgICBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0
OjpWYXJpYW50VHlwZSwKLSNlbmRpZgotCi0gICAgLy8gYmFzaWMKLSAgICBTdHJpbmcsCi0gICAg
ZG91YmxlLAotICAgIGZsb2F0LAotICAgIE9wdGlvbmFsPGZsb2F0PiwKLSAgICB1aW50NjRfdCwK
LSAgICBpbnQ2NF90LAotICAgIHVpbnQzMl90LAotICAgIGludDMyX3QsCi0gICAgdWludDhfdCwK
LSAgICBib29sCi0+OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IGViMjA5YWRl
MTA5NmYyNGJiMzAzZGZmNjA3NWU3M2E2YmJiMDIwOTkuLmQ4NjMzZGU4NjM2YWQ5MmNlNTQ0ZjEz
OGYxMTgxZDdhZjlkMjk4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01MzU5LDEwICs1MzU5LDEwIEBAIHN1YiBHZW5l
cmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9uCiAgICAgICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7XG4iKSB1bmxlc3Mg
JGF0dHJpYnV0ZS0+aXNTdGF0aWMgb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Rm9yd2FyZFRvTWFwTGlrZX0gb3IgJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9y
d2FyZFRvU2V0TGlrZX07CiAKICAgICAgICAgaWYgKCFJc1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7
Ci0gICAgICAgICAgICBteSAkY2FsbFRyYWNpbmdDYWxsYmFjayA9ICRhdHRyaWJ1dGUtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9IHx8ICRpbnRlcmZhY2UtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9OwotICAgICAgICAgICAgaWYgKCRj
YWxsVHJhY2luZ0NhbGxiYWNrKSB7CisgICAgICAgICAgICBteSAkY2FsbFRyYWNlciA9ICRhdHRy
aWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9IHx8ICRpbnRlcmZhY2UtPmV4
dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9OworICAgICAgICAgICAgaWYgKCRjYWxsVHJh
Y2VyKSB7CiAgICAgICAgICAgICAgICAgbXkgQGNhbGxUcmFjZXJBcmd1bWVudHMgPSAoKTsKLSAg
ICAgICAgICAgICAgICBHZW5lcmF0ZUNhbGxUcmFjZXIoJG91dHB1dEFycmF5LCAkY2FsbFRyYWNp
bmdDYWxsYmFjaywgJGF0dHJpYnV0ZS0+bmFtZSwgXEBjYWxsVHJhY2VyQXJndW1lbnRzLCAiICAg
ICIpOworICAgICAgICAgICAgICAgIEdlbmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRj
YWxsVHJhY2VyLCAkYXR0cmlidXRlLT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICIgICAg
Iik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTU3NCwxMSArNTU3NCwxMSBAQCBz
dWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbgogICAgICAgICB1bnNoaWZ0
KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJmYWxz
ZSIsICJ0aGlzT2JqZWN0IikpOwogICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRl
Q2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJmYWxzZSIsICJ0aGlzT2JqZWN0IikpOwogCi0gICAg
ICAgIG15ICRjYWxsVHJhY2luZ0NhbGxiYWNrID0gJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja30gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1
dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja307Ci0gICAgICAgIGlmICgkY2FsbFRyYWNpbmdDYWxs
YmFjaykgeworICAgICAgICBteSAkY2FsbFRyYWNlciA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+e0NhbGxUcmFjZXJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+
e0NhbGxUcmFjZXJ9OworICAgICAgICBpZiAoJGNhbGxUcmFjZXIpIHsKICAgICAgICAgICAgIG15
ICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAgICBteSBAY2FsbFRyYWNlckFyZ3VtZW50cyA9
ICgibmF0aXZlVmFsdWUiKTsKLSAgICAgICAgICAgIEdlbmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0
QXJyYXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkYXR0cmlidXRlLT5uYW1lLCBcQGNhbGxUcmFj
ZXJBcmd1bWVudHMsICRpbmRlbnQpOworICAgICAgICAgICAgR2VuZXJhdGVDYWxsVHJhY2VyKCRv
dXRwdXRBcnJheSwgJGNhbGxUcmFjZXIsICRhdHRyaWJ1dGUtPm5hbWUsIFxAY2FsbFRyYWNlckFy
Z3VtZW50cywgJGluZGVudCk7CiAgICAgICAgIH0KIAogICAgICAgICBteSAkZnVuY3Rpb25TdHJp
bmcgPSAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIsICIsIEBhcmd1bWVudHMpIC4gIikiOwpA
QCAtNjcxOCwxMCArNjcxOCwxMCBAQCBzdWIgR2VuZXJhdGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9u
Q2FsbAogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRvcGVyYXRpb24sICRpbnRlcmZhY2UsICRm
dW5jdGlvblN0cmluZywgJGluZGVudCwgJGhhc1Rocm93U2NvcGUpID0gQF87CiAKLSAgICBteSAk
Y2FsbFRyYWNpbmdDYWxsYmFjayA9ICRvcGVyYXRpb24tPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxUcmFjaW5nQ2FsbGJhY2t9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0Nh
bGxUcmFjaW5nQ2FsbGJhY2t9OwotICAgIGlmICgkY2FsbFRyYWNpbmdDYWxsYmFjaykgeworICAg
IG15ICRjYWxsVHJhY2VyID0gJG9wZXJhdGlvbi0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRy
YWNlcn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNlcn07Cisg
ICAgaWYgKCRjYWxsVHJhY2VyKSB7CiAgICAgICAgIG15IEBjYWxsVHJhY2VyQXJndW1lbnRzID0g
bWFwIHsgJF8tPm5hbWUgfSBAeyRvcGVyYXRpb24tPmFyZ3VtZW50c307Ci0gICAgICAgIEdlbmVy
YXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkb3BlcmF0
aW9uLT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICRpbmRlbnQpOworICAgICAgICBHZW5l
cmF0ZUNhbGxUcmFjZXIoJG91dHB1dEFycmF5LCAkY2FsbFRyYWNlciwgJG9wZXJhdGlvbi0+bmFt
ZSwgXEBjYWxsVHJhY2VyQXJndW1lbnRzLCAkaW5kZW50KTsKICAgICB9CiAKICAgICBteSAkZHJ5
UnVuID0gMTsKQEAgLTgxMDYsMTQgKzgxMDYsMTQgQEAgc3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVz
SWZOZWVkZWQoKQogCiBzdWIgR2VuZXJhdGVDYWxsVHJhY2VyKCkKIHsKLSAgICBteSAoJG91dHB1
dEFycmF5LCAkY2FsbFRyYWNpbmdDYWxsYmFjaywgJG5hbWUsICRhcmd1bWVudHMsICRpbmRlbnQp
ID0gQF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNhbGxUcmFjZXIsICRuYW1lLCAkYXJndW1l
bnRzLCAkaW5kZW50KSA9IEBfOwogCi0gICAgQWRkVG9JbXBsSW5jbHVkZXMoIkNhbGxUcmFjZXIu
aCIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCRjYWxsVHJhY2VyIC4gIi5oIik7CiAKLSAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNp
bmdBY3RpdmUoKSkpXG4iKTsKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiICAg
IENhbGxUcmFjZXI6OiIgLiAkY2FsbFRyYWNpbmdDYWxsYmFjayAuICIoaW1wbCwgXCIiIC4gJG5h
bWUgLiAiXCJfcyIpOworICAgIHB1c2goQCRvdXRwdXRBcnJheSwgJGluZGVudCAuICJpZiAoVU5M
SUtFTFkoaW1wbC5oYXNBY3RpdmUiIC4gJGNhbGxUcmFjZXIgLiAiKCkpKVxuIik7CisgICAgcHVz
aChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiAgICAiIC4gJGNhbGxUcmFjZXIgLiAiOjpyZWNv
cmRBY3Rpb24oaW1wbCwgXCIiIC4gJG5hbWUgLiAiXCJfcyIpOwogICAgIGlmIChzY2FsYXIoQCRh
cmd1bWVudHMpKSB7Ci0gICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiwgeyAiIC4gam9pbigi
LCAiLCBAJGFyZ3VtZW50cykgLiAiIH0iKTsKKyAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAi
LCB7ICIgLiBqb2luKCIsICIsIG1hcCB7ICRjYWxsVHJhY2VyIC4gIjo6cHJvY2Vzc0FyZ3VtZW50
KGltcGwsICIgLiAkXyAuICIpIiB9IEAkYXJndW1lbnRzKSAuICIgfSIpOwogICAgIH0KICAgICBw
dXNoKEAkb3V0cHV0QXJyYXksICIpO1xuIik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMuanNvbiBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCmluZGV4IDVkOTU2YWFiNjFkZTQwNjc5
YTg4YmRkMjcyOGE4ZjVmNGYyOGQ3NWUuLjJhNWFkYWQ0MmNkODFkY2RlOGE1NmI5YmY1M2RkYTJk
MTE2YzVhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURM
QXR0cmlidXRlcy5qc29uCkBAIC00NSw3ICs0NSw3IEBACiAgICAgICAgICJDYWNoZWRBdHRyaWJ1
dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJhdHRyaWJ1dGUiXQogICAg
ICAgICB9LAotICAgICAgICAiQ2FsbFRyYWNpbmdDYWxsYmFjayI6IHsKKyAgICAgICAgIkNhbGxU
cmFjZXIiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxvd2VkIjogWyJpbnRlcmZhY2UiLCAi
YXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdLAogICAgICAgICAgICAgInZhbHVlcyI6IFsiKiJdCiAg
ICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAKaW5kZXggMzFlMTRlOGM4YTc1NmY0MDQy
YTMxMTA4Yjg1ZDZiOTM2MTdjMGM1ZC4uNTQyM2U4YjNjODk4MGRhYTUwYjgxMWE0MDhjOTA5MjE0
ZTgzMWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNwcApAQCAtMjIsNyArMjIsNiBAQAogI2lu
Y2x1ZGUgIkpTVGVzdENhbGxUcmFjZXIuaCIKIAogI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5o
IgotI2luY2x1ZGUgIkNhbGxUcmFjZXIuaCIKICNpbmNsdWRlICJET01Jc29TdWJzcGFjZXMuaCIK
ICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkpTRE9NQmluZGluZy5oIgpA
QCAtMzksNiArMzgsOSBAQAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlckNhY2hlLmgiCiAjaW5jbHVk
ZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorI2luY2x1
ZGUgIlRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyLmgiCisjaW5jbHVkZSAiVGVzdEludGVyZmFjZUNh
bGxUcmFjZXIuaCIKKyNpbmNsdWRlICJUZXN0T3BlcmF0aW9uQ2FsbFRyYWNlci5oIgogI2luY2x1
ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5j
dGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0hlYXBBbmFseXplci5o
PgpAQCAtMjI3LDggKzIyOSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNWYWx1ZSBqc1Rlc3RDYWxsVHJh
Y2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2VHZXR0ZXIoSlNHbG9iYWxPYmplCiAgICAgYXV0byYg
dm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2JqZWN0KTsKICAgICBhdXRvIHRocm93U2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkp
Ci0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0
QXR0cmlidXRlSW50ZXJmYWNlIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVU
ZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFj
ZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcyk7CiAgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0b0pTPElETEJvb2xlYW4+KGxleGljYWxH
bG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVzdEF0dHJpYnV0ZUludGVyZmFjZSgpKSkp
OwogfQogCkBAIC0yNDQsOCArMjQ2LDggQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENh
bGxUcmFjZXJfdGVzdEF0dHJpYnV0ZUludGVyZmFjZVNldHRlcihKU0dsb2JhbE9iamUKICAgICBh
dXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9
IGNvbnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdmFsdWUpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFsc2UpOwotICAgIGlmIChVTkxJS0VMWShp
bXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRy
YWNlckludGVyZmFjZShpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcywgeyBuYXRpdmVW
YWx1ZSB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2Fs
bFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlv
bihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRy
YWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5hdGl2ZVZhbHVlKSB9KTsKICAgICBBdHRyaWJ1
dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgWyZdIHsKICAg
ICAgICAgcmV0dXJuIGltcGwuc2V0VGVzdEF0dHJpYnV0ZUludGVyZmFjZShXVEZNb3ZlKG5hdGl2
ZVZhbHVlKSk7CiAgICAgfSk7CkBAIC0yNjIsOCArMjY0LDggQEAgc3RhdGljIGlubGluZSBKU1Zh
bHVlIGpzVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZVNwZWNpZmllZEdldHRlcihKU0dsb2Jh
bE9iamUKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0oJmxleGljYWxHbG9iYWxPYmplY3QpOwog
ICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgIGF1dG8m
IGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxs
VHJhY2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJBdHRy
aWJ1dGUoaW1wbCwgInRlc3RBdHRyaWJ1dGVTcGVjaWZpZWQiX3MpOworICAgIGlmIChVTkxJS0VM
WShpbXBsLmhhc0FjdGl2ZVRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQorICAgICAgICBUZXN0
QXR0cmlidXRlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlU3Bl
Y2lmaWVkIl9zKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURM
Qm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhyb3dTY29wZSwgaW1wbC50ZXN0QXR0cmli
dXRlU3BlY2lmaWVkKCkpKSk7CiB9CiAKQEAgLTI3OSw4ICsyODEsOCBAQCBzdGF0aWMgaW5saW5l
IGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlU3BlY2lmaWVkU2V0dGVyKEpT
R2xvYmFsT2JqZQogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKICAgICBh
dXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExCb29sZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0
LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0g
ICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxU
cmFjZXI6OnRlc3RDYWxsVHJhY2VyQXR0cmlidXRlKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lm
aWVkIl9zLCB7IG5hdGl2ZVZhbHVlIH0pOworICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2
ZVRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQorICAgICAgICBUZXN0QXR0cmlidXRlQ2FsbFRy
YWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIl9zLCB7IFRl
c3RBdHRyaWJ1dGVDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0aXZlVmFsdWUp
IH0pOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJv
d1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmlidXRlU3BlY2lm
aWVkKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgICB9KTsKQEAgLTI5Nyw4ICsyOTksOCBAQCBz
dGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0cmlidXRlV2l0aFZh
cmlhbnRHZXR0ZXIoSlNHbG9iYWxPYgogICAgIGF1dG8mIHZtID0gSlNDOjpnZXRWTSgmbGV4aWNh
bEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmplY3Qud3JhcHBlZCgpOwotICAgIGlmIChV
TkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0
ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9z
KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNl
cigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBs
LCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9zKTsKICAgICBSRUxFQVNFX0FORF9SRVRVUk4o
dGhyb3dTY29wZSwgKHRvSlM8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0
cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlzT2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0
aHJvd1Njb3BlLCBpbXBsLnRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudCgpKSkpOwogfQogCkBAIC0z
MTQsOCArMzE2LDggQEAgc3RhdGljIGlubGluZSBib29sIHNldEpTVGVzdENhbGxUcmFjZXJfdGVz
dEF0dHJpYnV0ZVdpdGhWYXJpYW50U2V0dGVyKEpTR2xvYmFsT2IKICAgICBhdXRvJiBpbXBsID0g
dGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURM
VW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxP
YmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGZhbHNl
KTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKLSAgICAgICAg
Q2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgInRlc3RBdHRyaWJ1dGVX
aXRoVmFyaWFudCJfcywgeyBuYXRpdmVWYWx1ZSB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5o
YXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50
Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0
aXZlVmFsdWUpIH0pOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChsZXhpY2FsR2xvYmFsT2Jq
ZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmli
dXRlV2l0aFZhcmlhbnQoV1RGTW92ZShuYXRpdmVWYWx1ZSkpOwogICAgIH0pOwpAQCAtMzQ3LDgg
KzM0OSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJh
Y2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgVU5VU0VEX1BBUkFNKHRocm93
U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJhbWUpOwogICAgIGF1dG8mIGltcGwgPSBj
YXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdB
Y3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGlt
cGwsICJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIl9zKTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5o
YXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbkludGVyZmFjZSJf
cyk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uSW50
ZXJmYWNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAg
LTM2Niw4ICszNjgsOCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0
Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIFVOVVNFRF9QQVJB
TSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKICAgICBhdXRvJiBp
bXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxU
cmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlck9wZXJh
dGlvbihpbXBsLCAidGVzdE9wZXJhdGlvblNwZWNpZmllZCJfcyk7CisgICAgaWYgKFVOTElLRUxZ
KGltcGwuaGFzQWN0aXZlVGVzdE9wZXJhdGlvbkNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RP
cGVyYXRpb25DYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25TcGVj
aWZpZWQiX3MpOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwudGVzdE9wZXJh
dGlvblNwZWNpZmllZCgpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CkBAIC0zOTYsOCArMzk4LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVl
IGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1
cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dCgyKTsKICAgICBhdXRvIGMgPSBjb252ZXJ0PElETERPTVN0cmluZz4oKmxleGljYWxHbG9iYWxP
YmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93
U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFj
aW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFj
ZShpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgYSwgYiwgYyB9KTsKKyAg
ICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkK
KyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVz
dE9wZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnBy
b2Nlc3NBcmd1bWVudChpbXBsLCBhKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NB
cmd1bWVudChpbXBsLCBiKSwgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVu
dChpbXBsLCBjKSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RP
cGVyYXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSksIFdURk1vdmUoYiksIFdURk1vdmUoYykp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00MjAsOCAr
NDIyLDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFj
ZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2Nv
cGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRv
IG5vZGVOdWxsYWJsZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMSW50ZXJmYWNlPE5vZGU+
Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xv
YmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OlRocm93U2NvcGUmIHNjb3BlKSB7
IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEdsb2JhbE9iamVjdCwgc2NvcGUsIDAsICJu
b2RlTnVsbGFibGVBcmciLCAiVGVzdENhbGxUcmFjZXIiLCAidGVzdE9wZXJhdGlvbldpdGhOdWxs
YWJsZUFyZ3VtZW50IiwgIk5vZGUiKTsgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTih0aHJv
d1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJh
Y2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZh
Y2UoaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfcywgeyBub2RlTnVs
bGFibGVBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRB
Y3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFibGVBcmd1bWVudCJfcywgeyBUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5vZGVOdWxsYWJsZUFy
ZykgfSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9u
V2l0aE51bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2RlTnVsbGFibGVBcmcpKTsKICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwpAQCAtNDQ0LDggKzQ0Niw4IEBAIHN0
YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBl
RnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgRW5zdXJlU3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50
MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoMCk7CiAgICAgYXV0byB2YXJpYW50QXJn
ID0gY29udmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj4o
KmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VM
WShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2Fs
bFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQi
X3MsIHsgdmFyaWFudEFyZyB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6
OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhWYXJpYW50QXJndW1lbnQiX3Ms
IHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50
QXJnKSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRp
b25XaXRoVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudEFyZykpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC00NjgsOCArNDcwLDggQEAgc3RhdGlj
IGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5j
dGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIHZhcmlhbnROdWxsYWJs
ZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQs
IElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkp
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7
Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENh
bGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0
aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50Il9zLCB7IHZhcmlhbnROdWxsYWJsZUFyZyB9KTsKKyAg
ICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkK
KyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVz
dE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNl
Q2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnROdWxsYWJsZUFyZykgfSk7
CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51
bGxhYmxlVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFyaWFudE51bGxhYmxlQXJnKSk7CiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTQ5MCw4ICs0OTIsOCBA
QCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3Rv
dHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIEVuc3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1
bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwogICAgIGF1dG8gdmFyaWFudE9wdGlvbmFs
QXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRl
cjxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwgSURMRE9NU3RyaW5nPj46OlJldHVyblR5
cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQs
IElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBlPihjb252ZXJ0PElETFVuaW9uPElETEJvb2xlYW4s
IElETEZsb2F0LCBJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQw
LnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQot
ICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdE9w
ZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudCJfcywgeyB2YXJpYW50T3B0aW9uYWxB
cmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxU
cmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24o
aW1wbCwgInRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVz
dEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCB2YXJpYW50T3B0aW9u
YWxBcmcpIH0pOwogICAgIHRocm93U2NvcGUucmVsZWFzZSgpOwogICAgIGltcGwudGVzdE9wZXJh
dGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFy
ZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC01MTIs
OCArNTE0LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxU
cmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZl
U2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKICAgICBhdXRvIHZhcmlh
bnREZWZhdWx0QXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmluZWQoKSA/IGVtcHR5U3Ry
aW5nKCkgOiBjb252ZXJ0PElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJp
bmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaWYgKFVO
TElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRl
c3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJp
YW50QXJndW1lbnQiX3MsIHsgdmFyaWFudERlZmF1bHRBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZ
KGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJ
bnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRo
RGVmYXVsdFZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJv
Y2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnREZWZhdWx0QXJnKSB9KTsKICAgICB0aHJvd1Njb3Bl
LnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1
bWVudChXVEZNb3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9UZXN0Q2FsbFRyYWNlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxUcmFjZXIuaWRsCmluZGV4IGM0MzQ4YzczZDg5ZGYxZDcw
MjYyZWI5NDYwNDdmYzUyNDJhZTNjYTQuLjMyOTk4ZDY5N2E3YTk4ZDY0NzI3YTI4N2Q0OTVmYTM0
N2Y4MzA0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9UZXN0Q2FsbFRyYWNlci5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Rlc3RDYWxsVHJhY2VyLmlkbApAQCAtMjYsMTEgKzI2LDExIEBACiB0eXBlZGVmIChi
b29sZWFuIG9yIGZsb2F0IG9yIERPTVN0cmluZykgVmFyaWFudFR5cGU7CiAKIFsKLSAgICBDYWxs
VHJhY2luZ0NhbGxiYWNrPXRlc3RDYWxsVHJhY2VySW50ZXJmYWNlLAorICAgIENhbGxUcmFjZXI9
VGVzdEludGVyZmFjZUNhbGxUcmFjZXIsCiAgICAgRXhwb3NlZD1UZXN0R2xvYmFsT2JqZWN0CiBd
IGludGVyZmFjZSBUZXN0Q2FsbFRyYWNlciB7CiAgICAgYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0
dHJpYnV0ZUludGVyZmFjZTsKLSAgICBbQ2FsbFRyYWNpbmdDYWxsYmFjaz10ZXN0Q2FsbFRyYWNl
ckF0dHJpYnV0ZV0gYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJpYnV0ZVNwZWNpZmllZDsKKyAg
ICBbQ2FsbFRyYWNlcj1UZXN0QXR0cmlidXRlQ2FsbFRyYWNlcl0gYXR0cmlidXRlIGJvb2xlYW4g
dGVzdEF0dHJpYnV0ZVNwZWNpZmllZDsKIAogICAgIGF0dHJpYnV0ZSBWYXJpYW50VHlwZSB0ZXN0
QXR0cmlidXRlV2l0aFZhcmlhbnQ7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gdGVz
dFJlYWRvbmx5QXR0cmlidXRlOwpAQCAtMzgsNyArMzgsNyBAQCB0eXBlZGVmIChib29sZWFuIG9y
IGZsb2F0IG9yIERPTVN0cmluZykgVmFyaWFudFR5cGU7CiAgICAgY29uc3QgYm9vbGVhbiB0ZXN0
Q29uc3RWYWx1ZSA9IGZhbHNlOwogCiAgICAgdW5kZWZpbmVkIHRlc3RPcGVyYXRpb25JbnRlcmZh
Y2UoKTsKLSAgICBbQ2FsbFRyYWNpbmdDYWxsYmFjaz10ZXN0Q2FsbFRyYWNlck9wZXJhdGlvbl0g
dW5kZWZpbmVkIHRlc3RPcGVyYXRpb25TcGVjaWZpZWQoKTsKKyAgICBbQ2FsbFRyYWNlcj1UZXN0
T3BlcmF0aW9uQ2FsbFRyYWNlcl0gdW5kZWZpbmVkIHRlc3RPcGVyYXRpb25TcGVjaWZpZWQoKTsK
IAogICAgIHVuZGVmaW5lZCB0ZXN0T3BlcmF0aW9uV2l0aEFyZ3VtZW50cyhib29sZWFuIGEsIGZs
b2F0IGIsIERPTVN0cmluZyBjKTsKICAgICB1bmRlZmluZWQgdGVzdE9wZXJhdGlvbldpdGhOdWxs
YWJsZUFyZ3VtZW50KE5vZGU/IG5vZGVOdWxsYWJsZUFyZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNC
YXNlLmNwcAppbmRleCBlNGJiODhlMjhmOWI0NzNiZjBhNWY3YWYxZmI4ZTVjNTEyMDA1MTVkLi5l
ZDA1NjI0NmQyNTJjZjRmOGI0OGIzNzhmYmVmMDE4MTE4Y2NmNjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2FudmFzQmFzZS5jcHAKQEAgLTMwLDYgKzMwLDggQEAKICNpbmNsdWRlICJDYW52YXNSZW5kZXJp
bmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5o
IgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTTG9jay5o
PgpAQCAtMTc2LDEwICsxNzgsMTAgQEAgSGFzaFNldDxFbGVtZW50Kj4gQ2FudmFzQmFzZTo6Y3Nz
Q2FudmFzQ2xpZW50cygpIGNvbnN0CiAgICAgcmV0dXJuIGNzc0NhbnZhc0NsaWVudHM7CiB9CiAK
LWJvb2wgQ2FudmFzQmFzZTo6Y2FsbFRyYWNpbmdBY3RpdmUoKSBjb25zdAorYm9vbCBDYW52YXNC
YXNlOjpoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkgY29uc3QKIHsKICAgICBh
dXRvKiBjb250ZXh0ID0gcmVuZGVyaW5nQ29udGV4dCgpOwotICAgIHJldHVybiBjb250ZXh0ICYm
IGNvbnRleHQtPmNhbGxUcmFjaW5nQWN0aXZlKCk7CisgICAgcmV0dXJuIGNvbnRleHQgJiYgY29u
dGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpOwogfQogCiBSZWZQdHI8
SW1hZ2VCdWZmZXI+IENhbnZhc0Jhc2U6OnNldEltYWdlQnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZl
cj4mJiBidWZmZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZh
c0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCmluZGV4IDUyZTAxNTYz
YTAyMjZlMmRiYzJlNjI5YTYzODY0YzcwOGU1Y2FmYzEuLjgzZmM0NjU2MmFjMmZkZTI4ZGJkN2Zj
NzllOTRkNzMzM2E1Y2U5YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFz
QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCkBAIC0xMDMsNyAr
MTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1hZ2UqIGNvcGllZEltYWdlKCkgY29uc3Qg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvcGllZEltYWdlKCkgY29uc3QgPSAwOwogCi0g
ICAgYm9vbCBjYWxsVHJhY2luZ0FjdGl2ZSgpIGNvbnN0OworICAgIGJvb2wgaGFzQWN0aXZlSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGlj
aXQgQ2FudmFzQmFzZShJbnRTaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxl
bWVudC5jcHAKaW5kZXggMmE0ODVkNjFlOGU3YmQ1YjFiZDEwYjQ5ZTc2MmUxODk0NzZjMjJiNC4u
YmUwOWIzYjg0Y2Y4N2I3YWY3NDliNGQ4YjZiM2E3Y2Y4YmE5OGYwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAgLTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRl
ICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJKU0RPTUNvbnZlcnREaWN0
aW9uYXJ5LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdpc3RyeS5oIgorI2luY2x1ZGUgIk9mZnNj
cmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBsYWNlaG9sZGVyUmVuZGVyaW5nQ29udGV4dC5oIgog
I2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNsdWRlICJSZW5kZXJIVE1MQ2FudmFzLmgi
CkBAIC02NjUsNyArNjY2LDcgQEAgdm9pZCBIVE1MQ2FudmFzRWxlbWVudDo6cGFpbnQoR3JhcGhp
Y3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRSZWN0JiByKQogICAgICAgICB9CiAgICAg
fQogCi0gICAgaWYgKFVOTElLRUxZKG1fY29udGV4dCAmJiBtX2NvbnRleHQtPmNhbGxUcmFjaW5n
QWN0aXZlKCkpKQorICAgIGlmIChVTkxJS0VMWShtX2NvbnRleHQgJiYgbV9jb250ZXh0LT5oYXNB
Y3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkpKQogICAgICAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKCptX2NvbnRleHQpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxDYW52YXNFbGVtZW50Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCmluZGV4IDljYWU0
MzNhNzc4NjdhM2Y3NjBmOWVlMmZmNTE0ZjQzNzYyYzY4YzIuLjNiZDI1MGJmODhjMjFmNTA5NmE2
YmI4NjY3NGE5Mzk0N2M1MDY5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0Vs
ZW1lbnQuaWRsCkBAIC00NSw4ICs0NSw4IEBAIHR5cGVkZWYgKAogICAgIFJlcG9ydEV4dGVybmFs
TWVtb3J5Q29zdCwKICAgICBFeHBvc2VkPVdpbmRvdwogXSBpbnRlcmZhY2UgSFRNTENhbnZhc0Vs
ZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgQ2FsbFRy
YWNpbmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb25dIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25n
IHdpZHRoOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVkZWQsIENhbGxUcmFjaW5nQ2FsbGJhY2s9
cmVjb3JkQ2FudmFzQWN0aW9uXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBoZWlnaHQ7CisgICAg
W0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0aDsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90
TmVlZGVkLCBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXJdIGF0dHJpYnV0ZSB1
bnNpZ25lZCBsb25nIGhlaWdodDsKIAogICAgIFtDYWxsV2l0aD1HbG9iYWxPYmplY3QsIE1heVRo
cm93RXhjZXB0aW9uXSBSZW5kZXJpbmdDb250ZXh0PyBnZXRDb250ZXh0KERPTVN0cmluZyBjb250
ZXh0SWQsIGFueS4uLiBhcmd1bWVudHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgKaW5kZXggZjM4ODYzZjc4ZmVlM2ZmODk5
MjljNzRjNDdjYTJlNTM0MTk5MDA1NS4uMDA1NmFlYjljZTc3NGJiNTI3ODdmZDc2ODhlNGVhZTgw
OWFjNTY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuaApAQCAtNzcsOCArNzcsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFzKCkge30KICAgICB2aXJ0dWFsIFBsYXRm
b3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7IHJldHVybiAwOyB9CiAKLSAgICBib29s
IGNhbGxUcmFjaW5nQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9jYWxsVHJhY2luZ0FjdGl2ZTsg
fQotICAgIHZvaWQgc2V0Q2FsbFRyYWNpbmdBY3RpdmUoYm9vbCBjYWxsVHJhY2luZ0FjdGl2ZSkg
eyBtX2NhbGxUcmFjaW5nQWN0aXZlID0gY2FsbFRyYWNpbmdBY3RpdmU7IH0KKyAgICBib29sIGhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSBjb25zdCB7IHJldHVybiBtX2hhc0Fj
dGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KKyAgICB2b2lkIHNldEhhc0FjdGl2ZUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciA9IGhhc0FjdGl2
ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBjb21wb3Np
dGluZ1Jlc3VsdHNOZWVkVXBkYXRpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZp
cnR1YWwgYm9vbCBuZWVkc1ByZXBhcmF0aW9uRm9yRGlzcGxheSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2hlY2tPcmln
aW4oY29uc3QgVVJMJik7CiAgICAgdm9pZCBjaGVja09yaWdpbihjb25zdCBUeXBlZE9NQ1NTSW1h
Z2VWYWx1ZSYpOwogCi0gICAgYm9vbCBtX2NhbGxUcmFjaW5nQWN0aXZlIHsgZmFsc2UgfTsKKyAg
ICBib29sIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciB7IGZhbHNlIH07CiAK
IHByaXZhdGU6CiAgICAgQ2FudmFzQmFzZSYgbV9jYW52YXM7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbAppbmRleCBj
NWE5NWIzZDNiYTk5NWMwY2FiYjBmNDkzNjg1YzU0OTVlMjQwMzNmLi5mZWUyNDRjZmZlNmIyMzEy
NGFlYThiZDc5YzA4ODFkNTEwOThjN2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKQEAgLTI3LDcgKzI3LDcg
QEAKICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKICAg
ICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKLSAgICBDYWxsVHJhY2luZ0NhbGxiYWNrPXJlY29yZENh
bnZhc0FjdGlvbiwKKyAgICBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIsCiAg
ICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB7
CiAgICAgLy8gYmFjay1yZWZlcmVuY2UgdG8gdGhlIGNhbnZhcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5pZGwK
aW5kZXggY2MzNzU2ZDUxOGFhYTY1ZDJkY2Y1NDQzMzAxM2JjYWQzYTlkODZlOC4uMGRlMmFmODVi
YzY1NGM5ZmZlYzMwMmU4YThjNWUyMmEwZGIxNWQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQuaWRsCkBA
IC0yNiw3ICsyNiw3IEBACiBbCiAgICAgRW5hYmxlZEF0UnVudGltZT1JbWFnZUJpdG1hcCwKICAg
ICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKLSAgICBDYWxsVHJhY2luZ0NhbGxiYWNrPXJlY29y
ZENhbnZhc0FjdGlvbiwKKyAgICBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIs
CiBdIGludGVyZmFjZSBJbWFnZUJpdG1hcFJlbmRlcmluZ0NvbnRleHQgewogICAgIHJlYWRvbmx5
IGF0dHJpYnV0ZSBIVE1MQ2FudmFzRWxlbWVudCBjYW52YXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9PZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsCmluZGV4IDg4YWEzOWZhMDIxYWQ5MGEzNTllYzlkZGNhODAyNGMzMzhlNWE5
OWMuLjBhODNmYjMxOGM0ZGU4MmQ5YjcwYjQ2ZjBjM2NlYmM0OGExODYzMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFz
UmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtMzAsNyArMzAsNyBAQAogICAgIEV4cG9zZWQ9KFdp
bmRvdyxXb3JrZXIpLAogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTQ3VzdG9tTWFy
a0Z1bmN0aW9uLAotICAgIC8vIENhbGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9u
LCAvLyBGSVhNRTogT2Zmc2NyZWVuQ2FudmFzLgorICAgIC8vIENhbGxUcmFjZXI9SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlciwgLy8gRklYTUU6IE9mZnNjcmVlbkNhbnZhcy4KIF0gaW50ZXJmYWNl
IE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRCB7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIE9mZnNjcmVlbkNhbnZhcyBjYW52YXM7CiAgICAgdW5kZWZpbmVkIGNvbW1pdCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0
LmNwcAppbmRleCBhYTg5ZDMyYjk5ZmZlZGIwMzBhYTUzMjRkNDEwNzI2ZTE2OTBhMWM0Li45ZGYz
ODk1YTI5NWNlMGQ5MmVmOWJhYTY1ZjU4YWIwMzhjODkzNjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNDgs
NiArNDgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFi
bGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTEFjdGl2ZUluZm8uaCIKKyNpbmNsdWRlICJX
ZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVBU1RDLmgiCiAj
aW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFUQy5oIgogI2luY2x1ZGUgIldlYkdMQ29t
cHJlc3NlZFRleHR1cmVFVEMuaCIKQEAgLTU3LDE0ICs1OCwxOSBAQAogI2luY2x1ZGUgIldlYkdM
Q29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oIgogI2luY2x1ZGUgIldlYkdMRGVidWdSZW5kZXJl
ckluZm8uaCIKICNpbmNsdWRlICJXZWJHTERlYnVnU2hhZGVycy5oIgorI2luY2x1ZGUgIldlYkdM
RnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTExvc2VDb250ZXh0LmgiCiAjaW5jbHVkZSAi
V2ViR0xNdWx0aURyYXcuaCIKKyNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKICNpbmNsdWRlICJX
ZWJHTFF1ZXJ5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJX
ZWJHTFNhbXBsZXIuaCIKICNpbmNsdWRlICJXZWJHTFN5bmMuaCIKICNpbmNsdWRlICJXZWJHTFRl
eHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCisjaW5jbHVkZSAi
V2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNsdWRlICJXZWJHTFZlcnRleEFycmF5T2JqZWN0
LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdE9FUy5oIgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmlld0lubGluZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
R2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAppbmRleCAyMDFjNDcxNWFl
Y2RiNjg3NzQ0MmQ1ZDJkOTVlNGI2NWRjZTNkMzcyLi4zZGU5MzVlMTdmYTEwOWZkMzdlZDU4YjNl
YTczNWIxZGE5YzYzYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9X
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbApAQCAtNTksNyArNTksNyBAQCB0eXBlZGVmIChJ
bWFnZUJpdG1hcCBvciBJbWFnZURhdGEgb3IgSFRNTEltYWdlRWxlbWVudCBvciBIVE1MQ2FudmFz
RWxlbWVudCkgVGV4SQogICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIERvTm90Q2hlY2tD
b25zdGFudHMsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCi0gICAgQ2FsbFRyYWNpbmdD
YWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb24sCisgICAgQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyLAogXSBpbnRlcmZhY2UgV2ViR0wyUmVuZGVyaW5nQ29udGV4dCB7CiAKICAg
ICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBzcGxpdHMgdGhlIEFQSSBzdXJmYWNlIGludG8gYSBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0QmFzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2Fu
dmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggZDRhMjNkYjgwOGYwODQ5ZTI2OTc2
YjExMzg4NTUxNzdjOWUyYmE3MC4uYTI5NjAzNDFiNTE3ODMwZGY2NmU1Njc5NDdhODE3ZTViZDcz
ZTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAiT0VTVmVydGV4QXJy
YXlPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJCb3guaCIKICNpbmNsdWRlICJSdW50aW1lRW5h
YmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKICNpbmNsdWRlICJXZWJH
TENvbG9yQnVmZmVyRmxvYXQuaCIKICNpbmNsdWRlICJXZWJHTENvbXByZXNzZWRUZXh0dXJlQVNU
Qy5oIgogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVBVEMuaCIKQEAgLTY3LDggKzY4
LDE1IEBACiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRlcnMuaCIKICNpbmNsdWRlICJXZWJHTERl
cHRoVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMRHJhd0J1ZmZlcnMuaCIKKyNpbmNsdWRlICJX
ZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2ViR0xMb3NlQ29udGV4dC5oIgogI2luY2x1
ZGUgIldlYkdMTXVsdGlEcmF3LmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVk
ZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTFNhbXBsZXIuaCIKKyNpbmNs
dWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJXZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgi
CisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgogI2luY2x1ZGUgIldlYkdMVmVy
dGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9HZW5lcmljVHlw
ZWRBcnJheVZpZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSGVhcElubGlu
ZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVy
aW5nQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaWRsCmluZGV4IGExNmRhMjFlOTdjN2NhMjdhOWRiMWRkZWJmZGY2MjU3YmNjMWM5
MGMuLjcxODIyYzRhYjVhMWMwMDQ4MGYyMzA1YjllZDdhNjIwN2JjZjc1ZjcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmlkbApA
QCAtNDIsNyArNDIsNyBAQCB0eXBlZGVmIChJbWFnZUJpdG1hcCBvciBJbWFnZURhdGEgb3IgSFRN
TEltYWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRWxlbWVudCkgVGV4SQogICAgIERvTm90Q2hlY2tD
b25zdGFudHMsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09SRV9FWFBPUlQsCiAgICAgRXhwb3NlZD0o
V2luZG93LFdvcmtlciksCi0gICAgQ2FsbFRyYWNpbmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rp
b24sCisgICAgQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLAogXSBpbnRlcmZh
Y2UgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKaW5kZXggMDkx
MWFiNmRlMWY2N2Q2NmYxNzU1NGRlMTZiZDUyODY0ZThjMDNhOS4uN2EzODU5MDc5NzU3NWIyZDY4
ZGY0ZWUzYWYzNDViNjExNGU3NWQ4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5jcHAKQEAgLTEwMSwxMCArMTAx
LDE0IEBACiAjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJi
dWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHTFNhbXBsZXIuaCIKICNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgogI2luY2x1ZGUgIldlYkdM
U2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5j
bHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgogI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxv
Y2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlICJXZWJYUlN5c3RlbS5oIgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgpAQCAtNzkwNyw3ICs3OTExLDcgQEAgdm9pZCBXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaWRDb21wb3NpdGUoKQogewogICAgIG1fY29tcG9zaXRp
bmdSZXN1bHRzTmVlZFVwZGF0aW5nID0gZmFsc2U7CiAKLSAgICBpZiAoVU5MSUtFTFkoY2FsbFRy
YWNpbmdBY3RpdmUoKSkpCisgICAgaWYgKFVOTElLRUxZKGhhc0FjdGl2ZUluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXIoKSkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlu
aXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoKnRoaXMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4IGU1ZjIyMTBhZTk4NzMzZTk4NGFiNTg0
ZjZmOWEzYzg0N2I1YTgwNDkuLjIzMWNkOGVlNWRmYjUxMzA1NmM3OTM0ZWNlN2Y5ZDc4MmM5ZTAz
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCkBA
IC0yOCwxNCArMjgsMTcgQEAKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1
ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2FudmFzQmFzZS5oIgogI2luY2x1ZGUgIkNh
bnZhc0dyYWRpZW50LmgiCiAjaW5jbHVkZSAiQ2FudmFzUGF0dGVybi5oIgogI2luY2x1ZGUgIkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0
MkQuaCIKICNpbmNsdWRlICJDb2xvclNlcmlhbGl6YXRpb24uaCIKKyNpbmNsdWRlICJET01NYXRy
aXgyREluaXQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIK
ICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVkZSAiR1BVQ2FudmFzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKICNp
bmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC00NSw3ICs0OCw5IEBACiAjaW5jbHVkZSAi
SW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIK
ICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5o
IgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNEaXJlY3Rpb24uaCIKICNpbmNsdWRl
ICJKU0NhbnZhc0ZpbGxSdWxlLmgiCiAjaW5jbHVkZSAiSlNDYW52YXNMaW5lQ2FwLmgiCkBAIC01
NiwzNCArNjEsNDMgQEAKICNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIkpTSW1h
Z2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiSlNJbWFnZVNtb290aGluZ1F1
YWxpdHkuaCIKKyNpbmNsdWRlICJKU1dlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRl
ICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkpTV2ViR1BVRGV2aWNlLmgi
CisjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAjaW5jbHVkZSAiUGF0aDJELmgiCiAjaW5j
bHVkZSAiUGF0dGVybi5oIgotI2luY2x1ZGUgIlJlY29yZGluZ1N3aXp6bGVUeXBlcy5oIgorI2lu
Y2x1ZGUgIlJlY29yZGluZ1N3aXp6bGVUeXBlLmgiCiAjaW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGll
cy5oIgogI2luY2x1ZGUgIlN0cmluZ0FkYXB0b3JzLmgiCisjaW5jbHVkZSAiVHlwZWRPTUNTU0lt
YWdlVmFsdWUuaCIKKyNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCisjaW5jbHVk
ZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViR0xRdWVyeS5oIgorI2luY2x1ZGUgIldl
YkdMUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgiCisj
aW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgorI2luY2x1ZGUgIldlYkdMU2Ft
cGxlci5oIgorI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgiCisjaW5jbHVkZSAiV2ViR0xTeW5jLmgi
CisjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjay5oIgorI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
R0xWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdQVURldmljZS5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmll
cnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+Ci0KLSNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQotI2luY2x1ZGUg
IlR5cGVkT01DU1NJbWFnZVZhbHVlLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJHTCkKLSNp
bmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdMUmVuZGVy
aW5nQ29udGV4dC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCR0wyKQotI2luY2x1ZGUgIkpT
V2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRl
eHQuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQkdQVSkKLSNpbmNsdWRlICJHUFVDYW52YXND
b250ZXh0LmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVEZXZpY2UuaCIKLSNpbmNsdWRlICJXZWJHUFVE
ZXZpY2UuaCIKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0yNzksNyArMjkzLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OmNhbnZhc0No
YW5nZWQoKQogICAgIGF1dG8qIGNvbnRleHQgPSBjYW52YXNDb250ZXh0KCk7CiAgICAgQVNTRVJU
KGNvbnRleHQpOwogCi0gICAgaWYgKCFjb250ZXh0LT5jYWxsVHJhY2luZ0FjdGl2ZSgpKQorICAg
IGlmICghY29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBTaW5jZSAyRCBjb250ZXh0cyBhcmUgYWJsZSB0byBiZSBm
dWxseSByZXByb2R1Y2VkIGluIHRoZSBmcm9udGVuZCwgd2UgZG9uJ3QgbmVlZCBzbmFwc2hvdHMu
CkBAIC0zMDcsNyArMzIxLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5n
RGF0YSgpCiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJl
Y29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCi0gICAgY29udGV4dC0+c2V0Q2FsbFRyYWNpbmdB
Y3RpdmUoZmFsc2UpOworICAgIGNvbnRleHQtPnNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIoZmFsc2UpOwogfQogCiBib29sIEluc3BlY3RvckNhbnZhczo6aGFzUmVjb3JkaW5n
RGF0YSgpIGNvbnN0CkBAIC0zMjAsNiArMzM0LDQ0NSBAQCBib29sIEluc3BlY3RvckNhbnZhczo6
Y3VycmVudEZyYW1lSGFzRGF0YSgpIGNvbnN0CiAgICAgcmV0dXJuICEhbV9mcmFtZXM7CiB9CiAK
K3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1
ZT4+IGJ1aWxkQXJyYXlGb3JWZWN0b3IoY29uc3QgVmVjdG9yPFQ+JiB2ZWN0b3IpCit7CisgICAg
YXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBm
b3IgKGF1dG8mIGl0ZW0gOiB2ZWN0b3IpCisgICAgICAgIGFycmF5LT5hZGRJdGVtKGl0ZW0pOwor
ICAgIHJldHVybiBhcnJheTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENh
bnZhc0RpcmVjdGlvbiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENh
bnZhc0ZpbGxSdWxlIGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0
YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2Fu
dmFzSW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFy
Z3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1l
bnQodmFsdWUpOworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQo
Q2FudmFzTGluZUNhcCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRh
dGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENh
bnZhc0xpbmVKb2luIGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0
YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3R5bGVWYXJpYW50JiBhcmd1bWVudCkKK3sKKyAg
ICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgeworICAg
ICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVlKTsKKyAgICB9KTsKK30KKworT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1RleHRBbGlnbiBhcmd1bWVudCkKK3sKKyAg
ICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmco
YXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1RleHRCYXNlbGluZSBhcmd1bWVudCkKK3sK
KyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KERPTU1hdHJpeDJESW5pdCYgYXJndW1lbnQpCit7
CisgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8ZG91YmxlPjo6Y3JlYXRlKCk7CisgICAg
YXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYS52YWx1ZU9yKDEpKTsKKyAgICBhcnJheS0+YWRkSXRl
bShhcmd1bWVudC5iLnZhbHVlT3IoMCkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmMu
dmFsdWVPcigwKSk7CisgICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuZC52YWx1ZU9yKDEpKTsK
KyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5lLnZhbHVlT3IoMCkpOworICAgIGFycmF5LT5h
ZGRJdGVtKGFyZ3VtZW50LmYudmFsdWVPcigwKSk7CisgICAgcmV0dXJuIHt7IFdURk1vdmUoYXJy
YXkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6RE9NTWF0cml4IH19OworfQorCitPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoRWxlbWVudCogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1
bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIC8vIEVsZW1lbnRzIGFy
ZSBub3Qgc2VyaWFsaXphYmxlLCBzbyBhZGQgYSBzdHJpbmcgYXMgYSBwbGFjZWhvbGRlciBzaW5j
ZSB0aGUgYWN0dWFsCisgICAgLy8gZWxlbWVudCBjYW5ub3QgYmUgcmVjb25zdHJ1Y3RlZCBpbiB0
aGUgZnJvbnRlbmQuCisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKCJFbGVtZW50Il9z
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok5vbmUgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChIVE1MSW1hZ2VFbGVtZW50KiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFy
Z3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1
ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsK
K30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlQml0bWFwKiBhcmd1bWVu
dCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpJbWFnZUJpdG1hcCB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KEltYWdlRGF0YSogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJn
dW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2VEYXRhIH19OworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VTbW9vdGhpbmdRdWFsaXR5IGFyZ3VtZW50KQor
eworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0
cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OworfQorCitP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0aW9uYWw8ZmxvYXQ+JiBhcmd1bWVudCkK
K3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oKmFyZ3Vt
ZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9CisKK09wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudChQYXRoMkQqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1l
bnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5k
ZXhGb3JEYXRhKGJ1aWxkU3RyaW5nRnJvbVBhdGgoYXJndW1lbnQtPnBhdGgoKSkpLCBSZWNvcmRp
bmdTd2l6emxlVHlwZTo6UGF0aDJEIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJn
dW1lbnQoUmVmUHRyPENhbnZhc0dyYWRpZW50PiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1
bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgdmFsdWVJ
bmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6Q2FudmFzR3JhZGll
bnQgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8Q2FudmFz
UGF0dGVybj4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkNhbnZhc1BhdHRlcm4gfX07Cit9CisKK09wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiBhcmd1bWVu
dCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpJbWFnZSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJl
ZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIHByb2Nlc3NB
cmd1bWVudChhcmd1bWVudC5nZXQoKSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1
bWVudChSZWZQdHI8SW1hZ2VCaXRtYXA+JiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gcHJvY2Vz
c0FyZ3VtZW50KGFyZ3VtZW50LmdldCgpKTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFJlZlB0cjxJbWFnZURhdGE+JiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gcHJvY2Vz
c0FyZ3VtZW50KGFyZ3VtZW50LmdldCgpKTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFh
cmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNP
Tjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlR5cGVkQXJyYXkgfX07
Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlclZpZXc+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4mIGFyZ3VtZW50KQorewor
ICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0
dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBl
ZEFycmF5IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpT
Qzo6SW50MzJBcnJheT4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUo
MCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OworfQorCitPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6VWludDMyQXJyYXk+JiBhcmd1bWVudCkK
K3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAg
IHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6
VHlwZWRBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFN0cmlu
ZyYgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6
cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxTdHJpbmc+JiBhcmd1bWVudCkKK3sKKyAgICBhdXRvIGRl
ZHVwbGljYXRlZCA9IGFyZ3VtZW50Lm1hcChbJl0gKGNvbnN0IFN0cmluZyYgaXRlbSkgeworICAg
ICAgICByZXR1cm4gaW5kZXhGb3JEYXRhKGl0ZW0pOworICAgIH0pOworICAgIHJldHVybiB7eyBi
dWlsZEFycmF5Rm9yVmVjdG9yKFdURk1vdmUoZGVkdXBsaWNhdGVkKSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFj
ZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChW
ZWN0b3I8ZmxvYXQ+JiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgYnVpbGRBcnJheUZvclZl
Y3Rvcihhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKK30KKworT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3Rvcjx1aW50MzJfdD4mIGFyZ3VtZW50KQor
eworICAgIGF1dG8gbWFwcGVkID0gYXJndW1lbnQubWFwKFsmXSAodWludDMyX3QgaXRlbSkgewor
ICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpdGVtKTsKKyAgICB9KTsKKyAgICBy
ZXR1cm4ge3sgYnVpbGRBcnJheUZvclZlY3RvcihtYXBwZWQpLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZTo6QXJyYXkgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlBy
b2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChWZWN0b3I8
aW50MzJfdD4mIGFyZ3VtZW50KQoreworICAgIGF1dG8gbWFwcGVkID0gYXJndW1lbnQubWFwKFsm
XSAoaW50MzJfdCBpdGVtKSB7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxkb3VibGU+KGl0
ZW0pOworICAgIH0pOworICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKG1hcHBlZCks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KGRvdWJsZSBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFs
dWU6OmNyZWF0ZShhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9
CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChmbG9hdCBhcmd1bWVudCkKK3sKKyAg
ICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3Vt
ZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9CisKK09wdGlvbmFsPElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52
YXM6OnByb2Nlc3NBcmd1bWVudCh1aW50NjRfdCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sg
SlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxkb3VibGU+KGFyZ3VtZW50KSksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NB
cmd1bWVudChpbnQ2NF90IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGU6Ok51bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KHVpbnQz
Ml90IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRp
Y19jYXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9
fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGludDMyX3QgYXJndW1lbnQp
Cit7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8ZG91Ymxl
Pihhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6TnVtYmVyIH19OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQodWludDhfdCBhcmd1bWVudCkKK3sKKyAgICByZXR1
cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50KSksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChib29sIGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkJvb2xlYW4gfX07Cit9CisK
KyNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVlPiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFh
cmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgdmFs
dWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07
Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1RZUEVEX09NKQorCisjaWYgRU5BQkxFKE9GRlND
UkVFTl9DQU5WQVMpCisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zm
c2NyZWVuQ2FudmFzPiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJn
dW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKworI2lmIEVOQUJMRShWSURFTykKKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYgYXJndW1lbnQp
Cit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAg
ICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6SW1hZ2UgfX07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoVklERU8pCisKKyNpZiBFTkFC
TEUoV0VCR0wpCisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChPcHRpb25hbDxXZWJH
TFJlbmRlcmluZ0NvbnRleHRCYXNlOjpCdWZmZXJEYXRhU291cmNlPiYgYXJndW1lbnQpCit7Cisg
ICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKCphcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgeworICAgICAg
ICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVlKTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6
OlRleEltYWdlU291cmNlPiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAg
ICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKCphcmd1
bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50
KHZhbHVlKTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdl
YkdMQnVmZmVyKiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1
cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xCdWZmZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6
OnByb2Nlc3NBcmd1bWVudChXZWJHTEZyYW1lYnVmZmVyKiBhcmd1bWVudCkKK3sKKyAgICBpZiAo
IWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xGcmFtZWJ1
ZmZlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUHJvZ3Jh
bSogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGU6OldlYkdMUHJvZ3JhbSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KFdlYkdMUXVlcnkqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisg
ICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpj
cmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFF1ZXJ5IH19OworfQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJidWZmZXIqIGFyZ3VtZW50KQor
eworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpX
ZWJHTFJlbmRlcmJ1ZmZlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UmIGFyZ3VtZW50KQor
eworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7
CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOworfQorCitP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
RmxvYXQzMkxpc3Q6OlZhcmlhbnRUeXBlJiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gV1RGOjpz
d2l0Y2hPbihhcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gcHJv
Y2Vzc0FyZ3VtZW50KHZhbHVlKTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vz
c0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkludDMyTGlzdDo6VmFyaWFudFR5
cGUmIGFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0g
KGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOwor
ICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJp
bmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQoreworICAgIHJldHVybiBX
VEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVy
biBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoV2ViR0xTYW1wbGVyKiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3Vt
ZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpW
YWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xTYW1wbGVyIH19Owor
fQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVu
dD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTaGFkZXIqIGFyZ3VtZW50
KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cisg
ICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBl
OjpXZWJHTFNoYWRlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdl
YkdMU3luYyogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVj
b3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU3luYyB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KFdlYkdMVGV4dHVyZSogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVu
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFs
dWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMVGV4dHVyZSB9fTsKK30K
KworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBh
cmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6
emxlVHlwZTo6V2ViR0xVbmlmb3JtTG9jYXRpb24gfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChXZWJHTFZlcnRleEFycmF5T2JqZWN0KiBhcmd1bWVudCkKK3sKKyAgICBp
ZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7
eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xWZXJ0
ZXhBcnJheU9iamVjdCB9fTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKKworI2lmIEVO
QUJMRShXRUJHTDIpCisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFRyYW5z
Zm9ybUZlZWRiYWNrKiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDAp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayB9fTsKK30KKwor
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMMlJlbmRlcmluZ0NvbnRleHQ6OlVp
bnQzMkxpc3Q6OlZhcmlhbnRUeXBlJiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0
Y2hPbihhcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gcHJvY2Vz
c0FyZ3VtZW50KHZhbHVlKTsKKyAgICB9KTsKK30KKworI2VuZGlmIC8vIEVOQUJMRShXRUJHTDIp
CisKIHN0YXRpYyBib29sIHNob3VsZFNuYXBzaG90Qml0bWFwUmVuZGVyZXJBY3Rpb24oY29uc3Qg
U3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBuYW1lID09ICJ0cmFuc2ZlckZyb21JbWFnZUJp
dG1hcCI7CkBAIC0zNDUsNyArNzk4LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxkU25hcHNob3RXZWJH
TDJBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogfQogI2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9y
Q2FudmFzOjpyZWNvcmRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQordm9pZCBJbnNw
ZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbihTdHJpbmcmJiBuYW1lLCBJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudHMmJiBhcmd1bWVudHMpCiB7CiAgICAgaWYgKCFt
X2luaXRpYWxTdGF0ZSkgewogICAgICAgICAvLyBXZSBzaG91bGQgb25seSBjb25zdHJ1Y3QgdGhl
IGluaXRpYWwgc3RhdGUgZm9yIHRoZSBmaXJzdCBhY3Rpb24gb2YgdGhlIHJlY29yZGluZy4KQEAg
LTM3MywxMCArODI2LDYgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbihjb25z
dCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxSZWMKIAogICAgIGFwcGVuZEFj
dGlvblNuYXBzaG90SWZOZWVkZWQoKTsKIAotICAgIG1fbGFzdFJlY29yZGVkQWN0aW9uID0gYnVp
bGRBY3Rpb24obmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci0gICAgbV9idWZmZXJVc2VkICs9
IG1fbGFzdFJlY29yZGVkQWN0aW9uLT5tZW1vcnlDb3N0KCk7Ci0gICAgbV9jdXJyZW50QWN0aW9u
cy0+YWRkSXRlbSgqbV9sYXN0UmVjb3JkZWRBY3Rpb24pOwotCiAgICAgYXV0byogY29udGV4dCA9
IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29udGV4dCk7CiAgICAgLy8gRklYTUU6IDxo
dHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJbnNwZWN0b3I6IENhbnZhczogc3VwcG9y
dCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2aWNlCkBAIC0zOTEsNiArODQwLDEwIEBA
IHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lLCBz
dGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjCiAgICAgZWxzZSBpZiAoaXM8V2ViR0wyUmVuZGVyaW5n
Q29udGV4dD4oY29udGV4dCkgJiYgc2hvdWxkU25hcHNob3RXZWJHTDJBY3Rpb24obmFtZSkpCiAg
ICAgICAgIG1fY29udGVudENoYW5nZWQgPSB0cnVlOwogI2VuZGlmCisKKyAgICBtX2xhc3RSZWNv
cmRlZEFjdGlvbiA9IGJ1aWxkQWN0aW9uKFdURk1vdmUobmFtZSksIFdURk1vdmUoYXJndW1lbnRz
KSk7CisgICAgbV9idWZmZXJVc2VkICs9IG1fbGFzdFJlY29yZGVkQWN0aW9uLT5tZW1vcnlDb3N0
KCk7CisgICAgbV9jdXJyZW50QWN0aW9ucy0+YWRkSXRlbSgqbV9sYXN0UmVjb3JkZWRBY3Rpb24p
OwogfQogCiB2b2lkIEluc3BlY3RvckNhbnZhczo6ZmluYWxpemVGcmFtZSgpCkBAIC03ODYsNiAr
MTIzOSwxMSBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjppbmRleEZvckRhdGEoRHVwbGljYXRlRGF0
YVZhcmlhbnQgZGF0YSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8aW50PihpbmRleCk7CiB9CiAK
K1JlZjxKU09OOjpWYWx1ZT4gSW5zcGVjdG9yQ2FudmFzOjp2YWx1ZUluZGV4Rm9yRGF0YShEdXBs
aWNhdGVEYXRhVmFyaWFudCBkYXRhKQoreworICAgIHJldHVybiBKU09OOjpWYWx1ZTo6Y3JlYXRl
KGluZGV4Rm9yRGF0YShkYXRhKSk7Cit9CisKIFN0cmluZyBJbnNwZWN0b3JDYW52YXM6OnN0cmlu
Z0luZGV4Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQogewogICAgIHJldHVybiBTdHJpbmc6Om51
bWJlcihpbmRleEZvckRhdGEoa2V5KSk7CkBAIC04MDMsMTQgKzEyNjEsNiBAQCBzdGF0aWMgUmVm
PEpTT046OkFycmF5T2Y8ZG91YmxlPj4gYnVpbGRBcnJheUZvckFmZmluZVRyYW5zZm9ybShjb25z
dCBBZmZpbmVUcmFucwogICAgIHJldHVybiBhcnJheTsKIH0KIAotdGVtcGxhdGU8dHlwZW5hbWUg
VD4gc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvclZl
Y3Rvcihjb25zdCBWZWN0b3I8VD4mIHZlY3RvcikKLXsKLSAgICBhdXRvIGFycmF5ID0gSlNPTjo6
QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwotICAgIGZvciAoYXV0byYgaXRlbSA6IHZl
Y3RvcikKLSAgICAgICAgYXJyYXktPmFkZEl0ZW0oaXRlbSk7Ci0gICAgcmV0dXJuIGFycmF5Owot
fQotCiBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52
YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKCkKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQ29u
dGV4dCgpOwpAQCAtOTE1LDIzOSArMTM2NSwyMCBAQCBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6
SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKCkKICAgICBy
ZXR1cm4gaW5pdGlhbFN0YXRlUGF5bG9hZDsKIH0KIAotUmVmPEpTT046OkFycmF5T2Y8SlNPTjo6
VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwg
c3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgcGFyYW1l
dGVycykKK1JlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpi
dWlsZEFjdGlvbihTdHJpbmcmJiBuYW1lLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudHMmJiBhcmd1bWVudHMpCiB7CiAgICAgYXV0byBhY3Rpb24gPSBKU09OOjpB
cnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7Ci0gICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4
Rm9yRGF0YShuYW1lKSk7CisgICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShXVEZNb3Zl
KG5hbWUpKSk7CiAKICAgICBhdXRvIHBhcmFtZXRlcnNEYXRhID0gSlNPTjo6QXJyYXlPZjxKU09O
OjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGF1dG8gc3dpenpsZVR5cGVzID0gSlNPTjo6QXJyYXlP
ZjxpbnQ+OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8mJiBhcmd1bWVudCA6IFdURk1vdmUoYXJn
dW1lbnRzKSkgeworICAgICAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICAgICAgY29udGludWU7
CiAKLSAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmcGFyYW1ldGVyc0RhdGEsICZzd2l6emxlVHlw
ZXNdIChhdXRvIHZhbHVlLCBSZWNvcmRpbmdTd2l6emxlVHlwZXMgc3dpenpsZVR5cGUpIHsKLSAg
ICAgICAgcGFyYW1ldGVyc0RhdGEtPmFkZEl0ZW0odmFsdWUpOwotICAgICAgICBzd2l6emxlVHlw
ZXMtPmFkZEl0ZW0oc3RhdGljX2Nhc3Q8aW50Pihzd2l6emxlVHlwZSkpOwotICAgIH07Ci0KLSAg
ICAvLyBEZWNsYXJlZCBiZWZvcmUgaXQncyBpbml0aWFsaXplZCBzbyBpdCBjYW4gYmUgdXNlZCBy
ZWN1cnNpdmVseS4KLSAgICBGdW5jdGlvbjx2b2lkKGNvbnN0IFJlY29yZENhbnZhc0FjdGlvblZh
cmlhbnQmKT4gcGFyc2VQYXJhbWV0ZXI7Ci0gICAgcGFyc2VQYXJhbWV0ZXIgPSBbJl0gKGNvbnN0
IGF1dG8mIHBhcmFtZXRlcikgewotICAgICAgICBXVEY6OnN3aXRjaE9uKHBhcmFtZXRlciwKLSAg
ICAgICAgICAgIFsmXSAoQ2FudmFzRGlyZWN0aW9uIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRl
eEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpKSwgUmVjb3JkaW5nU3dp
enpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZdIChDYW52YXNGaWxsUnVsZSB2
YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3Ry
aW5nKHZhbHVlKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsgfSwKLSAgICAgICAg
ICAgIFsmXSAoQ2FudmFzTGluZUNhcCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRh
KGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoQ2FudmFzTGluZUpvaW4gdmFsdWUpIHsg
YWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1
ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7IH0sCi0gICAgICAgICAgICBbJl0g
KENhbnZhc1RleHRBbGlnbiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZl
cnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3Ry
aW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoQ2FudmFzVGV4dEJhc2VsaW5lIHZhbHVlKSB7IGFk
ZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcodmFsdWUp
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAgICAgWyZdIChJ
bWFnZVNtb290aGluZ1F1YWxpdHkgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShj
b252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6
OlN0cmluZyk7IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IERPTU1hdHJpeDJESW5pdCYgdmFs
dWUpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+
OjpjcmVhdGUoKTsKLSAgICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5hLnZhbHVl
T3IoMSkpOwotICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVlLmIudmFsdWVPcigw
KSk7Ci0gICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuYy52YWx1ZU9yKDApKTsK
LSAgICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2YWx1ZS5kLnZhbHVlT3IoMSkpOwotICAg
ICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVlLmUudmFsdWVPcigwKSk7Ci0gICAgICAg
ICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuZi52YWx1ZU9yKDApKTsKLSAgICAgICAgICAg
ICAgICBhZGRQYXJhbWV0ZXIoV1RGTW92ZShhcnJheSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
RE9NTWF0cml4KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IEVsZW1l
bnQqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgIC8vIEVsZW1lbnRzIGFyZSBub3Qgc2VyaWFsaXphYmxlLCBzbyBhZGQgYSBzdHJpbmcg
YXMgYSBwbGFjZWhvbGRlciBzaW5jZSB0aGUgYWN0dWFsCi0gICAgICAgICAgICAgICAgICAgIC8v
IGVsZW1lbnQgY2Fubm90IGJlIHJlY29uc3RydWN0ZWQgaW4gdGhlIGZyb250ZW5kLgotICAgICAg
ICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKCJFbGVtZW50IiksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlczo6Tm9uZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIFsmXSAoSFRNTEltYWdlRWxlbWVudCogdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRl
eEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlKTsgfSwKLSAgICAg
ICAgICAgIFsmXSAoSW1hZ2VCaXRtYXAqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZh
bHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVl
KSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZUJpdG1hcCk7IH0sCi0gICAgICAgICAgICBb
Jl0gKEltYWdlRGF0YSogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAg
ICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRp
bmdTd2l6emxlVHlwZXM6OkltYWdlRGF0YSk7IH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFBh
dGgyRCogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoYnVpbGRTdHJpbmdGcm9tUGF0aCh2YWx1
ZS0+cGF0aCgpKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6UGF0aDJEKTsgfSwKLSNpZiBFTkFC
TEUoV0VCR0wpCi0gICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3
NjAwOT4gV2ViIEluc3BlY3Rvcjogc2VuZCBkYXRhIGZvciBXZWJHTCBvYmplY3RzIGR1cmluZyBh
IHJlY29yZGluZyBpbnN0ZWFkIG9mIGEgcGxhY2Vob2xkZXIgc3RyaW5nCi0gICAgICAgICAgICBb
Jl0gKGNvbnN0IFdlYkdMQnVmZmVyKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1
ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVU
eXBlczo6V2ViR0xCdWZmZXIpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29u
c3QgV2ViR0xGcmFtZWJ1ZmZlciogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUp
Ci0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZXM6OldlYkdMRnJhbWVidWZmZXIpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgV2ViR0xQcm9ncmFtKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6V2ViR0xQcm9ncmFtKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0
IFdlYkdMUXVlcnkqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAg
ICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJH
TFF1ZXJ5KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMUmVu
ZGVyYnVmZmVyKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
ICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xS
ZW5kZXJidWZmZXIpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2Vi
R0xTYW1wbGVyKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAg
ICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xT
YW1wbGVyKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMU2hh
ZGVyKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAg
ICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xTaGFkZXIp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xTeW5jKiB2YWx1
ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRk
UGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xTeW5jKTsKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMVGV4dHVyZSogdmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRl
cigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdMVGV4dHVyZSk7Ci0gICAgICAgICAgICB9
LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiB2YWx1ZSkg
ewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFy
YW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdMVW5pZm9y
bUxvY2F0aW9uKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdM
VmVydGV4QXJyYXlPYmplY3QqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQot
ICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVz
OjpXZWJHTFZlcnRleEFycmF5T2JqZWN0KTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSAgICAg
ICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEFycmF5QnVmZmVyPiYgdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBS
ZWNvcmRpbmdTd2l6emxlVHlwZXM6OlR5cGVkQXJyYXkpOwotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4mIHZhbHVlKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIo
MCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpUeXBlZEFycmF5KTsKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxDYW52YXNHcmFkaWVudD4mIHZhbHVlKSB7Ci0g
ICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0
ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpDYW52YXNHcmFk
aWVudCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8Q2Fu
dmFzUGF0dGVybj4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAg
ICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGVzOjpDYW52YXNQYXR0ZXJuKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICBbJl0gKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+JiB2YWx1ZSkgewotICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29y
ZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgWyZdIChjb25zdCBSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JiB2YWx1ZSkgewotICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGlu
ZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2UpOwotICAgICAg
ICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+
JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6SW1hZ2UpOwotICAgICAgICAgICAgfSwKLSNpZiBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykK
LSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPE9mZnNjcmVlbkNhbnZhcz4mIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJh
bWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7
Ci0gICAgICAgICAgICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKFZJREVPKQotICAgICAgICAgICAg
WyZdIChjb25zdCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4mIHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhG
b3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7Ci0gICAgICAgICAg
ICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19UWVBFRF9PTSkKLSAgICAgICAgICAgIFsmXSAo
Y29uc3QgUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVlPiYgdmFsdWUpIHsKLSAgICAgICAgICAg
ICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZv
ckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlKTsKLSAgICAgICAgICAg
IH0sCi0jZW5kaWYKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEltYWdlQml0bWFwPiYg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAg
IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6
OkltYWdlQml0bWFwKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJl
ZlB0cjxJbWFnZURhdGE+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29y
ZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VEYXRhKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAg
ICBbJl0gKGNvbnN0IFJlZlB0cjxJbnQzMkFycmF5PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRp
bmdTd2l6emxlVHlwZXM6OlR5cGVkQXJyYXkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
IFsmXSAoY29uc3QgUmVmUHRyPFVpbnQzMkFycmF5PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAg
ICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRp
bmdTd2l6emxlVHlwZXM6OlR5cGVkQXJyYXkpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAg
IFsmXSAoY29uc3QgQ2FudmFzSW1hZ2VTb3VyY2UmIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
V1RGOjp2aXNpdChwYXJzZVBhcmFtZXRlciwgdmFsdWUpOwotICAgICAgICAgICAgfSwKLSAgICAg
ICAgICAgIFsmXSAoY29uc3QgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3R5bGVWYXJp
YW50JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFyc2VQYXJhbWV0ZXIs
IHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0jaWYgRU5BQkxFKFdFQkdMKQotICAgICAgICAgICAg
WyZdIChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpCdWZmZXJEYXRhU291cmNlJiB2
YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFyc2VQYXJhbWV0ZXIsIHZhbHVl
KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IE9wdGlvbmFsPFdlYkdM
UmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2U+JiB2YWx1ZSkgewotICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VQYXJhbWV0ZXIo
dmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBX
ZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJjZSYgdmFsdWUpIHsKLSAgICAg
ICAgICAgICAgICBXVEY6OnZpc2l0KHBhcnNlUGFyYW1ldGVyLCB2YWx1ZSk7Ci0gICAgICAgICAg
ICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBPcHRpb25hbDxXZWJHTFJlbmRlcmluZ0NvbnRl
eHRCYXNlOjpUZXhJbWFnZVNvdXJjZT4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZh
bHVlKQotICAgICAgICAgICAgICAgICAgICBwYXJzZVBhcmFtZXRlcih2YWx1ZS52YWx1ZSgpKTsK
LSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSAgICAgICAgICAgIFsmXSAoY29uc3QgVmVjdG9yPFN0
cmluZz4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgYXV0byBkZWR1cGxpY2F0ZWQgPSB2YWx1
ZS5tYXAoWyZdIChjb25zdCBTdHJpbmcmIGl0ZW0pIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGluZGV4Rm9yRGF0YShpdGVtKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAg
ICAgICBhZGRQYXJhbWV0ZXIoYnVpbGRBcnJheUZvclZlY3RvcihkZWR1cGxpY2F0ZWQpLCBSZWNv
cmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
WyZdIChjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoYnVpbGRBcnJh
eUZvclZlY3Rvcih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6QXJyYXkpOyB9LAotICAg
ICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8dWludDMyX3Q+JiB2YWx1ZSkgewotICAgICAgICAg
ICAgICAgIGF1dG8gbWFwcGVkID0gdmFsdWUubWFwKFsmXSAodWludDMyX3QgaXRlbSkgewotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91YmxlPihpdGVtKTsKLSAgICAg
ICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoYnVpbGRBcnJheUZv
clZlY3RvcihtYXBwZWQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkFycmF5KTsKLSAgICAgICAg
ICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZlY3RvcjxpbnQzMl90PiYgdmFsdWUpIHsg
YWRkUGFyYW1ldGVyKGJ1aWxkQXJyYXlGb3JWZWN0b3IodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXM6OkFycmF5KTsgfSwKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgICAgICAgICBbJl0gKGNv
bnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkZsb2F0MzJMaXN0OjpWYXJpYW50VHlwZSYg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBXVEY6OnZpc2l0KHBhcnNlUGFyYW1ldGVyLCB2YWx1
ZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFJlbmRlcmlu
Z0NvbnRleHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRUeXBlJiB2YWx1ZSkgewotICAgICAgICAg
ICAgICAgIFdURjo6dmlzaXQocGFyc2VQYXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0s
Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wyKQotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSYgdmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICBXVEY6OnZpc2l0KHBhcnNlUGFyYW1ldGVyLCB2YWx1ZSk7Ci0gICAgICAg
ICAgICB9LAotI2VuZGlmCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFN0cmluZyYgdmFsdWUpIHsg
YWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoZG91YmxlIHZhbHVlKSB7IGFkZFBhcmFtZXRl
cih2YWx1ZSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpOdW1iZXIpOyB9LAotICAgICAgICAgICAg
WyZdIChmbG9hdCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIodmFsdWUsIFJlY29yZGluZ1N3aXp6bGVU
eXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgT3B0aW9uYWw8ZmxvYXQ+
JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgcGFyc2VQYXJhbWV0ZXIodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICB9LAotICAgICAg
ICAgICAgWyZdICh1aW50NjRfdCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoc3RhdGljX2Nhc3Q8ZG91
YmxlPih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAg
ICAgIFsmXSAoaW50NjRfdCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoc3RhdGljX2Nhc3Q8ZG91Ymxl
Pih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAg
IFsmXSAodWludDMyX3QgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKHN0YXRpY19jYXN0PGRvdWJsZT4o
dmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6Ok51bWJlcik7IH0sCi0gICAgICAgICAgICBb
Jl0gKGludDMyX3QgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKHZhbHVlLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXM6Ok51bWJlcik7IH0sCi0gICAgICAgICAgICBbJl0gKHVpbnQ4X3QgdmFsdWUpIHsgYWRk
UGFyYW1ldGVyKHN0YXRpY19jYXN0PGludD4odmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6
Ok51bWJlcik7IH0sCi0gICAgICAgICAgICBbJl0gKGJvb2wgdmFsdWUpIHsgYWRkUGFyYW1ldGVy
KHZhbHVlLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkJvb2xlYW4pOyB9Ci0gICAgICAgICk7Ci0g
ICAgfTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6IHBhcmFtZXRlcnMpCi0gICAgICAgIHBh
cnNlUGFyYW1ldGVyKHBhcmFtZXRlcik7Ci0KKyAgICAgICAgcGFyYW1ldGVyc0RhdGEtPmFkZEl0
ZW0oYXJndW1lbnQtPnZhbHVlLmNvcHlSZWYoKSk7CisgICAgICAgIHN3aXp6bGVUeXBlcy0+YWRk
SXRlbShzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50LT5zd2l6emxlVHlwZSkpOworICAgIH0KICAg
ICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+
YWRkSXRlbShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggYjI3YmM4ZDQ5MjM5MTE3YmVlNTI1ZDVmZTZhYzI2
ZTJkNjE2YjVjNy4uMjYyNWJkMGE3NjNmMDY2YzExZjJiMjQwZjdjOWE3Yzk0MGMxZWQwOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhcy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuaApAQCAtMjUsMTQgKzI1
LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAiQ2FsbFRyYWNlclR5cGVzLmgiCi0j
aW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JQcm90
b2NvbE9iamVjdHMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlz
dD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgog
I2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODYsNyArODYsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgcmVzZXRSZWNvcmRpbmdEYXRhKCk7CiAgICAgYm9vbCBoYXNSZWNvcmRpbmdEYXRhKCkg
Y29uc3Q7CiAgICAgYm9vbCBjdXJyZW50RnJhbWVIYXNEYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBy
ZWNvcmRBY3Rpb24oY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENh
bnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOworCisgICAgLy8gSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcgorI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKEFyZ3VtZW50VHlw
ZSkgXAorICAgIE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQXJndW1lbnRUeXBlKTsgXAorLy8gZW5kIG9mIFBST0NF
U1NfQVJHVU1FTlRfREVDTEFSQVRJT04KKyAgICBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NB
TExfVFJBQ0VSX0FSR1VNRU5UKFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04pCisjdW5kZWYg
UFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgorICAgIHZvaWQgcmVjb3JkQWN0aW9uKFN0cmlu
ZyYmLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudHMmJiA9IHsg
fSk7CiAKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpSZWNvcmRp
bmc6OkZyYW1lPj4gcmVsZWFzZUZyYW1lcygpIHsgcmV0dXJuIG1fZnJhbWVzLnJlbGVhc2VOb25O
dWxsKCk7IH0KIApAQCAtMTM3LDkgKzE0NCwxMCBAQCBwcml2YXRlOgogICAgID47CiAKICAgICBp
bnQgaW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50KTsKKyAgICBSZWY8SlNPTjo6VmFs
dWU+IHZhbHVlSW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJpYW50KTsKICAgICBTdHJpbmcg
c3RyaW5nSW5kZXhGb3JLZXkoY29uc3QgU3RyaW5nJik7CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJv
dG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBidWlsZEluaXRpYWxTdGF0ZSgpOwotICAg
IFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBY3Rpb24oY29uc3QgU3RyaW5n
Jiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7
IH0pOworICAgIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBY3Rpb24oU3Ry
aW5nJiYsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50cyYmID0g
eyB9KTsKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JD
YW52YXNHcmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVudCYpOwogICAgIFJlZjxKU09OOjpBcnJh
eU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckNhbnZhc1BhdHRlcm4oY29uc3QgQ2FudmFz
UGF0dGVybiYpOwogICAgIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJh
eUZvckltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5l
MDA5NWU2MzU5ZjRkOTBlNjYzM2YxMDFmMjA5M2U2OTE5MjRmYzM3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3Bw
CkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCIKKworI2luY2x1ZGUgIkNhbnZhc0Jh
c2UuaCIKKyNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5oIgorI2luY2x1ZGUgIkNhbnZhc1BhdHRl
cm4uaCIKKyNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiQ2Fu
dmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVkZSAiRE9NTWF0cml4MkRJbml0LmgiCisj
aW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5j
bHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIK
KyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNBZ2VudC5o
IgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgorI2luY2x1ZGUgIkluc3Ry
dW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlICJPZmZzY3JlZW5DYW52YXMuaCIKKyNpbmNsdWRl
ICJQYXRoMkQuaCIKKyNpbmNsdWRlICJSZWNvcmRpbmdTd2l6emxlVHlwZS5oIgorI2luY2x1ZGUg
IlR5cGVkT01DU1NJbWFnZVZhbHVlLmgiCisjaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4
dC5oIgorI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZl
ci5oIgorI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5oIgorI2luY2x1ZGUgIldlYkdMUXVlcnkuaCIK
KyNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5n
Q29udGV4dEJhc2UuaCIKKyNpbmNsdWRlICJXZWJHTFNhbXBsZXIuaCIKKyNpbmNsdWRlICJXZWJH
TFNoYWRlci5oIgorI2luY2x1ZGUgIldlYkdMU3luYy5oIgorI2luY2x1ZGUgIldlYkdMVGV4dHVy
ZS5oIgorI2luY2x1ZGUgIldlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJXZWJH
TFVuaWZvcm1Mb2NhdGlvbi5oIgorI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5
cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK3N0YXRpYyBJbnNwZWN0b3JDYW52YXNBZ2VudCogZW5hYmxlZENhbnZhc0FnZW50KENhbnZh
c1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpCit7CisgICAgQVNTRVJU
KEluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYzo6aGFzRnJvbnRlbmRzKCkpOworCisgICAg
YXV0byogYWdlbnRzID0gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjppbnN0cnVtZW50aW5nQWdl
bnRzKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSk7CisgICAgQVNTRVJUKGFnZW50cyk7CisgICAgaWYgKCFhZ2VudHMpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKGFnZW50cy0+ZW5hYmxlZENhbnZhc0FnZW50
KCkpOworICAgIHJldHVybiBhZ2VudHMtPmVuYWJsZWRDYW52YXNBZ2VudCgpOworfQorCisjZGVm
aW5lIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTihBcmd1bWVudFR5cGUpIFwKK09wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYg
Y2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3VtZW50KSBcCit7IFwKKyAg
ICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBlbmFibGVkQ2FudmFzQWdlbnQoY2FudmFzUmVuZGVy
aW5nQ29udGV4dCkpIFwKKyAgICAgICAgcmV0dXJuIGNhbnZhc0FnZW50LT5wcm9jZXNzQXJndW1l
bnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgYXJndW1lbnQpOyBcCisgICAgcmV0dXJuIFdURjo6
bnVsbG9wdDsgXAorfSBcCisvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OCisg
ICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9BUkdVTUVOVChQUk9DRVNT
X0FSR1VNRU5UX0RFRklOSVRJT04pCisjdW5kZWYgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9O
CisKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIFN0cmluZyYmIG5hbWUsIElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50cyYmIGFyZ3VtZW50cykK
K3sKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBlbmFibGVkQ2FudmFzQWdlbnQoY2FudmFz
UmVuZGVyaW5nQ29udGV4dCkpCisgICAgICAgIGNhbnZhc0FnZW50LT5yZWNvcmRBY3Rpb24oY2Fu
dmFzUmVuZGVyaW5nQ29udGV4dCwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKTsK
K30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChjb25zdCBIVE1M
Q2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCwgdWludDMyX3QgYXJndW1lbnQpCit7CisgICAg
QVNTRVJUKGNhbnZhc0VsZW1lbnQucmVuZGVyaW5nQ29udGV4dCgpKTsKKyAgICByZXR1cm4gcHJv
Y2Vzc0FyZ3VtZW50KCpjYW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSwgYXJndW1lbnQp
OworfQorCit2b2lkIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihjb25z
dCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCwgU3RyaW5nJiYgbmFtZSwgSW5zcGVj
dG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnRzJiYgYXJndW1lbnRzKQorewor
ICAgIEFTU0VSVChjYW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSk7CisgICAgcmVjb3Jk
QWN0aW9uKCpjYW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQoKSwgV1RGTW92ZShuYW1lKSwg
V1RGTW92ZShhcmd1bWVudHMpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNDFlNzgzZGE4ZDUxOTYwYzI0MzZiZjlkNTM2ZDU0ZDVlMjMwNjMwNwotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyLmgKQEAgLTAsMCArMSwyMDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UK
KworI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyREJhc2UuaCIKKyNpbmNsdWRlICJX
ZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CisjaW5jbHVk
ZSA8aW5pdGlhbGl6ZXJfbGlzdD4KKyNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1
ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNzIEFycmF5QnVmZmVyVmlldzsKKworfSAv
LyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQ2FudmFzR3Jh
ZGllbnQ7CitjbGFzcyBDYW52YXNQYXR0ZXJuOworY2xhc3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4
dDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKK2NsYXNzIEhUTUxJ
bWFnZUVsZW1lbnQ7CitjbGFzcyBIVE1MVmlkZW9FbGVtZW50OworY2xhc3MgSW1hZ2VCaXRtYXA7
CitjbGFzcyBJbWFnZURhdGE7CitjbGFzcyBPZmZzY3JlZW5DYW52YXM7CitjbGFzcyBQYXRoMkQ7
CitjbGFzcyBUeXBlZE9NQ1NTSW1hZ2VWYWx1ZTsKK2NsYXNzIFdlYkdMQnVmZmVyOworY2xhc3Mg
V2ViR0xGcmFtZWJ1ZmZlcjsKK2NsYXNzIFdlYkdMUHJvZ3JhbTsKK2NsYXNzIFdlYkdMUXVlcnk7
CitjbGFzcyBXZWJHTFJlbmRlcmJ1ZmZlcjsKK2NsYXNzIFdlYkdMU2FtcGxlcjsKK2NsYXNzIFdl
YkdMU2hhZGVyOworY2xhc3MgV2ViR0xTeW5jOworY2xhc3MgV2ViR0xUZXh0dXJlOworY2xhc3Mg
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjazsKK2NsYXNzIFdlYkdMVW5pZm9ybUxvY2F0aW9uOworY2xh
c3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKK3N0cnVjdCBET01NYXRyaXgyREluaXQ7CitlbnVt
IGNsYXNzIFJlY29yZGluZ1N3aXp6bGVUeXBlIDogaW50OworZW51bSBjbGFzcyBDYW52YXNEaXJl
Y3Rpb247CitlbnVtIGNsYXNzIENhbnZhc0ZpbGxSdWxlOworZW51bSBjbGFzcyBDYW52YXNMaW5l
Q2FwOworZW51bSBjbGFzcyBDYW52YXNMaW5lSm9pbjsKK2VudW0gY2xhc3MgQ2FudmFzVGV4dEFs
aWduOworZW51bSBjbGFzcyBDYW52YXNUZXh0QmFzZWxpbmU7CitlbnVtIEltYWdlU21vb3RoaW5n
UXVhbGl0eTsKKworI2lmIEVOQUJMRShDU1NfVFlQRURfT00pCisjZGVmaW5lIEZPUl9FQUNIX0lO
U1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQ1NTX1RZUEVEX09NX0FSR1VNRU5UKG1hY3JvKSBc
CisgICAgbWFjcm8oUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVlPiYpIFwKKy8vIGVuZCBvZiBG
T1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0NTU19UWVBFRF9PTV9BUkdVTUVO
VAorI2Vsc2UKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9D
U1NfVFlQRURfT01fQVJHVU1FTlQobWFjcm8pCisjZW5kaWYgLy8gRU5BQkxFKENTU19UWVBFRF9P
TSkKKworI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorI2RlZmluZSBGT1JfRUFDSF9JTlNQ
RUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX09GRlNDUkVFTl9DQU5WQVNfQVJHVU1FTlQobWFjcm8p
IFwKKyAgICBtYWNybyhSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYpIFwKKy8vIGVuZCBvZiBGT1Jf
RUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX09GRlNDUkVFTl9DQU5WQVNfQVJHVU1F
TlQKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJf
T0ZGU0NSRUVOX0NBTlZBU19BUkdVTUVOVChtYWNybykKKyNlbmRpZiAvLyBFTkFCTEUoT0ZGU0NS
RUVOX0NBTlZBUykKKworI2lmIEVOQUJMRShWSURFTykKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVD
VE9SX0NBTlZBU19DQUxMX1RSQUNFUl9WSURFT19BUkdVTUVOVChtYWNybykgXAorICAgIG1hY3Jv
KFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYpIFwKKy8vIGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNU
T1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1ZJREVPX0FSR1VNRU5UCisjZWxzZQorI2RlZmluZSBGT1Jf
RUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1ZJREVPX0FSR1VNRU5UKG1hY3JvKQor
I2VuZGlmIC8vIEVOQUJMRShWSURFTykKKworI2lmIEVOQUJMRShXRUJHTCkKKyNkZWZpbmUgRk9S
X0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9XRUJHTF9BUkdVTUVOVChtYWNybykg
XAorICAgIG1hY3JvKE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRh
dGFTb3VyY2U+JikgXAorICAgIG1hY3JvKE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OlRleEltYWdlU291cmNlPiYpIFwKKyAgICBtYWNybyhXZWJHTEJ1ZmZlciopIFwKKyAgICBt
YWNybyhXZWJHTEZyYW1lYnVmZmVyKikgXAorICAgIG1hY3JvKFdlYkdMUHJvZ3JhbSopIFwKKyAg
ICBtYWNybyhXZWJHTFF1ZXJ5KikgXAorICAgIG1hY3JvKFdlYkdMUmVuZGVyYnVmZmVyKikgXAor
ICAgIG1hY3JvKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2UmKSBc
CisgICAgbWFjcm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6RmxvYXQzMkxpc3Q6OlZhcmlh
bnRUeXBlJikgXAorICAgIG1hY3JvKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkludDMyTGlz
dDo6VmFyaWFudFR5cGUmKSBcCisgICAgbWFjcm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6
VGV4SW1hZ2VTb3VyY2UmKSBcCisgICAgbWFjcm8oV2ViR0xTYW1wbGVyKikgXAorICAgIG1hY3Jv
KFdlYkdMU2hhZGVyKikgXAorICAgIG1hY3JvKFdlYkdMU3luYyopIFwKKyAgICBtYWNybyhXZWJH
TFRleHR1cmUqKSBcCisgICAgbWFjcm8oV2ViR0xVbmlmb3JtTG9jYXRpb24qKSBcCisgICAgbWFj
cm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCopIFwKKy8vIGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNU
T1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VNRU5UCisjZWxzZQorI2RlZmluZSBGT1Jf
RUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VNRU5UKG1hY3JvKQor
I2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKKworI2lmIEVOQUJMRShXRUJHTDIpCisjZGVmaW5lIEZP
Ul9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfV0VCR0wyX0FSR1VNRU5UKG1hY3Jv
KSBcCisgICAgbWFjcm8oV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayopIFwKKyAgICBtYWNybyhXZWJH
TDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSYpIFwKKy8vIGVuZCBv
ZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMMl9BUkdVTUVOVAor
I2Vsc2UKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9XRUJH
TDJfQVJHVU1FTlQobWFjcm8pCisjZW5kaWYgLy8gRU5BQkxFKFdFQkdMMikKKworI2RlZmluZSBG
T1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0FSR1VNRU5UKG1hY3JvKSBcCisg
ICAgbWFjcm8oQ2FudmFzRGlyZWN0aW9uKSBcCisgICAgbWFjcm8oQ2FudmFzRmlsbFJ1bGUpIFwK
KyAgICBtYWNybyhDYW52YXNJbWFnZVNvdXJjZSYpIFwKKyAgICBtYWNybyhDYW52YXNMaW5lQ2Fw
KSBcCisgICAgbWFjcm8oQ2FudmFzTGluZUpvaW4pIFwKKyAgICBtYWNybyhDYW52YXNSZW5kZXJp
bmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQmKSBcCisgICAgbWFjcm8oQ2FudmFzVGV4dEFs
aWduKSBcCisgICAgbWFjcm8oQ2FudmFzVGV4dEJhc2VsaW5lKSBcCisgICAgbWFjcm8oRE9NTWF0
cml4MkRJbml0JikgXAorICAgIG1hY3JvKEVsZW1lbnQqKSBcCisgICAgbWFjcm8oSFRNTEltYWdl
RWxlbWVudCopIFwKKyAgICBtYWNybyhJbWFnZUJpdG1hcCopIFwKKyAgICBtYWNybyhJbWFnZURh
dGEqKSBcCisgICAgbWFjcm8oSW1hZ2VTbW9vdGhpbmdRdWFsaXR5KSBcCisgICAgbWFjcm8oT3B0
aW9uYWw8ZmxvYXQ+JikgXAorICAgIG1hY3JvKFBhdGgyRCopIFwKKyAgICBtYWNybyhSZWZQdHI8
Q2FudmFzR3JhZGllbnQ+JikgXAorICAgIG1hY3JvKFJlZlB0cjxDYW52YXNQYXR0ZXJuPiYpIFwK
KyAgICBtYWNybyhSZWZQdHI8SFRNTENhbnZhc0VsZW1lbnQ+JikgXAorICAgIG1hY3JvKFJlZlB0
cjxIVE1MSW1hZ2VFbGVtZW50PiYpIFwKKyAgICBtYWNybyhSZWZQdHI8SW1hZ2VCaXRtYXA+Jikg
XAorICAgIG1hY3JvKFJlZlB0cjxJbWFnZURhdGE+JikgXAorICAgIG1hY3JvKFJlZlB0cjxKU0M6
OkFycmF5QnVmZmVyPiYpIFwKKyAgICBtYWNybyhSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+
JikgXAorICAgIG1hY3JvKFJlZlB0cjxKU0M6OkZsb2F0MzJBcnJheT4mKSBcCisgICAgbWFjcm8o
UmVmUHRyPEpTQzo6SW50MzJBcnJheT4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEpTQzo6VWludDMy
QXJyYXk+JikgXAorICAgIG1hY3JvKFN0cmluZyYpIFwKKyAgICBtYWNybyhWZWN0b3I8U3RyaW5n
PiYpIFwKKyAgICBtYWNybyhWZWN0b3I8ZmxvYXQ+JikgXAorICAgIG1hY3JvKFZlY3Rvcjx1aW50
MzJfdD4mKSBcCisgICAgbWFjcm8oVmVjdG9yPGludDMyX3Q+JikgXAorICAgIG1hY3JvKGRvdWJs
ZSkgXAorICAgIG1hY3JvKGZsb2F0KSBcCisgICAgbWFjcm8odWludDY0X3QpIFwKKyAgICBtYWNy
byhpbnQ2NF90KSBcCisgICAgbWFjcm8odWludDMyX3QpIFwKKyAgICBtYWNybyhpbnQzMl90KSBc
CisgICAgbWFjcm8odWludDhfdCkgXAorICAgIG1hY3JvKGJvb2wpIFwKKyAgICBGT1JfRUFDSF9J
TlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0NTU19UWVBFRF9PTV9BUkdVTUVOVChtYWNybykg
XAorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfT0ZGU0NSRUVOX0NB
TlZBU19BUkdVTUVOVChtYWNybykgXAorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FM
TF9UUkFDRVJfVklERU9fQVJHVU1FTlQobWFjcm8pIFwKKyAgICBGT1JfRUFDSF9JTlNQRUNUT1Jf
Q0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgRk9SX0VBQ0hf
SU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9XRUJHTDJfQVJHVU1FTlQobWFjcm8pIFwKKy8v
IGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0FSR1VNRU5UCisK
K2NsYXNzIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIgeworcHVibGljOgorICAgIHN0cnVjdCBQ
cm9jZXNzZWRBcmd1bWVudCB7CisgICAgICAgIFJlZjxKU09OOjpWYWx1ZT4gdmFsdWU7CisgICAg
ICAgIFJlY29yZGluZ1N3aXp6bGVUeXBlIHN3aXp6bGVUeXBlOworICAgIH07CisKKyAgICB1c2lu
ZyBQcm9jZXNzZWRBcmd1bWVudHMgPSBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8T3B0aW9uYWw8UHJv
Y2Vzc2VkQXJndW1lbnQ+PjsKKworI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9O
KEFyZ3VtZW50VHlwZSkgXAorICAgIHN0YXRpYyBPcHRpb25hbDxQcm9jZXNzZWRBcmd1bWVudD4g
cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBBcmd1bWVudFR5cGUpOyBc
CisvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgorICAgIEZPUl9FQUNIX0lO
U1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9ERUNM
QVJBVElPTikKKyN1bmRlZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCisKKyAgICBzdGF0
aWMgdm9pZCByZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIFN0cmluZyYmLCBQ
cm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CisKKyAgICBzdGF0aWMgT3B0aW9uYWw8UHJvY2Vz
c2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYsIHVp
bnQzMl90KTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRBY3Rpb24oY29uc3QgSFRNTENhbnZhc0Vs
ZW1lbnQmLCBTdHJpbmcmJiwgUHJvY2Vzc2VkQXJndW1lbnRzJiYgPSB7IH0pOworfTsKKworfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCBjZTA5ZTU3ZjAxMTQ0MTlhNjcwNGRl
ZTZhMzQ3NzY1MjBjYWRmNTljLi4wMTEzOTFjNWZkMTIxMGFkNjBkM2VmOWZhMzM3MDY5M2Y5ODQw
ODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uLmNwcApAQCAtMTA3NCwxMiArMTA3NCw2IEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDYW52YXNNZW1vcnlJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmIGluCiAgICAgICAgIGNhbnZhc0FnZW50LT5kaWRDaGFuZ2VDYW52YXNNZW1vcnkoY29udGV4
dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rp
b25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIENhbnZhc1Jl
bmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgcGFy
YW1ldGVycykKLXsKLSAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAgICBjYW52YXNBZ2VudC0+cmVjb3JkQ2Fu
dmFzQWN0aW9uKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIG5hbWUsIFdURk1vdmUocGFyYW1ldGVy
cykpOwotfQotCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3Jk
aW5nQ2FudmFzRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2Vu
dHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQsIGJvb2wgZm9yY2VEaXNwYXRjaCkK
IHsKICAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRDYW52YXNBZ2VudCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDU5NzkzODM4NTEzOWExOTlkMjBlODQxYWM4MDU3
NjE5M2ExOWVkNTMuLjhjZWFhNWRkMjI4OWEwMDViY2Q3YjYzOTEwMTAyMTI0MzRjYzM1MjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiQ1NTU2Vs
ZWN0b3IuaCIKLSNpbmNsdWRlICJDYWxsVHJhY2VyVHlwZXMuaCIKICNpbmNsdWRlICJDYW52YXNC
YXNlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkRh
dGFiYXNlLmgiCkBAIC0yOTUsNyArMjk0LDYgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGRp
ZENoYW5nZUNTU0NhbnZhc0NsaWVudE5vZGVzKENhbnZhc0Jhc2UmKTsKICAgICBzdGF0aWMgdm9p
ZCBkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0KENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
KTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VDYW52YXNNZW1vcnkoQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCYpOwotICAgIHN0YXRpYyB2b2lkIHJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5k
ZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29y
ZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlz
aFJlY29yZGluZ0NhbnZhc0ZyYW1lKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBib29sIGZvcmNl
RGlzcGF0Y2ggPSBmYWxzZSk7CiAjaWYgRU5BQkxFKFdFQkdMKQogICAgIHN0YXRpYyB2b2lkIGRp
ZEVuYWJsZUV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlJiwgY29uc3QgU3RyaW5n
Jik7CkBAIC0zMzcsNiArMzM1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHRpbWVsaW5l
QWdlbnRUcmFja2luZyhTY3JpcHRFeGVjdXRpb25Db250ZXh0Kik7CiAKICAgICBzdGF0aWMgSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyhQYWdlKik7CisgICAgc3RhdGlj
IEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCopOwogCiAgICAgc3RhdGljIHZvaWQgcmVnaXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRz
KEluc3RydW1lbnRpbmdBZ2VudHMmKTsKICAgICBzdGF0aWMgdm9pZCB1bnJlZ2lzdGVySW5zdHJ1
bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRzJik7CkBAIC01MDQsNyArNTAzLDYgQEAg
cHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VDU1NDYW52YXNDbGllbnROb2Rlc0lt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIENhbnZhc0Jhc2UmKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNhbnZh
c01lbW9yeUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
KTsKLSAgICBzdGF0aWMgdm9pZCByZWNvcmRDYW52YXNBY3Rpb25JbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0
aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwogICAgIHN0
YXRpYyB2b2lkIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lSW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZh
bHNlKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgc3RhdGljIHZvaWQgZGlkRW5hYmxlRXh0ZW5z
aW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZSYs
IGNvbnN0IFN0cmluZyYpOwpAQCAtNTM4LDcgKzUzNiw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0
aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyhjb25zdCBGcmFtZSYp
OwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKGNv
bnN0IEZyYW1lKik7Ci0gICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogICAgIHN0YXRpYyBJbnN0cnVtZW50
aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsK
ICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyhEb2N1
bWVudCYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdl
bnRzKERvY3VtZW50Kik7CkBAIC0xNDIzLDEzICsxNDIwLDYgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDYW52YXNNZW1vcnkoQ2FudmFzUmVuZGVyaW5n
Q29udGUKICAgICAgICAgZGlkQ2hhbmdlQ2FudmFzTWVtb3J5SW1wbCgqYWdlbnRzLCBjb250ZXh0
KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52
YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCwgY29uc3QgU3RyaW5nJiBu
YW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBw
YXJhbWV0ZXJzKQotewotICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwot
ICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzKGNvbnRleHQuY2FudmFz
QmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkpCi0gICAgICAgIHJlY29yZENhbnZhc0Fj
dGlvbkltcGwoKmFnZW50cywgY29udGV4dCwgbmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19
Ci0KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3Jk
aW5nQ2FudmFzRnJhbWUoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY29udGV4dCwgYm9vbCBmb3Jj
ZURpc3BhdGNoKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1JlY29yZGluZ1N3aXp6bGVUeXBl
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mODMzODg5YjVkMzhlYWUwNzY2Y2RmODkyMTkzYzhhZDA4MWM5YThmCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1JlY29yZGluZ1N3aXp6bGVUeXBl
LmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCisvLyBLZWVw
IHRoaXMgaW4gc3luYyB3aXRoIFdJLlJlY29yZGluZy5Td2l6emxlLgorZW51bSBjbGFzcyBSZWNv
cmRpbmdTd2l6emxlVHlwZSA6IGludCB7CisgICAgTm9uZSA9IDAsCisgICAgTnVtYmVyID0gMSwK
KyAgICBCb29sZWFuID0gMiwKKyAgICBTdHJpbmcgPSAzLAorICAgIEFycmF5ID0gNCwKKyAgICBU
eXBlZEFycmF5ID0gNSwKKyAgICBJbWFnZSA9IDYsCisgICAgSW1hZ2VEYXRhID0gNywKKyAgICBE
T01NYXRyaXggPSA4LAorICAgIFBhdGgyRCA9IDksCisgICAgQ2FudmFzR3JhZGllbnQgPSAxMCwK
KyAgICBDYW52YXNQYXR0ZXJuID0gMTEsCisgICAgV2ViR0xCdWZmZXIgPSAxMiwKKyAgICBXZWJH
TEZyYW1lYnVmZmVyID0gMTMsCisgICAgV2ViR0xSZW5kZXJidWZmZXIgPSAxNCwKKyAgICBXZWJH
TFRleHR1cmUgPSAxNSwKKyAgICBXZWJHTFNoYWRlciA9IDE2LAorICAgIFdlYkdMUHJvZ3JhbSA9
IDE3LAorICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uID0gMTgsCisgICAgSW1hZ2VCaXRtYXAgPSAx
OSwKKyAgICBXZWJHTFF1ZXJ5ID0gMjAsCisgICAgV2ViR0xTYW1wbGVyID0gMjEsCisgICAgV2Vi
R0xTeW5jID0gMjIsCisgICAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayA9IDIzLAorICAgIFdlYkdM
VmVydGV4QXJyYXlPYmplY3QgPSAyNCwKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9SZWNvcmRpbmdTd2l6emxlVHlwZXMu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9SZWNvcmRpbmdTd2l6emxlVHlwZXMuaApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc0NWU4NDY0MTVlYWFmNTUxNjhlY2MzMjcxMmU4
NTdiMDI1ZmEwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUmVjb3JkaW5nU3dpenpsZVR5cGVzLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8v
IEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggV0kuUmVjb3JkaW5nLlN3aXp6bGUuCi1lbnVtIGNsYXNz
IFJlY29yZGluZ1N3aXp6bGVUeXBlcyA6IGludCB7Ci0gICAgTm9uZSA9IDAsCi0gICAgTnVtYmVy
ID0gMSwKLSAgICBCb29sZWFuID0gMiwKLSAgICBTdHJpbmcgPSAzLAotICAgIEFycmF5ID0gNCwK
LSAgICBUeXBlZEFycmF5ID0gNSwKLSAgICBJbWFnZSA9IDYsCi0gICAgSW1hZ2VEYXRhID0gNywK
LSAgICBET01NYXRyaXggPSA4LAotICAgIFBhdGgyRCA9IDksCi0gICAgQ2FudmFzR3JhZGllbnQg
PSAxMCwKLSAgICBDYW52YXNQYXR0ZXJuID0gMTEsCi0gICAgV2ViR0xCdWZmZXIgPSAxMiwKLSAg
ICBXZWJHTEZyYW1lYnVmZmVyID0gMTMsCi0gICAgV2ViR0xSZW5kZXJidWZmZXIgPSAxNCwKLSAg
ICBXZWJHTFRleHR1cmUgPSAxNSwKLSAgICBXZWJHTFNoYWRlciA9IDE2LAotICAgIFdlYkdMUHJv
Z3JhbSA9IDE3LAotICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uID0gMTgsCi0gICAgSW1hZ2VCaXRt
YXAgPSAxOSwKLSAgICBXZWJHTFF1ZXJ5ID0gMjAsCi0gICAgV2ViR0xTYW1wbGVyID0gMjEsCi0g
ICAgV2ViR0xTeW5jID0gMjIsCi0gICAgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjayA9IDIzLAotICAg
IFdlYkdMVmVydGV4QXJyYXlPYmplY3QgPSAyNCwKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
Q2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggNWU1NjViM2Q2MTczN2NkYTFhYTBlY2Y2MWE2YjcwOTVm
ZDFhMGVlYy4uMmJkNmU0YzQ4ODQ3YTZlN2JiZTQ3NWE3NTUyZWEwZWZiZmQ1NzQ4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52
YXNBZ2VudC5jcHAKQEAgLTI2LDU2ICsyNiw2OSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAKKyNpbmNsdWRlICJDYW52YXNCYXNlLmgi
CisjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKKyNpbmNsdWRlICJDYW52YXNQYXR0ZXJuLmgi
CiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQyRC5oIgorI2luY2x1ZGUgIkRPTU1hdHJpeDJESW5pdC5oIgogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgogI2luY2x1ZGUgIkV2ZW50TG9v
cC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVkZSAiR1BVQ2FudmFzQ29udGV4dC5oIgog
I2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVu
dC5oIgorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKICNpbmNsdWRlICJJbWFnZUJpdG1h
cC5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUg
IkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50LmgiCisjaW5jbHVkZSAi
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU2hhZGVyUHJv
Z3JhbS5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKICNpbmNsdWRlICJKU0V4
ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgorI2luY2x1ZGUgIlBhdGgy
RC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAjaW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMu
aCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KLSNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgotI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvclByb3RvY29sT2JqZWN0cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pT
Q0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMp
Ci0jaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJH
TCkKKyNpbmNsdWRlICJUeXBlZE9NQ1NTSW1hZ2VWYWx1ZS5oIgorI2luY2x1ZGUgIldlYkdMMlJl
bmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgorI2luY2x1ZGUgIldl
YkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFByb2dyYW0uaCIKKyNpbmNsdWRlICJX
ZWJHTFF1ZXJ5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJX
ZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJHTDIpCi0jaW5jbHVkZSAiV2ViR0wyUmVu
ZGVyaW5nQ29udGV4dC5oIgotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VCR1BVKQotI2luY2x1ZGUg
IkdQVUNhbnZhc0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTFNhbXBsZXIuaCIKKyNpbmNsdWRl
ICJXZWJHTFNoYWRlci5oIgorI2luY2x1ZGUgIldlYkdMU3luYy5oIgorI2luY2x1ZGUgIldlYkdM
VGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdMVHJhbnNmb3JtRmVlZGJhY2suaCIKKyNpbmNsdWRl
ICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgorI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmpl
Y3QuaCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlwZWxpbmUuaCIKICNpbmNsdWRlICJXZWJH
UFVEZXZpY2UuaCIKICNpbmNsdWRlICJXZWJHUFVQaXBlbGluZS5oIgogI2luY2x1ZGUgIldlYkdQ
VVJlbmRlclBpcGVsaW5lLmgiCiAjaW5jbHVkZSAiV2ViR1BVU3dhcENoYWluLmgiCi0jZW5kaWYK
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lk
ZW50aWZpZXJzRmFjdG9yeS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2Ny
aXB0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL1R5cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9Mb2NrLmg+CisjaW5jbHVkZSA8d3RmL09w
dGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmlu
Zy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI4OSw3ICszMDIsNyBAQCBQcm90b2Nv
bDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRp
bmcoY29uc3QgUHJvdG9jbwogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG1ha2VV
bmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9zKTsKIAotICAgIGlmIChjb250ZXh0LT5jYWxsVHJh
Y2luZ0FjdGl2ZSgpKQorICAgIGlmIChjb250ZXh0LT5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyKCkpCiAgICAgICAgIHJldHVybiBtYWtlVW5leHBlY3RlZCgiQWxyZWFkeSByZWNv
cmRpbmcgY2FudmFzIl9zKTsKIAogICAgIFJlY29yZGluZ09wdGlvbnMgcmVjb3JkaW5nT3B0aW9u
czsKQEAgLTMxNiw3ICszMjksNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNw
ZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29yZGluZyhjb25zdCBQcm90b2NvbAogICAgIGlmICgh
Y29udGV4dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9z
KTsKIAotICAgIGlmICghY29udGV4dC0+Y2FsbFRyYWNpbmdBY3RpdmUoKSkKKyAgICBpZiAoIWNv
bnRleHQtPmhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSkKICAgICAgICAgcmV0
dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3QgcmVjb3JkaW5nIGNhbnZhcyJfcyk7CiAKICAgICBkaWRG
aW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZSgqY29udGV4dCwgdHJ1ZSk7CkBAIC00NjIsNTMgKzQ3
NSw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZENoYW5nZUNhbnZhc01lbW9yeShD
YW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0CiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRj
aGVyLT5jYW52YXNNZW1vcnlDaGFuZ2VkKGluc3BlY3RvckNhbnZhcy0+aWRlbnRpZmllcigpLCBu
b2RlLT5tZW1vcnlDb3N0KCkpOwogfQogCi12b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNv
cmRDYW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29u
dGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2Fu
dmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQotewotICAgIGF1dG8gaW5zcGVjdG9yQ2Fu
dmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhjYW52YXNSZW5kZXJpbmdDb250ZXh0KTsKLSAgICBB
U1NFUlQoaW5zcGVjdG9yQ2FudmFzKTsKLSAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKLSAgICAg
ICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQuY2FsbFRyYWNp
bmdBY3RpdmUoKSk7Ci0gICAgaWYgKCFjYW52YXNSZW5kZXJpbmdDb250ZXh0LmNhbGxUcmFjaW5n
QWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIE9ubHkgZW5xdWV1ZSBvbmUgbWlj
cm90YXNrIGZvciBhbGwgYWN0aXZlbHkgcmVjb3JkaW5nIGNhbnZhc2VzLgotICAgIGlmIChtX3Jl
Y29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoYXV0byog
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpKSB7Ci0gICAgICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0LT5ldmVudExv
b3AoKS5xdWV1ZU1pY3JvdGFzayhbd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyldIHsKLSAg
ICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47
Ci0KLSAgICAgICAgICAgICAgICBhdXRvJiBjYW52YXNBZ2VudCA9ICp3ZWFrVGhpczsKLQotICAg
ICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllcnMgPSBjb3B5VG9WZWN0b3IoY2FudmFzQWdlbnQu
bV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycyk7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRv
JiBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBp
bnNwZWN0b3JDYW52YXMgPSBjYW52YXNBZ2VudC5tX2lkZW50aWZpZXJUb0luc3BlY3RvckNhbnZh
cy5nZXQoaWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaW5zcGVjdG9yQ2Fu
dmFzKQotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAg
ICAgICAgYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4dCA9IGluc3BlY3RvckNhbnZhcy0+Y2Fu
dmFzQ29udGV4dCgpOwotICAgICAgICAgICAgICAgICAgICBBU1NFUlQoY2FudmFzUmVuZGVyaW5n
Q29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29y
ZGluZ3MgZm9yIFdlYkdQVURldmljZQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXNS
ZW5kZXJpbmdDb250ZXh0LT5jYWxsVHJhY2luZ0FjdGl2ZSgpKQotICAgICAgICAgICAgICAgICAg
ICAgICAgY2FudmFzQWdlbnQuZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoKmNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNh
bnZhc0FnZW50Lm1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKLSAgICAgICAg
ICAgIH0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgbV9yZWNvcmRpbmdDYW52YXNJZGVudGlm
aWVycy5hZGQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCkpOwotCi0gICAgaW5zcGVjdG9y
Q2FudmFzLT5yZWNvcmRBY3Rpb24obmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci0KLSAgICBp
ZiAoIWluc3BlY3RvckNhbnZhcy0+aGFzQnVmZmVyU3BhY2UoKSkKLSAgICAgICAgZGlkRmluaXNo
UmVjb3JkaW5nQ2FudmFzRnJhbWUoY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgdHJ1ZSk7Ci19Ci0K
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZhc0NoYW5nZWQoQ2FudmFzQmFzZSYgY2Fu
dmFzQmFzZSwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gY2FudmFz
QmFzZS5yZW5kZXJpbmdDb250ZXh0KCk7CkBAIC01MzksNyArNTA1LDcgQEAgdm9pZCBJbnNwZWN0
b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkKENhbnZhc0Jhc2UmIGNhbnZhc0Jhc2UpCiAK
IHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1l
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQsIGJvb2wgZm9yY2VEaXNwYXRjaCkKIHsK
LSAgICBpZiAoIWNvbnRleHQuY2FsbFRyYWNpbmdBY3RpdmUoKSkKKyAgICBpZiAoIWNvbnRleHQu
aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoY29udGV4dCk7
CkBAIC03MTUsNiArNjgxLDYwIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0
cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmIHBpcGVsaW5lKQogfQogI2VuZGlmIC8v
IEVOQUJMRShXRUJHUFUpCiAKKyNkZWZpbmUgUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OKEFy
Z3VtZW50VHlwZSkgXAorT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFz
UmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRUeXBlIGFy
Z3VtZW50KSBcCit7IFwKKyAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JD
YW52YXMoY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7IFwKKyAgICBBU1NFUlQoaW5zcGVjdG9yQ2Fu
dmFzKTsgXAorICAgIHJldHVybiBpbnNwZWN0b3JDYW52YXMtPnByb2Nlc3NBcmd1bWVudChhcmd1
bWVudCk7IFwKK30gXAorLy8gZW5kIG9mIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTgorICAg
IEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19B
UkdVTUVOVF9ERUZJTklUSU9OKQorI3VuZGVmIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTgor
Cit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5n
Q29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgU3RyaW5nJiYgbmFtZSwgSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnRzJiYgYXJndW1lbnRzKQoreworICAg
IEFTU0VSVChjYW52YXNSZW5kZXJpbmdDb250ZXh0Lmhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIoKSk7CisKKyAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JD
YW52YXMoY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7CisgICAgQVNTRVJUKGluc3BlY3RvckNhbnZh
cyk7CisKKyAgICAvLyBPbmx5IGVucXVldWUgb25lIG1pY3JvdGFzayBmb3IgYWxsIGFjdGl2ZWx5
IHJlY29yZGluZyBjYW52YXNlcy4KKyAgICBpZiAobV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVy
cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQg
PSBpbnNwZWN0b3JDYW52YXMtPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkgeworICAgICAgICAg
ICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZXZlbnRMb29wKCkucXVldWVNaWNyb3Rhc2soW3dl
YWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7CisgICAgICAgICAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgYXV0
byYgY2FudmFzQWdlbnQgPSAqd2Vha1RoaXM7CisKKyAgICAgICAgICAgICAgICBhdXRvIGlkZW50
aWZpZXJzID0gY29weVRvVmVjdG9yKGNhbnZhc0FnZW50Lm1fcmVjb3JkaW5nQ2FudmFzSWRlbnRp
ZmllcnMpOworICAgICAgICAgICAgICAgIGZvciAoYXV0byYgaWRlbnRpZmllciA6IGlkZW50aWZp
ZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gY2FudmFz
QWdlbnQubV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52YXMuZ2V0KGlkZW50aWZpZXIpOworICAg
ICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvckNhbnZhcykKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAgICAgICAgIGF1dG8qIGNhbnZhc1JlbmRl
cmluZ0NvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNhbnZhc0NvbnRleHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOworICAgICAgICAgICAg
ICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3Bl
Y3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNvcmRpbmdzIGZvciBXZWJHUFVEZXZpY2UK
KworICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzUmVuZGVyaW5nQ29udGV4dC0+aGFzQWN0
aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKQorICAgICAgICAgICAgICAgICAgICAgICAg
Y2FudmFzQWdlbnQuZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoKmNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhbnZhc0Fn
ZW50Lm1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnMuY2xlYXIoKTsKKyAgICAgICAgICAgIH0p
OworICAgICAgICB9CisgICAgfQorCisgICAgbV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycy5h
ZGQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCkpOworCisgICAgaW5zcGVjdG9yQ2FudmFz
LT5yZWNvcmRBY3Rpb24oV1RGTW92ZShuYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKTsKKworICAg
IGlmICghaW5zcGVjdG9yQ2FudmFzLT5oYXNCdWZmZXJTcGFjZSgpKQorICAgICAgICBkaWRGaW5p
c2hSZWNvcmRpbmdDYW52YXNGcmFtZShjYW52YXNSZW5kZXJpbmdDb250ZXh0LCB0cnVlKTsKK30K
Kwogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2Fu
dmFzJiBpbnNwZWN0b3JDYW52YXMsIFByb3RvY29sOjpSZWNvcmRpbmc6OkluaXRpYXRvciBpbml0
aWF0b3IsIFJlY29yZGluZ09wdGlvbnMmJiByZWNvcmRpbmdPcHRpb25zKQogewogICAgIGF1dG8q
IGNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMuY2FudmFzQ29udGV4dCgpOwpAQCAtNzMyLDcgKzc1
Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OnN0YXJ0UmVjb3JkaW5nKEluc3BlY3Rv
ckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzLCBQcm90CiAgICAgKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoY29udGV4dC0+Y2FsbFRyYWNpbmdBY3RpdmUoKSkKKyAgICBpZiAoY29udGV4dC0+
aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKQogICAgICAgICByZXR1cm47CiAK
ICAgICBpbnNwZWN0b3JDYW52YXMucmVzZXRSZWNvcmRpbmdEYXRhKCk7CkBAIC03NDIsNyArNzYy
LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoSW5zcGVjdG9y
Q2FudmFzJiBpbnNwZWN0b3JDYW52YXMsIFByb3QKICAgICAgICAgaW5zcGVjdG9yQ2FudmFzLnNl
dEJ1ZmZlckxpbWl0KHJlY29yZGluZ09wdGlvbnMubWVtb3J5TGltaXQudmFsdWUoKSk7CiAgICAg
aWYgKHJlY29yZGluZ09wdGlvbnMubmFtZSkKICAgICAgICAgaW5zcGVjdG9yQ2FudmFzLnNldFJl
Y29yZGluZ05hbWUocmVjb3JkaW5nT3B0aW9ucy5uYW1lLnZhbHVlKCkpOwotICAgIGNvbnRleHQt
PnNldENhbGxUcmFjaW5nQWN0aXZlKHRydWUpOworICAgIGNvbnRleHQtPnNldEhhc0FjdGl2ZUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIodHJ1ZSk7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+cmVjb3JkaW5nU3RhcnRlZChpbnNwZWN0b3JDYW52YXMuaWRlbnRpZmllcigpLCBpbml0aWF0
b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDg2YmRiNTEyNTY5YTMxMWY3YTI1MDg5NWU4ZmZiYzlk
ZDllYmNkYzAuLjUwYjMzNmM4OWI2NmE1YWNkZmNhZGM2ZDFjNzQ5NTlmZmQ3ZTM3NWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckNhbnZh
c0FnZW50LmgKQEAgLTI1LDE2ICsyNSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkNhbGxUcmFjZXJUeXBlcy5oIgogI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JDYW52YXMuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgi
CiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIK
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+
CiAjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xh
c3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpAQCAtOTgsNyArMTAwLDYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkQ2hhbmdlQ1NTQ2FudmFzQ2xpZW50Tm9kZXMoQ2FudmFzQmFzZSYpOwogICAgIHZv
aWQgZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4dChDYW52YXNSZW5kZXJpbmdDb250ZXh0
Jik7CiAgICAgdm9pZCBkaWRDaGFuZ2VDYW52YXNNZW1vcnkoQ2FudmFzUmVuZGVyaW5nQ29udGV4
dCYpOwotICAgIHZvaWQgcmVjb3JkQ2FudmFzQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQm
LCBjb25zdCBTdHJpbmcmLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9u
VmFyaWFudD4mJiA9IHsgfSk7CiAgICAgdm9pZCBkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFt
ZShDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgYm9vbCBmb3JjZURpc3BhdGNoID0gZmFsc2UpOwog
ICAgIHZvaWQgY29uc29sZVN0YXJ0UmVjb3JkaW5nQ2FudmFzKENhbnZhc1JlbmRlcmluZ0NvbnRl
eHQmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU09iamVjdCogb3B0aW9ucyk7CiAgICAg
dm9pZCBjb25zb2xlU3RvcFJlY29yZGluZ0NhbnZhcyhDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7
CkBAIC0xMTcsNiArMTE4LDE0IEBAIHB1YmxpYzoKICAgICB2b2lkIHdpbGxEZXN0cm95V2ViR1BV
UGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmKTsKICNlbmRpZiAvLyBFTkFCTEUoV0VCR1BVKQogCisg
ICAgLy8gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcgorI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5U
X0RFQ0xBUkFUSU9OKEFyZ3VtZW50VHlwZSkgXAorICAgIE9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVu
ZGVyaW5nQ29udGV4dCYsIEFyZ3VtZW50VHlwZSk7IFwKKy8vIGVuZCBvZiBQUk9DRVNTX0FSR1VN
RU5UX0RFQ0xBUkFUSU9OCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNF
Ul9BUkdVTUVOVChQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKQorI3VuZGVmIFBST0NFU1Nf
QVJHVU1FTlRfREVDTEFSQVRJT04KKyAgICB2b2lkIHJlY29yZEFjdGlvbihDYW52YXNSZW5kZXJp
bmdDb250ZXh0JiwgU3RyaW5nJiYsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50cyYmID0geyB9KTsKKwogcHJpdmF0ZToKICAgICBzdHJ1Y3QgUmVjb3JkaW5nT3B0
aW9ucyB7CiAgICAgICAgIE9wdGlvbmFsPGxvbmc+IGZyYW1lQ291bnQ7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCAwYWNmNWY0ODkzNTEwY2U3ZjdmM2ZjNTU4YTdkNTA1
M2Q1MWM0MjNmLi5kMWFhMzM1NDc4NjYwY2Q4YjNhYmQwMmMzYmVjYzAwOTAyMDdlMWU4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNs
dWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVM
b2FkZXIuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVkZSAiSFRNTE5h
bWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MUGFy
c2VySWRpb21zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGV4dFRyYWNr
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCmlu
ZGV4IGY0ZmU3MGYxMjYzNzNiNDAwZTYwMzQ3ODg1ZjI2ZmU5YmU2MzNjMTcuLjhjYzNjNTY4YzQz
Nzk2YWM2MWIzMDk3NTQ3YTg5ZWY4MTJkOThkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9U
ZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiQ2FjaGVkVGV4
dFRyYWNrLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgiCiAjaW5jbHVk
ZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5o
IgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY5NTIwMWQxMjYw
ODYzYWNiYWMyOTNmYjFmOTViZjFiNWJhZjJiYjYuLjUxMGU0MGE1ZTUwZTkyMjMxNGZmYjg1NTYx
ODg5YzlkMTI5ZTFiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjUsNiArNjUsNyBAQAogI2lu
Y2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2VyLmgiCiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5j
bHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQu
aCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmcuanMK
aW5kZXggNTEzZWY3NmFmNTYxNDI5MWUyODY0YWFlYTU4ZTc0N2M2OGE4NGZhZi4uOTc1ZDg5YjUz
YTBlZTA0NTE2NWRhMmFjYmUxMGM0OTE3OGQzMWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nLmpzCkBAIC04OTgs
NyArODk4LDcgQEAgV0kuUmVjb3JkaW5nLlR5cGUgPSB7CiAgICAgQ2FudmFzV2ViR0wyOiAiY2Fu
dmFzLXdlYmdsMiIsCiB9OwogCi0vLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFdlYkNvcmU6OlJl
Y29yZGluZ1N3aXp6bGVUeXBlcy4KKy8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggV2ViQ29yZTo6
UmVjb3JkaW5nU3dpenpsZVR5cGUuCiBXSS5SZWNvcmRpbmcuU3dpenpsZSA9IHsKICAgICBOb25l
OiAwLAogICAgIE51bWJlcjogMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmdBY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzCmluZGV4IGYzMWNk
MzNkMzIzN2RmM2JkYjQyZjE2OTI1OTc1MDRmODEwYjlmZWIuLjdkOGIzMWRkMWY3ODgwYTdlYmM4
ZDY4MTNjOWQ1ODE2NTY2ODczODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmdBY3Rpb24uanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZ0FjdGlvbi5qcwpAQCAtMzMs
NyArMzMsNyBAQCBXSS5SZWNvcmRpbmdBY3Rpb24gPSBjbGFzcyBSZWNvcmRpbmdBY3Rpb24gZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcGF5bG9hZFBhcmFtZXRlcnMgPSBwYXJhbWV0
ZXJzOwogICAgICAgICB0aGlzLl9wYXlsb2FkU3dpenpsZVR5cGVzID0gc3dpenpsZVR5cGVzOwog
ICAgICAgICB0aGlzLl9wYXlsb2FkVHJhY2UgPSB0cmFjZTsKLSAgICAgICAgdGhpcy5fcGF5bG9h
ZFNuYXBzaG90ID0gc25hcHNob3QgfHwgLTE7CisgICAgICAgIHRoaXMuX3BheWxvYWRTbmFwc2hv
dCA9IHNuYXBzaG90ID8/IC0xOwogCiAgICAgICAgIHRoaXMuX25hbWUgPSAiIjsKICAgICAgICAg
dGhpcy5fcGFyYW1ldGVycyA9IFtdOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ5NTQzMDMyNThkYTI5MWYxZmQ2YTRlMWMz
ZGU2MzE5YzMwOWE0NjcuLmVmYWFhNTMyZWFmMDZmMzMzMTM2ZDVmN2FhZmJjYmU3YzM5ODA2OWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0wMiAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYFJlY29yZENhbnZhc0FjdGlv
blZhcmlhbnRgIGNhdXNlcyBhIGh1Z2Ugc3ltYm9sIHRvIGJlIGNyZWF0ZWQgaW4gV2ViQ29yZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM5Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyODA1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9jYW52YXMvcmVzb3VyY2VzL3Jl
Y29yZGluZy13ZWJnbDIuanM6CisgICAgICAgICogaW5zcGVjdG9yL2NhbnZhcy9yZWNvcmRpbmct
d2ViZ2wyLWZ1bGwtZXhwZWN0ZWQudHh0OgorICAgICAgICBVc2UgYW4gYWN0dWFsIGB1bmlmb3Jt
YCBuYW1lIGluc3RlYWQgb2YgYSByYW5kb20gdGVzdCBzdHJpbmcuCisKIDIwMjEtMDMtMDIgIENo
cmlzIEdhbWJyZWxsICA8Y2dhbWJyZWxsQGFwcGxlLmNvbT4KIAogICAgICAgICBbTGF5b3V0VGVz
dHNdIENvbnZlcnQgaHR0cC90ZXN0cy9kb3dubG9hZCBjb252ZXJ0IFBIUCB0byBQeXRob24KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5nLXdlYmdsMi1m
dWxsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVjb3JkaW5n
LXdlYmdsMi1mdWxsLWV4cGVjdGVkLnR4dAppbmRleCA3YTk1ZTVjYjllZTAxNDBhMTM5NmVlMWQ1
MjdiZmIwYmRjM2YzODlmLi5iNWFiZjQ2YzE3MDdiYmIzZGNjNGY1MzJjODk2NDg3NDJkZTUzMDJm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy13ZWJn
bDItZnVsbC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9y
ZWNvcmRpbmctd2ViZ2wyLWZ1bGwtZXhwZWN0ZWQudHh0CkBAIC01MjAsOCArNTIwLDggQEAgZnJh
bWVzOgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRl
RnJhbWVGdW5jdGlvbgogICA3MjogKGR1cmF0aW9uKQotICAgIDA6IGdldFVuaWZvcm0oMCkKLSAg
ICAgIHN3aXp6bGVUeXBlczogW1dlYkdMUHJvZ3JhbV0KKyAgICAwOiBnZXRVbmlmb3JtKDAsIDAp
CisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFByb2dyYW0sIFdlYkdMVW5pZm9ybUxvY2F0aW9u
XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IGdldFVuaWZvcm0KICAgICAgICAgMTogKGFub255
bW91cyBmdW5jdGlvbikKQEAgLTcyOSwxMzQgKzcyOSwxMzQgQEAgZnJhbWVzOgogICAgICAgICAx
OiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgog
ICAxMDI6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMWYoMSkKLSAgICAgIHN3aXp6bGVUeXBl
czogW051bWJlcl0KKyAgICAwOiB1bmlmb3JtMWYoMCwgMSkKKyAgICAgIHN3aXp6bGVUeXBlczog
W1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDog
dW5pZm9ybTFmCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4
ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEwMzogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0xZnYo
MCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTFmdigw
LCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJy
YXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTFmdgogICAgICAgICAxOiAoYW5v
bnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMDQ6
IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMWkoMSkKLSAgICAgIHN3aXp6bGVUeXBlczogW051
bWJlcl0KKyAgICAwOiB1bmlmb3JtMWkoMCwgMSkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdM
VW5pZm9ybUxvY2F0aW9uLCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9y
bTFpCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVG
cmFtZUZ1bmN0aW9uCiAgIDEwNTogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0xaXYoMCkKLSAg
ICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTFpdigwLCAwKQor
ICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAg
ICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTFpdgogICAgICAgICAxOiAoYW5vbnltb3Vz
IGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMDY6IChkdXJh
dGlvbikKLSAgICAwOiB1bmlmb3JtMmYoMSwgMikKLSAgICAgIHN3aXp6bGVUeXBlczogW051bWJl
ciwgTnVtYmVyXQorICAgIDA6IHVuaWZvcm0yZigwLCAxLCAyKQorICAgICAgc3dpenpsZVR5cGVz
OiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVyXQogICAgICAgdHJhY2U6CiAg
ICAgICAgIDA6IHVuaWZvcm0yZgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAg
ICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMDc6IChkdXJhdGlvbikKLSAgICAwOiB1
bmlmb3JtMmZ2KDApCi0gICAgICBzd2l6emxlVHlwZXM6IFtUeXBlZEFycmF5XQorICAgIDA6IHVu
aWZvcm0yZnYoMCwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9u
LCBUeXBlZEFycmF5XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm0yZnYKICAgICAg
ICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rp
b24KICAgMTA4OiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybTJpKDEsIDIpCi0gICAgICBzd2l6
emxlVHlwZXM6IFtOdW1iZXIsIE51bWJlcl0KKyAgICAwOiB1bmlmb3JtMmkoMCwgMSwgMikKKyAg
ICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBOdW1iZXIsIE51bWJlcl0K
ICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtMmkKICAgICAgICAgMTogKGFub255bW91
cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTA5OiAoZHVy
YXRpb24pCi0gICAgMDogdW5pZm9ybTJpdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRB
cnJheV0KKyAgICAwOiB1bmlmb3JtMml2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJH
TFVuaWZvcm1Mb2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1
bmlmb3JtMml2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4
ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDExMDogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0zZigx
LCAyLCAzKQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KKyAg
ICAwOiB1bmlmb3JtM2YoMCwgMSwgMiwgMykKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5p
Zm9ybUxvY2F0aW9uLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyXQogICAgICAgdHJhY2U6CiAgICAg
ICAgIDA6IHVuaWZvcm0zZgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAg
ICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTE6IChkdXJhdGlvbikKLSAgICAwOiB1bmlm
b3JtM2Z2KDApCi0gICAgICBzd2l6emxlVHlwZXM6IFtUeXBlZEFycmF5XQorICAgIDA6IHVuaWZv
cm0zZnYoMCwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBU
eXBlZEFycmF5XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm0zZnYKICAgICAgICAg
MTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24K
ICAgMTEyOiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybTNpKDEsIDIsIDMpCi0gICAgICBzd2l6
emxlVHlwZXM6IFtOdW1iZXIsIE51bWJlciwgTnVtYmVyXQorICAgIDA6IHVuaWZvcm0zaSgwLCAx
LCAyLCAzKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJl
ciwgTnVtYmVyLCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTNpCiAg
ICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1
bmN0aW9uCiAgIDExMzogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0zaXYoMCkKLSAgICAgIHN3
aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTNpdigwLCAwKQorICAgICAg
c3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0
cmFjZToKICAgICAgICAgMDogdW5pZm9ybTNpdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0
aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTQ6IChkdXJhdGlvbikK
LSAgICAwOiB1bmlmb3JtNGYoMSwgMiwgMywgNCkKLSAgICAgIHN3aXp6bGVUeXBlczogW051bWJl
ciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KKyAgICAwOiB1bmlmb3JtNGYoMCwgMSwgMiwgMywg
NCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBOdW1iZXIsIE51
bWJlciwgTnVtYmVyLCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTRm
CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFt
ZUZ1bmN0aW9uCiAgIDExNTogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm00ZnYoMCkKLSAgICAg
IHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTRmdigwLCAwKQorICAg
ICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAgICAg
ICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTRmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1
bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTY6IChkdXJhdGlv
bikKLSAgICAwOiB1bmlmb3JtNGkoMSwgMiwgMywgNCkKLSAgICAgIHN3aXp6bGVUeXBlczogW051
bWJlciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KKyAgICAwOiB1bmlmb3JtNGkoMCwgMSwgMiwg
MywgNCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBOdW1iZXIs
IE51bWJlciwgTnVtYmVyLCBOdW1iZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9y
bTRpCiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVG
cmFtZUZ1bmN0aW9uCiAgIDExNzogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm00aXYoMCkKLSAg
ICAgIHN3aXp6bGVUeXBlczogW1R5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTRpdigwLCAwKQor
ICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAg
ICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTRpdgogICAgICAgICAxOiAoYW5vbnltb3Vz
IGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTg6IChkdXJh
dGlvbikKLSAgICAwOiB1bmlmb3JtTWF0cml4MmZ2KHRydWUsIDApCi0gICAgICBzd2l6emxlVHlw
ZXM6IFtCb29sZWFuLCBUeXBlZEFycmF5XQorICAgIDA6IHVuaWZvcm1NYXRyaXgyZnYoMCwgdHJ1
ZSwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBCb29sZWFu
LCBUeXBlZEFycmF5XQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm1NYXRyaXgyZnYK
ICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1l
RnVuY3Rpb24KICAgMTE5OiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybU1hdHJpeDNmdih0cnVl
LCAwKQotICAgICAgc3dpenpsZVR5cGVzOiBbQm9vbGVhbiwgVHlwZWRBcnJheV0KKyAgICAwOiB1
bmlmb3JtTWF0cml4M2Z2KDAsIHRydWUsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVu
aWZvcm1Mb2NhdGlvbiwgQm9vbGVhbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAg
ICAwOiB1bmlmb3JtTWF0cml4M2Z2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAg
ICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEyMDogKGR1cmF0aW9uKQotICAgIDA6
IHVuaWZvcm1NYXRyaXg0ZnYodHJ1ZSwgMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW0Jvb2xlYW4s
IFR5cGVkQXJyYXldCisgICAgMDogdW5pZm9ybU1hdHJpeDRmdigwLCB0cnVlLCAwKQorICAgICAg
c3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIEJvb2xlYW4sIFR5cGVkQXJyYXld
CiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybU1hdHJpeDRmdgogICAgICAgICAxOiAo
YW5vbnltb3VzIGZ1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nh
bnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9jYW52YXMvcmVzb3VyY2VzL3JlY29yZGluZy13ZWJnbDIuanMKaW5kZXggMzE1ODhlMjk0MmIx
ZTlmOWMyYjQ1Yjk2ZjRmNmZmYTFiODE5MTQ0MC4uNzdiNTk4OTdmMjkwNjhhMzg4ZTg0NTlkMmZm
YmYxZDZkZGM4YjBmMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9y
ZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
Y2FudmFzL3Jlc291cmNlcy9yZWNvcmRpbmctd2ViZ2wyLmpzCkBAIC0yNiw3ICsyNiw3IEBAIGZ1
bmN0aW9uIGxvYWQoKSB7CiAKICAgICBidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUJ1ZmZlcigpOwog
ICAgIGZyYW1lYnVmZmVyID0gY29udGV4dC5jcmVhdGVGcmFtZWJ1ZmZlcigpOwotICAgIHVuaWZv
cm1Mb2NhdGlvbiA9IGNvbnRleHQuZ2V0VW5pZm9ybUxvY2F0aW9uKHByb2dyYW0sICJ0ZXN0Iik7
CisgICAgdW5pZm9ybUxvY2F0aW9uID0gY29udGV4dC5nZXRVbmlmb3JtTG9jYXRpb24ocHJvZ3Jh
bSwgInRlc3RVbmlmb3JtIik7CiAgICAgcmVuZGVyYnVmZmVyID0gY29udGV4dC5jcmVhdGVSZW5k
ZXJidWZmZXIoKTsKICAgICBzaGFkZXIgPSBjb250ZXh0LmNyZWF0ZVNoYWRlcihjb250ZXh0LlZF
UlRFWF9TSEFERVIpOwogICAgIHRleHR1cmUgPSBjb250ZXh0LmNyZWF0ZVRleHR1cmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>422161</attachid>
            <date>2021-03-03 16:42:37 -0800</date>
            <delta_ts>2021-03-03 17:34:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-222639-20210303174236.patch</filename>
            <type>text/plain</type>
            <size>145766</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdhMjFlMTQzNTc4ZjNmYmY0YjY1ZjExZGMyOTAy
OTM4ODY5MjY3MmYuLjNiMTBmNGIyYzQxZGI3ZmUzMGUxODA3MDI5Y2Q1NGY1N2I2ZTJmZDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIxLTAzLTAzICBEZXZp
biBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBg
UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgY2F1c2VzIGEgaHVnZSBzeW1ib2wgdG8gYmUgY3Jl
YXRlZCBpbiBXZWJDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMjI2MzkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczNzI4MDU3PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24gYW5kIEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvcHJvdG9jb2wvUmVjb3JkaW5nLmpzb246CisgICAgICAgIERyaXZlLWJ5OiBBZGQg
aW5mbyBhYm91dCBgc25hcHNob3RgIHRvIHRoZSBgImRlc2NyaXB0aW9uImAgb2YgYCJhY3Rpb25z
ImAgaW4gYCJGcmFtZSJgLgorCiAyMDIxLTAzLTAyICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBh
cHBsZS5jb20+CiAKICAgICAgICAgRmxha3kgSlNDIHRlc3Q6IHN0cmVzcy9zaGFyZWQtYXJyYXkt
YnVmZmVyLXNvcnQtd2hpbGUtZGlmZmVyZW50LXRocmVhZC1pcy1tb2RpZnlpbmcuanMuZGVmYXVs
dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IDVmZTZiY2Y1ZjVhNTgxM2MxMjFjOGIzYWFmMTkwYWZlZDRlMGQzZmUu
LmRhNmRmNWYxNjQ1NjE1M2U1ZjEzZDFkYWU0Y2E2NjdiZDJlYmMwZGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwxMTEgQEAKKzIwMjEtMDMtMDMgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUu
Y29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGBSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50
YCBjYXVzZXMgYSBodWdlIHN5bWJvbCB0byBiZSBjcmVhdGVkIGluIFdlYkNvcmUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMjYzOQorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzM3MjgwNTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRv
biBhbmQgQnJpYW4gQnVyZy4KKworICAgICAgICBUaGUgb25seSByZWFzb24gdGhhdCBgUmVjb3Jk
Q2FudmFzQWN0aW9uVmFyaWFudGAgZXhpc3RzIGlzIHNvIHRoYXQgdGhlIGdlbmVyYXRlZCBJREwg
Y29kZQorICAgICAgICBjYW4gcGFzcyBhbGwgYXJndW1lbnRzIGF0IG9uY2UgdG8gdGhlIGZ1bmN0
aW9uIGRlZmluZWQgYnkgYENhbGxUcmFjaW5nQ2FsbGJhY2tgLiBJbnN0ZWFkLAorICAgICAgICBj
aGFuZ2UgYENhbGxUcmFjaW5nQ2FsbGJhY2tgICh3aGljaCBleHBlY3RzIGEgYHN0YXRpY2AgZnVu
Y3Rpb24gb24gYENhbGxUcmFjZXJgKSB0byBiZQorICAgICAgICBgQ2FsbFRyYWNlcmAgKHdoaWNo
IGV4cGVjdHMgYSBgY2xhc3NgKSBzbyB0aGF0IG1vcmUgdGhhbiBvbmUgZnVuY3Rpb24gY2FuIGJl
IHVzZWQgaW4gdGhlCisgICAgICAgIGdlbmVyYXRlZCBJREwgY29kZSAoYW5kIHNvIHRoYXQgbm90
IGV2ZXJ5IHVzYWdlIGhhcyB0byBiZSBwYXJ0IG9mIGBDYWxsVHJhY2VyKS4gVGhlc2UgbmV3Cisg
ICAgICAgIGZ1bmN0aW9ucyBhcmU6CisgICAgICAgICAtIGBwcm9jZXNzQXJndW1lbnRgLCB3aGlj
aCBpcyB1c2VkIHRvIGNvbnZlcnQgdGhlIGFyZ3VtZW50IHRvIGEgbW9yZSBnZW5lcmljIHR5cGUK
KyAgICAgICAgIC0gYHJlY29yZEFjdGlvbmAsIHdoaWNoIGlzIGJhc2ljYWxseSB3aGF0IGBDYWxs
VHJhY2luZ0NhbGxiYWNrYCB1c2VkIHRvIGJlCisgICAgICAgIEluIHRoZSBjYXNlIG9mIGBJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyYCAod2hpY2ggaXMgd2hhdCBgcmVjb3JkQ2FudmFzQWN0aW9u
YCB1c2VkIHRvIGJlKSwKKyAgICAgICAgYHByb2Nlc3NBcmd1bWVudGAgY29udmVydHMgdG8gYSBg
c3RydWN0YCBvZiBgSlNPTjo6VmFsdWVgIGFuZCBgUmVjb3JkaW5nU3dpenpsZVR5cGVgLCB3aGlj
aAorICAgICAgICB1c2VkIHRvIGhhcHBlbiB3YXkgbGF0ZXIgaW4gYEluc3BlY3RvckNhbnZhczo6
YnVpbGRBY3Rpb25gICh3aGljaCBpcyB3aHkgdGhlcmUgdXNlZCB0byBiZQorICAgICAgICBgUmVj
b3JkQ2FudmFzQWN0aW9uVmFyaWFudGAgYXMgdGhlcmUgd2FzIG5vIG90aGVyIGdvb2Qgd2F5IG9m
IGhhbmRsaW5nIGFsbCB0aGUgdmFyaW91cworICAgICAgICBhcmd1bWVudHMgb2YgYWxsIHRoZSB2
YXJpb3VzIGZ1bmN0aW9ucykuIFRoZSBvbmx5IGVmZmVjdCB0aGF0IHRoaXMgY2hhbmdlIGhhcyBp
cyB0aGF0IG5vdworICAgICAgICB0aGUgZGVkdXBsaWNhdGVkIGBkYXRhYCBpbiB0aGUgYFJlY29y
ZGluZ2AgcGF5bG9hZCBtaWdodCBoYXZlIGEgZGlmZmVyZW50IG9yZGVyLCBhcworICAgICAgICBh
cmd1bWVudHMgYXJlIGRlZHVwbGljYXRlZCBiZWZvcmUgYWN0aW9uIG5hbWVzLCBidXQgdGhpcyBz
aG91bGRuJ3QgaGF2ZSBhbnkgbm90aWNhYmxlIGVmZmVjdAorICAgICAgICBhcyB0aGUgV2ViIElu
c3BlY3RvciBmcm9udGVuZCBoYW5kbGVzIHRoZSAidW5wYWNraW5nIiBvZiB0aGUgZGVkdXBsaWNh
dGVkIGBkYXRhYCBpbiB0aGUgc2FtZQorICAgICAgICB3YXkgKGFuZCB0aGUgdGVzdHMgY29uZmly
bSBpdCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToK
KyAgICAgICAgKEdlbmVyYXRlQXR0cmlidXRlR2V0dGVyQm9keURlZmluaXRpb24pOgorICAgICAg
ICAoR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVmaW5pdGlvbik6CisgICAgICAgIChHZW5l
cmF0ZUltcGxlbWVudGF0aW9uRnVuY3Rpb25DYWxsKToKKyAgICAgICAgKEdlbmVyYXRlQ2FsbFRy
YWNlcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLmpzb246Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsVHJhY2VyLmlkbDoKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHA6CisgICAg
ICAgIFJlcGxhY2UgYENhbGxUcmFjaW5nQ2FsbGJhY2tgIHdpdGggYENhbGxUcmFjZXJgCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnJlY29yZEFjdGlvbik6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OmVuYWJsZWRDYW52YXNBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9DYWxsVHJhY2VyLmg6IFJlbW92ZWQuCisgICAgICAgICogYmlu
ZGluZ3MvanMvQ2FsbFRyYWNlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24pOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb25JbXBsKTog
RGVsZXRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6cmVjb3JkQ2Fu
dmFzQWN0aW9uSW1wbCk6IERlbGV0ZWQuCisgICAgICAgIFJhdGhlciB0aGFuIHBpcGluZyB0aHJv
dWdoIGBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25gICh3aGljaCB3b3VsZCByZXF1aXJlIGFkZGlu
ZyBgI2luY2x1ZGVgCisgICAgICAgIGZvciBhbGwgdGhlIGFyZ3VtZW50IHR5cGVzIGluIHRoZSBg
LmhgKSwganVzdCBwdWxsIG91dCB0aGUgYEluc3BlY3RvckNhbnZhc0FnZW50YCBhbmQgdXNlIGl0
CisgICAgICAgIGxvY2FsbHkgaGVyZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JD
YW52YXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhczo6Y2FudmFzQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JDYW52YXM6OnZhbHVlSW5kZXhGb3JEYXRhKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0aW9uKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JD
YW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OnN0b3BSZWNvcmRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q2FudmFzQWdlbnQ6OmRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRBY3Rpb24pOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24pOiBE
ZWxldGVkLgorICAgICAgICBDcmVhdGUgaW5kaXZpZHVhbCBgcHJvY2Vzc0FyZ3VtZW50YCBtZW1i
ZXIgZnVuY3Rpb24gZm9yIGVhY2ggdHlwZSB1c2VkIGJ5IHRoZSB2YXJpb3VzIGNhbnZhcworICAg
ICAgICBjb250ZXh0cyBpbnN0ZWFkIG9mIGhhdmluZyBvbmUgZ2lhbnQgYFdURjo6c3dpdGNoT25g
IGZvciBgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudGAuCisKKyAgICAgICAgKiBodG1sL0hUTUxD
YW52YXNFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaWRsOgorICAgICAgICAqIGh0bWwvY2FudmFzL0ltYWdlQml0bWFwUmVuZGVyaW5n
Q29udGV4dC5pZGw6CisgICAgICAgICogaHRtbC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdD
b250ZXh0LmlkbDoKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aWRsOgorICAgICAgICBSZXBsYWNlIGBDYWxsVHJhY2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0Fj
dGlvbmAgd2l0aCBgQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyYC4KKworICAg
ICAgICAqIGh0bWwvQ2FudmFzQmFzZS5oOgorICAgICAgICAqIGh0bWwvQ2FudmFzQmFzZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXND
YWxsVHJhY2VyIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpDYW52YXNCYXNlOjpj
YWxsVHJhY2luZ0FjdGl2ZSBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogaHRtbC9IVE1MQ2Fu
dmFzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MQ2FudmFzRWxlbWVudDo6cGFp
bnQpOgorICAgICAgICAqIGh0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6Omhhc0FjdGl2ZUluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXIgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZh
c1JlbmRlcmluZ0NvbnRleHQ6OnNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIp
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1JlbmRlcmluZ0NvbnRleHQ6OmNhbGxU
cmFjaW5nQWN0aXZlIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQ6OnNldENhbGxUcmFjaW5nQWN0aXZlKTogRGVsZXRlZC4KKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OmRpZENvbXBvc2l0ZSk6CisgICAgICAg
IFJlcGxhY2UgYGNhbGxUcmFjaW5nQWN0aXZlYCB3aXRoIGBoYXNBY3RpdmVJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyYC4KKworICAgICAgICAqIGluc3BlY3Rvci9SZWNvcmRpbmdTd2l6emxlVHlw
ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1JlY29yZGluZ1N3aXp6
bGVUeXBlcy5oLgorICAgICAgICBEcml2ZS1ieTogUmVuYW1lIGBSZWNvcmRpbmdTd2l6emxlVHlw
ZXNgIHRvIGBSZWNvcmRpbmdTd2l6emxlVHlwZWAuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAg
KiBodG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKiBodG1s
L2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAqIGxvYWRlci9Eb2N1
bWVudFRocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAqIGxvYWRlci9JbWFnZUxvYWRlci5j
cHA6CisgICAgICAgICogbG9hZGVyL1RleHRUcmFja0xvYWRlci5jcHA6CisgICAgICAgICogcGFn
ZS9QYWdlLmNwcDoKKyAgICAgICAgRHJpdmUtYnk6IHVuaWZpZWQgc291cmNlcyBpbmNsdWRlIGZp
eGVzCisKIDIwMjEtMDMtMDIgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBSZW1vdmUgSW1wdXJlUHJveHlUeXBlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwppbmRleCBjMWI5YjgxNDgzYTk4NThhMGI3NGE2OGY0ODIxMWM2YmUzNmVhZDYwLi5mZGFkOTA0
N2M5MDEyZDRiNGY2MDMxM2Q3N2I5ZTE5ZmYyZGNjMTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxOCBAQAorMjAyMS0wMy0wMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYFJlY29yZENhbnZhc0FjdGlvblZh
cmlhbnRgIGNhdXNlcyBhIGh1Z2Ugc3ltYm9sIHRvIGJlIGNyZWF0ZWQgaW4gV2ViQ29yZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIyNjM5CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyODA1Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBUaW0g
SG9ydG9uIGFuZCBCcmlhbiBCdXJnLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVjb3JkaW5nQWN0aW9uLmpzOgorICAgICAgICAoV0kuUmVjb3JkaW5nQWN0aW9uKToKKyAgICAg
ICAgRG9uJ3QgdXNlIGB8fGAgZm9yIHRoZSBmYWxsYmFjayBvZiBgX3BheWxvYWRTbmFwc2hvdGAg
YXMgaXQgY2FuIGJlIGAwYC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29y
ZGluZy5qczoKKyAgICAgICAgRHJpdmUtYnk6IFJlbmFtZSBgUmVjb3JkaW5nU3dpenpsZVR5cGVz
YCB0byBgUmVjb3JkaW5nU3dpenpsZVR5cGVgLgorCiAyMDIxLTAyLTI1ICBCSiBCdXJnICA8YmJ1
cmdAYXBwbGUuY29tPgogCiAgICAgICAgIFtDb2NvYV0gV2ViIEluc3BlY3RvcjogYWRkIHN1cHBv
cnQgZm9yIHJlY2VpdmluZyBXZWIgRXh0ZW5zaW9uIGV2ZW50cyB2aWEgX1dLSW5zcGVjdG9yRXh0
ZW5zaW9uRGVsZWdhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvcHJvdG9jb2wvUmVjb3JkaW5nLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL1JlY29yZGluZy5qc29uCmluZGV4IDA0NTNkZWVkYzE0NWNmOGQyZjZhYWVh
YWM5MWJjMTcxMWQxMWFiNzMuLmFjNDRlMzI5MTViZjQwMDY4YTFiZTE4NzM5ODZjNmFkNjUzM2U5
YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
UmVjb3JkaW5nLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9SZWNvcmRpbmcuanNvbgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgICAgInR5cGUi
OiAib2JqZWN0IiwKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDb250YWluZXIgb2JqZWN0
IGZvciBhIHNpbmdsZSBmcmFtZSBvZiB0aGUgcmVjb3JkaW5nLiIsCiAgICAgICAgICAgICAicHJv
cGVydGllcyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImFjdGlvbnMiLCAidHlwZSI6
ICJhcnJheSIsICJpdGVtcyI6IHsgInR5cGUiOiAiYW55IiB9LCAiZGVzY3JpcHRpb24iOiAiSW5m
b3JtYXRpb24gYWJvdXQgYW4gYWN0aW9uIG1hZGUgdG8gdGhlIHJlY29yZGVkIG9iamVjdC4gRm9s
bG93cyB0aGUgc3RydWN0dXJlIFtuYW1lLCBwYXJhbWV0ZXJzLCBzd2l6emxlVHlwZXMsIHRyYWNl
XSwgd2hlcmUgbmFtZSBpcyBhIHN0cmluZywgcGFyYW1ldGVycyBpcyBhbiBhcnJheSwgc3dpenps
ZVR5cGVzIGlzIGFuIGFycmF5LCBhbmQgdHJhY2UgaXMgYW4gYXJyYXkuIn0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJhY3Rpb25zIiwgInR5cGUiOiAiYXJyYXkiLCAiaXRlbXMiOiB7ICJ0
eXBlIjogImFueSIgfSwgImRlc2NyaXB0aW9uIjogIkluZm9ybWF0aW9uIGFib3V0IGFuIGFjdGlv
biBtYWRlIHRvIHRoZSByZWNvcmRlZCBvYmplY3QuIEZvbGxvd3MgdGhlIHN0cnVjdHVyZSBbbmFt
ZSwgcGFyYW1ldGVycywgc3dpenpsZVR5cGVzLCB0cmFjZSwgc25hcHNob3RdLCB3aGVyZSBuYW1l
IGlzIGEgc3RyaW5nLCBwYXJhbWV0ZXJzIGlzIGFuIGFycmF5LCBzd2l6emxlVHlwZXMgaXMgYW4g
YXJyYXksIHRyYWNlIGlzIGFuIGFycmF5LCBhbmQgc25hcHNob3QgaXMgYSBkYXRhIFVSTCBpbWFn
ZSBvZiB0aGUgY3VycmVudCBjb250ZW50cyBhZnRlciB0aGlzIGFjdGlvbi4ifSwKICAgICAgICAg
ICAgICAgICB7ICJuYW1lIjogImR1cmF0aW9uIiwgInR5cGUiOiAibnVtYmVyIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRvdGFsIGV4ZWN1dGlvbiB0aW1lIG9mIGFsbCBhY3Rp
b25zIHJlY29yZGVkIGluIHRoaXMgZnJhbWUgaW4gbWlsbGlzZWNvbmRzLiAiIH0sCiAgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJpbmNvbXBsZXRlIiwgInR5cGUiOiAiYm9vbGVhbiIsICJvcHRp
b25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJGbGFnIGluZGljYXRpbmcgaWYgdGhlIHJlY29y
ZGluZyB3YXMgc3RvcHBlZCBiZWZvcmUgdGhpcyBmcmFtZSBlbmRlZC4iIH0KICAgICAgICAgICAg
IF0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKaW5kZXggNDVmNzJkNGZmY2U2MDczMDZmMzFhMzIzNmRmNTM5MmUyYTMy
ZjNkMS4uZDEyMzUxMTRlMzE3ZDkxYzAzMmMwMTQwOGJjYWYxNTRmYmVkMWU1OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKQEAgLTQ5MSw3ICs0OTEsNiBAQCBhbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAogYW5p
bWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5jcHAKIGJpbmRpbmdzL2pzL0NhY2hlZE1vZHVs
ZVNjcmlwdExvYWRlci5jcHAKIGJpbmRpbmdzL2pzL0NhY2hlZFNjcmlwdEZldGNoZXIuY3BwCi1i
aW5kaW5ncy9qcy9DYWxsVHJhY2VyLmNwcAogYmluZGluZ3MvanMvQ29tbW9uVk0uY3BwCiBiaW5k
aW5ncy9qcy9ET01HQ091dHB1dENvbnN0cmFpbnQuY3BwCiBiaW5kaW5ncy9qcy9ET01XcmFwcGVy
V29ybGQuY3BwCkBAIC0xNDM4LDYgKzE0MzcsNyBAQCBpbnNwZWN0b3IvSW5zcGVjdG9yQXVkaXRB
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAogaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0RE9NT2JqZWN0
LmNwcAogaW5zcGVjdG9yL0luc3BlY3RvckF1ZGl0UmVzb3VyY2VzT2JqZWN0LmNwcAogaW5zcGVj
dG9yL0luc3BlY3RvckNhbnZhcy5jcHAKK2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyLmNwcAogaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCiBpbnNwZWN0b3IvSW5z
cGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAKIGluc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZEFQ
SURpc3BhdGNoZXIuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKaW5kZXggNzYzYmNiMTk0NzQ4NDhmYjg2Mjk4MTExMGEyMjczMzE4N2M5
MjdhNi4uNDA3ZjE4NTI1NzkwY2I3OGU4NTA1Y2Q3ODBmOTg1MDZkNjkyZDMxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjcx
Niw3ICsyNzE2LDcgQEAKIAkJOTE3NUNFNUUyMUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1
ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTE3NUNFNUEyMUUyODFFRDAwREYyQzI3IC8qIEluc3BlY3RvckF1ZGl0
QWNjZXNzaWJpbGl0eU9iamVjdC5oICovOyB9OwogCQk5MTc1Q0U1RTIxRTI4MUVEMDBERjJDMjgg
LyogSlNJbnNwZWN0b3JBdWRpdEFjY2Vzc2liaWxpdHlPYmplY3QuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxNzVDRTVBMjFFMjgxRUQwMERGMkMyOCAv
KiBKU0luc3BlY3RvckF1ZGl0QWNjZXNzaWJpbGl0eU9iamVjdC5oICovOyB9OwogCQk5MUI4RjBC
NTIxOTUzRDY1MDAwQzJCMDAgLyogQ2VydGlmaWNhdGVTdW1tYXJ5LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5MUI4RjBCMzIxOTUzRDY1MDAwQzJCMDAg
LyogQ2VydGlmaWNhdGVTdW1tYXJ5LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKLQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3
aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gOTFCOTUyMjIxRjU4QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oICov
OyB9OworCQk5MUI5NTIyNDFGNThBNThGMDA5MzFEQzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxQjk1MjIy
MUY1OEE1ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6emxlVHlwZS5oICovOyB9OwogCQk5MUM5
RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxQzlGMkY4MUFFM0JFMjQw
MDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkxRTBEREMxMjMwQjQxRTUwMDE5RTFFMyAv
KiBQYWdlRE9NRGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTFFMEREQkYyMzBCNDFFNTAwMTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dl
ckFnZW50LmggKi87IH07CiAJCTkxRTBEREM0MjMwQjQxRjEwMDE5RTFFMyAvKiBXb3JrZXJET01E
ZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5MUUwRERDMjIzMEI0MUYwMDAxOUUxRTMgLyogV29ya2VyRE9NRGVidWdnZXJBZ2VudC5o
ICovOyB9OwpAQCAtMjkzOSw4ICsyOTM5LDYgQEAKIAkJOTUwMTgzQ0QyNUQ2MzNEOTAwRDQzNDBG
IC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZUJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MDE4M0NCMjVENjMzRDgwMEQ0MzQwRiAvKiBBcHBsZVBh
eURldGFpbHNVcGRhdGVCYXNlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJOTUxREVERDIyNUUwODQ1QTAwMjBFMUVFIC8qIEFwcGxlUGF5U2hpcHBp
bmdNZXRob2REYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NTFERUREMDI1RTA4NDVBMDAyMEUxRUUgLyogQXBwbGVQYXlTaGlwcGluZ01ldGhvZERh
dGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
NTFERURENjI1RTA4NDlFMDAyMEUxRUUgLyogSlNBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUxREVERDQy
NUUwODQ5RDAwMjBFMUVFIC8qIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZERhdGEuaCAqLzsgfTsK
LQkJOTUyMDc2MDUxRjI2NzVGRTAwN0QyQUFCIC8qIENhbGxUcmFjZXIuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjA3NjAxMUYyNjc1RjkwMDdEMkFB
QiAvKiBDYWxsVHJhY2VyLmggKi87IH07Ci0JCTk1MjA3NjA2MUYyNjc1RkUwMDdEMkFBQiAvKiBD
YWxsVHJhY2VyVHlwZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDk1MjA3NjAyMUYyNjc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLzsg
fTsKIAkJOTUyN0Q3QUIyNUQ1RkRFMjAwQTZFMTc2IC8qIEFwcGxlUGF5RGV0YWlsc1VwZGF0ZURh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MjdE
N0E4MjVENUZERTEwMEE2RTE3NiAvKiBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJOTUyN0Q3QUYyNUQ1
RkU2QzAwQTZFMTc2IC8qIEpTQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTUyN0Q3QUQyNUQ1RkU2QjAwQTZF
MTc2IC8qIEpTQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oICovOyB9OwogCQk5NTNCQ0VCMjI1
RDYyODNEMDBBNEEyQTEgLyogSlNBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NTNCQ0VBRjI1RDYyODNDMDBB
NEEyQTEgLyogSlNBcHBsZVBheURldGFpbHNVcGRhdGVCYXNlLmggKi87IH07CkBAIC0yOTQ5LDYg
KzI5NDcsNyBAQAogCQk5NTk2QjkzMzI1REVFRUEwMDBFRDJDRkEgLyogQXBwbGVQYXlQYXltZW50
TWV0aG9kTW9kZVVwZGF0ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTU5NkI5MzAyNURFRUU5RjAwRUQyQ0ZBIC8qIEFwcGxlUGF5UGF5bWVudE1ldGhv
ZE1vZGVVcGRhdGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQk5NTk2QjkzODI1REVFRjAzMDBFRDJDRkEgLyogSlNBcHBsZVBheVBheW1lbnRNZXRo
b2RNb2RlVXBkYXRlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NTk2QjkzNjI1REVFRjAyMDBFRDJDRkEgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RN
b2RlVXBkYXRlLmggKi87IH07CiAJCTk1QTFFMkU5MjVDQzc1QTkwMDI2OEM4RSAvKiBNZWRpYUNv
bnRyb2xzQ29udGV4dE1lbnVJdGVtLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NUExRTJFNzI1Q0M3NUE4MDAyNjhDOEUgLyogTWVkaWFDb250cm9sc0Nv
bnRleHRNZW51SXRlbS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTk1QUE1NzEwMjVFRUVEMzIwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5
NUFBNTcwRTI1RUVFRDMxMDA0RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oICov
OyB9OwogCQk5NURGOUQyNTI1MkJFREIyMDAwRDdGNDYgLyogUG9pbnRlckNoYXJhY3RlcmlzdGlj
cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTVERjlE
MjMyNTJCRUQ5OTAwMEQ3RjQ2IC8qIFBvaW50ZXJDaGFyYWN0ZXJpc3RpY3MuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5NzA1OTk3QTEwN0Q5NzUy
MDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzYxMDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNr
ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk5
NzBCNzI4QTE0NEZGQUM2MDBGMDBBMzcgLyogRXZlbnRJbnRlcmZhY2VzLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NzBCNzI4OTE0NEZGQUM2MDBGMDBB
MzcgLyogRXZlbnRJbnRlcmZhY2VzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKQEAgLTExMzcyLDcgKzExMzcxLDcgQEAKIAkJOTE4NkYzQjcyMzI5RkI0
RjAwQUZGODU3IC8qIFdlYkdQVVBpcGVsaW5lLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkdQVVBpcGVsaW5lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkx
ODZGM0JBMjMyOUZFNjgwMEFGRjg1NyAvKiBHUFVQaXBlbGluZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHUFVQaXBlbGluZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkxQjhGMEIzMjE5NTNENjUwMDBDMkIwMCAvKiBDZXJ0aWZpY2F0ZVN1bW1h
cnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2VydGlmaWNhdGVTdW1tYXJ5
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTkxQjk1MjIyMUY1OEE1ODAwMDkzMURD
MiAvKiBSZWNvcmRpbmdTd2l6emxlVHlwZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVjb3JkaW5nU3dp
enpsZVR5cGVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxQjk1MjIyMUY1OEE1
ODAwMDkzMURDMiAvKiBSZWNvcmRpbmdTd2l6emxlVHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZWNv
cmRpbmdTd2l6emxlVHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MUM5RjJG
ODFBRTNCRTI0MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTFFMEREQkQyMzBCNDFFNDAwMTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dlckFnZW50LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFBhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTFFMEREQkYyMzBCNDFFNTAw
MTlFMUUzIC8qIFBhZ2VET01EZWJ1Z2dlckFnZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBhZ2VET01EZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMTc5Miw5ICsxMTc5MSw2IEBACiAJCTk1MURFREQwMjVFMDg0NUEwMDIwRTFFRSAv
KiBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBcHBsZVBheVNoaXBwaW5nTWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NTFERUREMzI1RTA4NDlDMDAyMEUxRUUgLyogSlNBcHBsZVBheVNoaXBwaW5n
TWV0aG9kRGF0YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Fw
cGxlUGF5U2hpcHBpbmdNZXRob2REYXRhLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJOTUxREVERDQyNUUwODQ5RDAwMjBFMUVFIC8qIEpTQXBwbGVQYXlTaGlwcGluZ01ldGhvZERh
dGEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNBcHBsZVBheVNoaXBwaW5n
TWV0aG9kRGF0YS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NTIwNzYwMDFGMjY3
NUY5MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsVHJh
Y2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJOTUyMDc2MDExRjI2NzVGOTAw
N0QyQUFCIC8qIENhbGxUcmFjZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ2FsbFRyYWNlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NTIwNzYwMjFGMjY3NUY5MDA3RDJBQUIgLyogQ2Fs
bFRyYWNlclR5cGVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENhbGxUcmFjZXJUeXBlcy5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5NTI3RDdBODI1RDVGREUxMDBBNkUxNzYgLyogQXBwbGVQ
YXlEZXRhaWxzVXBkYXRlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
cHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk1MjdEN0FBMjVENUZERTEwMEE2RTE3NiAvKiBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBBcHBsZVBheURldGFpbHNVcGRhdGVEYXRhLmlkbDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTUyN0Q3QUQyNUQ1RkU2QjAwQTZFMTc2IC8q
IEpTQXBwbGVQYXlEZXRhaWxzVXBkYXRlRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0FwcGxlUGF5RGV0YWlsc1VwZGF0ZURhdGEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTExODEwLDYgKzExODA2LDggQEAKIAkJOTU5NkI5MzUyNURFRUYwMDAwRUQy
Q0ZBIC8qIEpTQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0FwcGxlUGF5UGF5bWVudE1ldGhvZE1vZGVVcGRh
dGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NTk2QjkzNjI1REVFRjAyMDBF
RDJDRkEgLyogSlNBcHBsZVBheVBheW1lbnRNZXRob2RNb2RlVXBkYXRlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTQXBwbGVQYXlQYXltZW50TWV0aG9kTW9kZVVwZGF0ZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NUExRTJFNzI1Q0M3NUE4MDAyNjhDOEUg
LyogTWVkaWFDb250cm9sc0NvbnRleHRNZW51SXRlbS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBNZWRpYUNvbnRyb2xzQ29udGV4dE1lbnVJdGVtLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTk1QUE1NzBEMjVFRUVEMzAwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IElu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk5NUFBNTcwRTI1RUVFRDMxMDA0RTkyODMgLyogSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDYW52YXNDYWxsVHJh
Y2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk1REY5RDIzMjUyQkVEOTkwMDBE
N0Y0NiAvKiBQb2ludGVyQ2hhcmFjdGVyaXN0aWNzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaW50ZXJD
aGFyYWN0ZXJpc3RpY3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTcwNTk5NzUx
MDdEOTc1MjAwQTUwQTdDIC8qIFBvbGljeUNoZWNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gUG9saWN5Q2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTk3MDU5OTc2MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvbGljeUNoZWNrZXIuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4ODE4LDYgKzE4ODE2LDggQEAKIAkJCQk5MTA5RTlDNTIy
MkNBQkM4MDBCQjYyNjQgLyogSW5zcGVjdG9yQXVkaXRSZXNvdXJjZXNPYmplY3QuaCAqLywKIAkJ
CQk2QTIyRTg3MjFGMTA0MkM0MDBGNTQ2QzMgLyogSW5zcGVjdG9yQ2FudmFzLmNwcCAqLywKIAkJ
CQk2QTIyRTg2RjFGMTA0MTg2MDBGNTQ2QzMgLyogSW5zcGVjdG9yQ2FudmFzLmggKi8sCisJCQkJ
OTVBQTU3MEQyNUVFRUQzMDAwNEU5MjgzIC8qIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuY3Bw
ICovLAorCQkJCTk1QUE1NzBFMjVFRUVEMzEwMDRFOTI4MyAvKiBJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyLmggKi8sCiAJCQkJMUM4MUI5NTgwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNs
aWVudC5oICovLAogCQkJCTFDODFCOTU3MEU5NzMzMDgwMDI2NkUwNyAvKiBJbnNwZWN0b3JDb250
cm9sbGVyLmNwcCAqLywKIAkJCQkxQzgxQjk1NjBFOTczMzA4MDAyNjZFMDcgLyogSW5zcGVjdG9y
Q29udHJvbGxlci5oICovLApAQCAtMTg4NTUsNyArMTg4NTUsNyBAQAogCQkJCTU5QzI3RjA2MTM4
RDI4Q0YwMDc5QjdFMiAvKiBOZXR3b3JrUmVzb3VyY2VzRGF0YS5oICovLAogCQkJCUE1RjM2RDM4
MThGNzU4NzIwMDU0QzAyNCAvKiBQYWdlRGVidWdnZXIuY3BwICovLAogCQkJCUE1RjM2RDM5MThG
NzU4NzIwMDU0QzAyNCAvKiBQYWdlRGVidWdnZXIuaCAqLywKLQkJCQk5MUI5NTIyMjFGNThBNTgw
MDA5MzFEQzIgLyogUmVjb3JkaW5nU3dpenpsZVR5cGVzLmggKi8sCisJCQkJOTFCOTUyMjIxRjU4
QTU4MDAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlLmggKi8sCiAJCQkJNzU1M0NGRTcx
MDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1
M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovLAogCQkJ
CUE1ODQwRTIyMTg3QjhBQzIwMDg0M0IxMCAvKiBXZWJJbmplY3RlZFNjcmlwdEhvc3QuY3BwICov
LApAQCAtMjcwOTIsOSArMjcwOTIsNiBAQAogCQkJCUUzMDU5MjY1MUUyN0EzQzYwMEQ1N0M5OCAv
KiBDYWNoZWRTY3JpcHRGZXRjaGVyLmNwcCAqLywKIAkJCQlFMzA1OTI2NjFFMjdBM0M2MDBENTdD
OTggLyogQ2FjaGVkU2NyaXB0RmV0Y2hlci5oICovLAogCQkJCUJDRDUzMzYzMEVENjg0ODkwMDg4
NzQ2OCAvKiBDYWNoZWRTY3JpcHRTb3VyY2VQcm92aWRlci5oICovLAotCQkJCTk1MjA3NjAwMUYy
Njc1RjkwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmNwcCAqLywKLQkJCQk5NTIwNzYwMTFGMjY3NUY5
MDA3RDJBQUIgLyogQ2FsbFRyYWNlci5oICovLAotCQkJCTk1MjA3NjAyMUYyNjc1RjkwMDdEMkFB
QiAvKiBDYWxsVHJhY2VyVHlwZXMuaCAqLywKIAkJCQkwRjYwRjMyOTFERkJCMTA0MDA0MTZENkMg
LyogQ29tbW9uVk0uY3BwICovLAogCQkJCTBGNjBGMzJBMURGQkIxMDQwMDQxNkQ2QyAvKiBDb21t
b25WTS5oICovLAogCQkJCTBGOURBQTBDMUZEMUM2NjMwMDc5QzVCMiAvKiBET01HQ091dHB1dENv
bnN0cmFpbnQuY3BwICovLApAQCAtMzE1MTUsOCArMzE1MTIsNiBAQAogCQkJCUU0M0FGOEU3MUFD
NUI3RUMwMENBNzE3RSAvKiBDYWNoZVZhbGlkYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTQ5
QUUyRDk3MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmggaW4gSGVhZGVycyAq
LywKIAkJCQk3QzFFOEQwMTFFRDBDMkRBMDBCMUQ5ODMgLyogQ2FsbGJhY2tSZXN1bHQuaCBpbiBI
ZWFkZXJzICovLAotCQkJCTk1MjA3NjA1MUYyNjc1RkUwMDdEMkFBQiAvKiBDYWxsVHJhY2VyLmgg
aW4gSGVhZGVycyAqLywKLQkJCQk5NTIwNzYwNjFGMjY3NUZFMDA3RDJBQUIgLyogQ2FsbFRyYWNl
clR5cGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlFRkNDNkM4RjIwRkU5MTQ0MDBBMjMyMUIgLyog
Q2FudmFzQWN0aXZpdHlSZWNvcmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxMzE3MTU2MUZCMDc5
RTUwMDhEOTFGQyAvKiBDYW52YXNCYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTVDREFGNTFF
NkI4RjhCMDA0RjExRUUgLyogQ2FudmFzQ2FwdHVyZU1lZGlhU3RyZWFtVHJhY2suaCBpbiBIZWFk
ZXJzICovLApAQCAtMzI3NDQsNiArMzI3MzksNyBAQAogCQkJCTkxMDlFOUM4MjIyQ0FCQ0EwMEJC
NjI2NCAvKiBJbnNwZWN0b3JBdWRpdFJlc291cmNlc09iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNkEyMkU4NzAxRjEwNDE4NjAwRjU0NkMzIC8qIEluc3BlY3RvckNhbnZhcy5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQTVCODFDQTgxRkFBNDQ2MjAwMzdEMUU2IC8qIEluc3BlY3RvckNhbnZhc0Fn
ZW50LmggaW4gSGVhZGVycyAqLywKKwkJCQk5NUFBNTcxMDI1RUVFRDMyMDA0RTkyODMgLyogSW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4MUI5NUMwRTk3
MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUM4
MUI5NUEwRTk3MzMwODAwMjY2RTA3IC8qIEluc3BlY3RvckNvbnRyb2xsZXIuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUE1OUMyMzBBMjFGMjkyMDYwMDRFQzkzOSAvKiBJbnNwZWN0b3JDUFVQcm9maWxl
ckFnZW50LmggaW4gSGVhZGVycyAqLywKQEAgLTM0MzU1LDcgKzM0MzUxLDcgQEAKIAkJCQkwNzI4
ODBEMTIwMTBGMUY2MDA3MUIyNTUgLyogUmVhbHRpbWVWaWRlb0NhcHR1cmVTb3VyY2UuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTQxQkYyMDQ5MjJCQTdCRTgwMDA0RjgxMiAvKiBSZWFsdGltZVZpZGVv
U291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTU4NjRBMDIzQkY3Q0JGMDBBMEE2MUUgLyog
UmVhbHRpbWVWaWRlb1V0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJOTFCOTUyMjQxRjU4
QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlcy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJOTFCOTUyMjQxRjU4QTU4RjAwOTMxREMyIC8qIFJlY29yZGluZ1N3aXp6bGVUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzQzNjhFODBDMjI2RTMyMDA1RUZCNUYgLyogUmVjdC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJRkQ0NUE5NTgxNzVENDE0QzAwQzIxRUM4IC8qIFJlY3RhbmdsZVNoYXBl
LmggaW4gSGVhZGVycyAqLywKIAkJCQk1Q0VFRTQzNjFGNUY4RjIxMDAxNEE1RjUgLyogUmVjdEVk
Z2VzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0NhbGxUcmFjZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNl
ci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliMDVjMzlkNTI0NjZmZGFiY2Q3
MzBkMzgwYjJkMzM2YTM4YWNjNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlci5jcHAKKysr
IC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwot
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0g
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZp
Zy5oIgotI2luY2x1ZGUgIkNhbGxUcmFjZXIuaCIKLQotI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQuaCIKLSNpbmNsdWRlICJIVE1MQ2FudmFzRWxlbWVudC5oIgotI2luY2x1ZGUgIklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXZvaWQg
Q2FsbFRyYWNlcjo6cmVjb3JkQ2FudmFzQWN0aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiBj
YW52YXNFbGVtZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxS
ZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCi17Ci0gICAgaWYgKGF1dG8q
IGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBjYW52YXNFbGVtZW50LnJlbmRlcmluZ0NvbnRleHQo
KSkKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24o
KmNhbnZhc1JlbmRlcmluZ0NvbnRleHQsIG5hbWUsIFdURk1vdmUocGFyYW1ldGVycykpOwotfQot
Ci12b2lkIENhbGxUcmFjZXI6OnJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250
ZXh0JiBjYW52YXNSZW5kZXJpbmdDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5p
dGlhbGl6ZXJfbGlzdDxSZWNvcmRDYW52YXNBY3Rpb25WYXJpYW50PiYmIHBhcmFtZXRlcnMpCi17
Ci0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oY2FudmFz
UmVuZGVyaW5nQ29udGV4dCwgbmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0NhbGxUcmFjZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0NhbGxUcmFjZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ1NzFmOWIyZDUxNjc0MjU4OTU5MGEwZTk2
NGM3MWEzYTYyOTI1Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2VyLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRl
ICJDYWxsVHJhY2VyVHlwZXMuaCIKLSNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgotI2luY2x1
ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNz
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQ7Ci1jbGFzcyBIVE1MQ2FudmFzRWxlbWVudDsKLQotY2xh
c3MgQ2FsbFRyYWNlciB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIHZvaWQgcmVjb3JkQ2FudmFzQWN0
aW9uKGNvbnN0IEhUTUxDYW52YXNFbGVtZW50JiwgY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFs
aXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwotICAgIHN0YXRp
YyB2b2lkIHJlY29yZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3Qg
U3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+
JiYgPSB7IH0pOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvQ2FsbFRyYWNlclR5cGVzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9DYWxsVHJhY2VyVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDRhZWMyM2RhOWQxMzY4N2I5YmVmNTFhY2FmOGM5NWJlZTE2NGExYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9DYWxsVHJhY2VyVHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NyArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5o
IgotI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKLSNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0MkQuaCIKLSNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKLSNpbmNsdWRlICJFbGVt
ZW50LmgiCi0jaW5jbHVkZSAiSFRNTENhbnZhc0VsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MSW1h
Z2VFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFZpZGVvRWxlbWVudC5oIgotI2luY2x1ZGUgIklt
YWdlRGF0YS5oIgotI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQotI2luY2x1ZGUgIk9mZnNj
cmVlbkNhbnZhcy5oIgotI2VuZGlmCi0jaW5jbHVkZSAiUGF0aDJELmgiCi0jaW5jbHVkZSAiVHlw
ZWRPTUNTU0ltYWdlVmFsdWUuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZl
ci5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0Zsb2F0MzJBcnJheS5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0ludDMyQXJyYXkuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9VaW50MzJBcnJheS5o
PgotI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLSNp
bmNsdWRlIDx3dGYvVmFyaWFudC5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJX
ZWJHTEJ1ZmZlci5oIgotI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKLSNpbmNsdWRlICJX
ZWJHTFByb2dyYW0uaCIKLSNpbmNsdWRlICJXZWJHTFF1ZXJ5LmgiCi0jaW5jbHVkZSAiV2ViR0xS
ZW5kZXJidWZmZXIuaCIKLSNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCi0j
aW5jbHVkZSAiV2ViR0xTYW1wbGVyLmgiCi0jaW5jbHVkZSAiV2ViR0xTaGFkZXIuaCIKLSNpbmNs
dWRlICJXZWJHTFN5bmMuaCIKLSNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKLSNpbmNsdWRlICJX
ZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgotI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3Qu
aCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQkdMMikKLSNpbmNsdWRlICJXZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmgiCi0jaW5jbHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgotI2VuZGlm
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotdXNpbmcgUmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFu
dCA9IFZhcmlhbnQ8Ci0gICAgLy8gZW51bQotICAgIENhbnZhc0RpcmVjdGlvbiwKLSAgICBDYW52
YXNGaWxsUnVsZSwKLSAgICBDYW52YXNMaW5lQ2FwLAotICAgIENhbnZhc0xpbmVKb2luLAotICAg
IENhbnZhc1RleHRBbGlnbiwKLSAgICBDYW52YXNUZXh0QmFzZWxpbmUsCi0gICAgSW1hZ2VTbW9v
dGhpbmdRdWFsaXR5LAotCi0gICAgLy8gc3RydWN0Ci0gICAgRE9NTWF0cml4MkRJbml0LAotCi0g
ICAgLy8gcG9pbnRlcgotICAgIEVsZW1lbnQqLAotICAgIEhUTUxJbWFnZUVsZW1lbnQqLAotICAg
IEltYWdlQml0bWFwKiwKLSAgICBJbWFnZURhdGEqLAotICAgIFBhdGgyRCosCi0jaWYgRU5BQkxF
KFdFQkdMKQotICAgIFdlYkdMQnVmZmVyKiwKLSAgICBXZWJHTEZyYW1lYnVmZmVyKiwKLSAgICBX
ZWJHTFByb2dyYW0qLAotICAgIFdlYkdMUXVlcnkqLAotICAgIFdlYkdMUmVuZGVyYnVmZmVyKiwK
LSAgICBXZWJHTFNhbXBsZXIqLAotICAgIFdlYkdMU2hhZGVyKiwKLSAgICBXZWJHTFN5bmMqLAot
ICAgIFdlYkdMVGV4dHVyZSosCi0gICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qLAotICAgIFdlYkdM
VmVydGV4QXJyYXlPYmplY3QqLAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICBXZWJH
TFRyYW5zZm9ybUZlZWRiYWNrKiwKLSNlbmRpZgotICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4sCi0g
ICAgUmVmUHRyPEFycmF5QnVmZmVyVmlldz4sCi0gICAgUmVmUHRyPENhbnZhc0dyYWRpZW50PiwK
LSAgICBSZWZQdHI8Q2FudmFzUGF0dGVybj4sCi0gICAgUmVmUHRyPEZsb2F0MzJBcnJheT4sCi0g
ICAgUmVmUHRyPEhUTUxDYW52YXNFbGVtZW50PiwKLSAgICBSZWZQdHI8SFRNTEltYWdlRWxlbWVu
dD4sCi0jaWYgRU5BQkxFKFZJREVPKQotICAgIFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiwKLSNl
bmRpZgotICAgIFJlZlB0cjxJbWFnZUJpdG1hcD4sCi0jaWYgRU5BQkxFKENTU19UWVBFRF9PTSkK
LSAgICBSZWZQdHI8VHlwZWRPTUNTU0ltYWdlVmFsdWU+LAotI2VuZGlmCi0gICAgUmVmUHRyPElt
YWdlRGF0YT4sCi0jaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCi0gICAgUmVmUHRyPE9mZnNj
cmVlbkNhbnZhcz4sCi0jZW5kaWYKLSAgICBSZWZQdHI8SW50MzJBcnJheT4sCi0gICAgUmVmUHRy
PFVpbnQzMkFycmF5PiwKLQotICAgIC8vIHZhcmlhbnQKLSAgICBDYW52YXNJbWFnZVNvdXJjZSwK
LSAgICBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQsCi0jaWYgRU5B
QkxFKFdFQkdMKQotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3Vy
Y2UsCi0gICAgT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6QnVmZmVyRGF0YVNv
dXJjZT4sCi0gICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UsCi0g
ICAgT3B0aW9uYWw8V2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2U+LAot
I2VuZGlmCi0KLSAgICAvLyBhcnJheQotICAgIFZlY3RvcjxTdHJpbmc+LAotICAgIFZlY3Rvcjxm
bG9hdD4sCi0gICAgVmVjdG9yPHVpbnQzMl90PiwKLSAgICBWZWN0b3I8aW50MzJfdD4sCi0jaWYg
RU5BQkxFKFdFQkdMKQotICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkZsb2F0MzJMaXN0
OjpWYXJpYW50VHlwZSwKLSAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpJbnQzMkxpc3Q6
OlZhcmlhbnRUeXBlLAotI2VuZGlmCi0jaWYgRU5BQkxFKFdFQkdMMikKLSAgICBXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpWYXJpYW50VHlwZSwKLSNlbmRpZgotCi0gICAgLy8g
YmFzaWMKLSAgICBTdHJpbmcsCi0gICAgZG91YmxlLAotICAgIGZsb2F0LAotICAgIE9wdGlvbmFs
PGZsb2F0PiwKLSAgICB1aW50NjRfdCwKLSAgICBpbnQ2NF90LAotICAgIHVpbnQzMl90LAotICAg
IGludDMyX3QsCi0gICAgdWludDhfdCwKLSAgICBib29sCi0+OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVH
ZW5lcmF0b3JKUy5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCmluZGV4IGViMjA5YWRlMTA5NmYyNGJiMzAzZGZmNjA3NWU3M2E2YmJiMDIwOTku
LmQ4NjMzZGU4NjM2YWQ5MmNlNTQ0ZjEzOGYxMTgxZDdhZjlkMjk4MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC01MzU5
LDEwICs1MzU5LDEwIEBAIHN1YiBHZW5lcmF0ZUF0dHJpYnV0ZUdldHRlckJvZHlEZWZpbml0aW9u
CiAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICBhdXRvJiBpbXBsID0gdGhpc09iamVj
dC53cmFwcGVkKCk7XG4iKSB1bmxlc3MgJGF0dHJpYnV0ZS0+aXNTdGF0aWMgb3IgJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZFRvTWFwTGlrZX0gb3IgJGF0dHJpYnV0ZS0+
ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Rm9yd2FyZFRvU2V0TGlrZX07CiAKICAgICAgICAgaWYgKCFJ
c1JlYWRvbmx5KCRhdHRyaWJ1dGUpKSB7Ci0gICAgICAgICAgICBteSAkY2FsbFRyYWNpbmdDYWxs
YmFjayA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJh
Y2t9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJh
Y2t9OwotICAgICAgICAgICAgaWYgKCRjYWxsVHJhY2luZ0NhbGxiYWNrKSB7CisgICAgICAgICAg
ICBteSAkY2FsbFRyYWNlciA9ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxU
cmFjZXJ9IHx8ICRpbnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9Owor
ICAgICAgICAgICAgaWYgKCRjYWxsVHJhY2VyKSB7CiAgICAgICAgICAgICAgICAgbXkgQGNhbGxU
cmFjZXJBcmd1bWVudHMgPSAoKTsKLSAgICAgICAgICAgICAgICBHZW5lcmF0ZUNhbGxUcmFjZXIo
JG91dHB1dEFycmF5LCAkY2FsbFRyYWNpbmdDYWxsYmFjaywgJGF0dHJpYnV0ZS0+bmFtZSwgXEBj
YWxsVHJhY2VyQXJndW1lbnRzLCAiICAgICIpOworICAgICAgICAgICAgICAgIEdlbmVyYXRlQ2Fs
bFRyYWNlcigkb3V0cHV0QXJyYXksICRjYWxsVHJhY2VyLCAkYXR0cmlidXRlLT5uYW1lLCBcQGNh
bGxUcmFjZXJBcmd1bWVudHMsICIgICAgIik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApA
QCAtNTU3NCwxMSArNTU3NCwxMSBAQCBzdWIgR2VuZXJhdGVBdHRyaWJ1dGVTZXR0ZXJCb2R5RGVm
aW5pdGlvbgogICAgICAgICB1bnNoaWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2lu
Z1JlZmVyZW5jZXMoJGF0dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57U2V0dGVyQ2FsbFdp
dGh9LCAkb3V0cHV0QXJyYXksICJmYWxzZSIsICJ0aGlzT2JqZWN0IikpOwogICAgICAgICB1bnNo
aWZ0KEBhcmd1bWVudHMsIEdlbmVyYXRlQ2FsbFdpdGhVc2luZ1JlZmVyZW5jZXMoJGF0dHJpYnV0
ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFdpdGh9LCAkb3V0cHV0QXJyYXksICJmYWxzZSIs
ICJ0aGlzT2JqZWN0IikpOwogCi0gICAgICAgIG15ICRjYWxsVHJhY2luZ0NhbGxiYWNrID0gJGF0
dHJpYnV0ZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja30gfHwgJGlu
dGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNpbmdDYWxsYmFja307Ci0gICAg
ICAgIGlmICgkY2FsbFRyYWNpbmdDYWxsYmFjaykgeworICAgICAgICBteSAkY2FsbFRyYWNlciA9
ICRhdHRyaWJ1dGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9IHx8ICRpbnRlcmZh
Y2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjZXJ9OworICAgICAgICBpZiAoJGNhbGxU
cmFjZXIpIHsKICAgICAgICAgICAgIG15ICRpbmRlbnQgPSAiICAgICI7CiAgICAgICAgICAgICBt
eSBAY2FsbFRyYWNlckFyZ3VtZW50cyA9ICgibmF0aXZlVmFsdWUiKTsKLSAgICAgICAgICAgIEdl
bmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRjYWxsVHJhY2luZ0NhbGxiYWNrLCAkYXR0
cmlidXRlLT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMsICRpbmRlbnQpOworICAgICAgICAg
ICAgR2VuZXJhdGVDYWxsVHJhY2VyKCRvdXRwdXRBcnJheSwgJGNhbGxUcmFjZXIsICRhdHRyaWJ1
dGUtPm5hbWUsIFxAY2FsbFRyYWNlckFyZ3VtZW50cywgJGluZGVudCk7CiAgICAgICAgIH0KIAog
ICAgICAgICBteSAkZnVuY3Rpb25TdHJpbmcgPSAiJHtmdW5jdGlvbk5hbWV9KCIgLiBqb2luKCIs
ICIsIEBhcmd1bWVudHMpIC4gIikiOwpAQCAtNjcxOCwxMCArNjcxOCwxMCBAQCBzdWIgR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbkZ1bmN0aW9uQ2FsbAogewogICAgIG15ICgkb3V0cHV0QXJyYXksICRv
cGVyYXRpb24sICRpbnRlcmZhY2UsICRmdW5jdGlvblN0cmluZywgJGluZGVudCwgJGhhc1Rocm93
U2NvcGUpID0gQF87CiAKLSAgICBteSAkY2FsbFRyYWNpbmdDYWxsYmFjayA9ICRvcGVyYXRpb24t
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9IHx8ICRpbnRlcmZhY2Ut
PmV4dGVuZGVkQXR0cmlidXRlcy0+e0NhbGxUcmFjaW5nQ2FsbGJhY2t9OwotICAgIGlmICgkY2Fs
bFRyYWNpbmdDYWxsYmFjaykgeworICAgIG15ICRjYWxsVHJhY2VyID0gJG9wZXJhdGlvbi0+ZXh0
ZW5kZWRBdHRyaWJ1dGVzLT57Q2FsbFRyYWNlcn0gfHwgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRy
aWJ1dGVzLT57Q2FsbFRyYWNlcn07CisgICAgaWYgKCRjYWxsVHJhY2VyKSB7CiAgICAgICAgIG15
IEBjYWxsVHJhY2VyQXJndW1lbnRzID0gbWFwIHsgJF8tPm5hbWUgfSBAeyRvcGVyYXRpb24tPmFy
Z3VtZW50c307Ci0gICAgICAgIEdlbmVyYXRlQ2FsbFRyYWNlcigkb3V0cHV0QXJyYXksICRjYWxs
VHJhY2luZ0NhbGxiYWNrLCAkb3BlcmF0aW9uLT5uYW1lLCBcQGNhbGxUcmFjZXJBcmd1bWVudHMs
ICRpbmRlbnQpOworICAgICAgICBHZW5lcmF0ZUNhbGxUcmFjZXIoJG91dHB1dEFycmF5LCAkY2Fs
bFRyYWNlciwgJG9wZXJhdGlvbi0+bmFtZSwgXEBjYWxsVHJhY2VyQXJndW1lbnRzLCAkaW5kZW50
KTsKICAgICB9CiAKICAgICBteSAkZHJ5UnVuID0gMTsKQEAgLTgxMDYsMTQgKzgxMDYsMTQgQEAg
c3ViIEFkZEpTQnVpbHRpbkluY2x1ZGVzSWZOZWVkZWQoKQogCiBzdWIgR2VuZXJhdGVDYWxsVHJh
Y2VyKCkKIHsKLSAgICBteSAoJG91dHB1dEFycmF5LCAkY2FsbFRyYWNpbmdDYWxsYmFjaywgJG5h
bWUsICRhcmd1bWVudHMsICRpbmRlbnQpID0gQF87CisgICAgbXkgKCRvdXRwdXRBcnJheSwgJGNh
bGxUcmFjZXIsICRuYW1lLCAkYXJndW1lbnRzLCAkaW5kZW50KSA9IEBfOwogCi0gICAgQWRkVG9J
bXBsSW5jbHVkZXMoIkNhbGxUcmFjZXIuaCIpOworICAgIEFkZFRvSW1wbEluY2x1ZGVzKCRjYWxs
VHJhY2VyIC4gIi5oIik7CiAKLSAgICBwdXNoKEAkb3V0cHV0QXJyYXksICRpbmRlbnQgLiAiaWYg
KFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpXG4iKTsKLSAgICBwdXNoKEAkb3V0
cHV0QXJyYXksICRpbmRlbnQgLiAiICAgIENhbGxUcmFjZXI6OiIgLiAkY2FsbFRyYWNpbmdDYWxs
YmFjayAuICIoaW1wbCwgXCIiIC4gJG5hbWUgLiAiXCJfcyIpOworICAgIHB1c2goQCRvdXRwdXRB
cnJheSwgJGluZGVudCAuICJpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmUiIC4gJGNhbGxUcmFj
ZXIgLiAiKCkpKVxuIik7CisgICAgcHVzaChAJG91dHB1dEFycmF5LCAkaW5kZW50IC4gIiAgICAi
IC4gJGNhbGxUcmFjZXIgLiAiOjpyZWNvcmRBY3Rpb24oaW1wbCwgXCIiIC4gJG5hbWUgLiAiXCJf
cyIpOwogICAgIGlmIChzY2FsYXIoQCRhcmd1bWVudHMpKSB7Ci0gICAgICAgIHB1c2goQCRvdXRw
dXRBcnJheSwgIiwgeyAiIC4gam9pbigiLCAiLCBAJGFyZ3VtZW50cykgLiAiIH0iKTsKKyAgICAg
ICAgcHVzaChAJG91dHB1dEFycmF5LCAiLCB7ICIgLiBqb2luKCIsICIsIG1hcCB7ICRjYWxsVHJh
Y2VyIC4gIjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsICIgLiAkXyAuICIpIiB9IEAkYXJndW1lbnRz
KSAuICIgfSIpOwogICAgIH0KICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIpO1xuIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0dHJpYnV0ZXMu
anNvbiBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29u
CmluZGV4IDVkOTU2YWFiNjFkZTQwNjc5YTg4YmRkMjcyOGE4ZjVmNGYyOGQ3NWUuLjJhNWFkYWQ0
MmNkODFkY2RlOGE1NmI5YmY1M2RkYTJkMTE2YzVhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy5qc29uCkBAIC00NSw3ICs0NSw3IEBA
CiAgICAgICAgICJDYWNoZWRBdHRyaWJ1dGUiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNBbGxv
d2VkIjogWyJhdHRyaWJ1dGUiXQogICAgICAgICB9LAotICAgICAgICAiQ2FsbFRyYWNpbmdDYWxs
YmFjayI6IHsKKyAgICAgICAgIkNhbGxUcmFjZXIiOiB7CiAgICAgICAgICAgICAiY29udGV4dHNB
bGxvd2VkIjogWyJpbnRlcmZhY2UiLCAiYXR0cmlidXRlIiwgIm9wZXJhdGlvbiJdLAogICAgICAg
ICAgICAgInZhbHVlcyI6IFsiKiJdCiAgICAgICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0Q2FsbFRyYWNlci5jcHAK
aW5kZXggMzFlMTRlOGM4YTc1NmY0MDQyYTMxMTA4Yjg1ZDZiOTM2MTdjMGM1ZC4uNTQyM2U4YjNj
ODk4MGRhYTUwYjgxMWE0MDhjOTA5MjE0ZTgzMWU2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdENhbGxUcmFjZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RDYWxsVHJhY2VyLmNw
cApAQCAtMjIsNyArMjIsNiBAQAogI2luY2x1ZGUgIkpTVGVzdENhbGxUcmFjZXIuaCIKIAogI2lu
Y2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgotI2luY2x1ZGUgIkNhbGxUcmFjZXIuaCIKICNpbmNs
dWRlICJET01Jc29TdWJzcGFjZXMuaCIKICNpbmNsdWRlICJKU0RPTUF0dHJpYnV0ZS5oIgogI2lu
Y2x1ZGUgIkpTRE9NQmluZGluZy5oIgpAQCAtMzksNiArMzgsOSBAQAogI2luY2x1ZGUgIkpTRE9N
V3JhcHBlckNhY2hlLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dC5oIgorI2luY2x1ZGUgIlRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyLmgiCisj
aW5jbHVkZSAiVGVzdEludGVyZmFjZUNhbGxUcmFjZXIuaCIKKyNpbmNsdWRlICJUZXN0T3BlcmF0
aW9uQ2FsbFRyYWNlci5oIgogI2luY2x1ZGUgIldlYkNvcmVKU0NsaWVudERhdGEuaCIKICNpbmNs
dWRlIDxKYXZhU2NyaXB0Q29yZS9GdW5jdGlvblByb3RvdHlwZS5oPgogI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0hlYXBBbmFseXplci5oPgpAQCAtMjI3LDggKzIyOSw4IEBAIHN0YXRpYyBpbmxp
bmUgSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyX3Rlc3RBdHRyaWJ1dGVJbnRlcmZhY2VHZXR0ZXIo
SlNHbG9iYWxPYmplCiAgICAgYXV0byYgdm0gPSBKU0M6OmdldFZNKCZsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKICAgICBhdXRvIHRocm93U2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKICAg
ICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7Ci0gICAgaWYgKFVOTElLRUxZKGlt
cGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJh
Y2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0QXR0cmlidXRlSW50ZXJmYWNlIl9zKTsKKyAgICBpZiAo
VU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAg
ICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJp
YnV0ZUludGVyZmFjZSJfcyk7CiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHRocm93U2NvcGUsICh0
b0pTPElETEJvb2xlYW4+KGxleGljYWxHbG9iYWxPYmplY3QsIHRocm93U2NvcGUsIGltcGwudGVz
dEF0dHJpYnV0ZUludGVyZmFjZSgpKSkpOwogfQogCkBAIC0yNDQsOCArMjQ2LDggQEAgc3RhdGlj
IGlubGluZSBib29sIHNldEpTVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZUludGVyZmFjZVNl
dHRlcihKU0dsb2JhbE9iamUKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7
CiAgICAgYXV0byBuYXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMQm9vbGVhbj4obGV4aWNhbEdsb2Jh
bE9iamVjdCwgdmFsdWUpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZmFs
c2UpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAg
ICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdEF0dHJpYnV0
ZUludGVyZmFjZSJfcywgeyBuYXRpdmVWYWx1ZSB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5o
YXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFj
ZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZUludGVyZmFjZSJf
cywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIG5hdGl2
ZVZhbHVlKSB9KTsKICAgICBBdHRyaWJ1dGVTZXR0ZXI6OmNhbGwobGV4aWNhbEdsb2JhbE9iamVj
dCwgdGhyb3dTY29wZSwgWyZdIHsKICAgICAgICAgcmV0dXJuIGltcGwuc2V0VGVzdEF0dHJpYnV0
ZUludGVyZmFjZShXVEZNb3ZlKG5hdGl2ZVZhbHVlKSk7CiAgICAgfSk7CkBAIC0yNjIsOCArMjY0
LDggQEAgc3RhdGljIGlubGluZSBKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0
ZVNwZWNpZmllZEdldHRlcihKU0dsb2JhbE9iamUKICAgICBhdXRvJiB2bSA9IEpTQzo6Z2V0Vk0o
JmxleGljYWxHbG9iYWxPYmplY3QpOwogICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOwogICAgIGF1dG8mIGltcGwgPSB0aGlzT2JqZWN0LndyYXBwZWQoKTsKLSAg
ICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRy
YWNlcjo6dGVzdENhbGxUcmFjZXJBdHRyaWJ1dGUoaW1wbCwgInRlc3RBdHRyaWJ1dGVTcGVjaWZp
ZWQiX3MpOworICAgIGlmIChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RBdHRyaWJ1dGVDYWxs
VHJhY2VyKCkpKQorICAgICAgICBUZXN0QXR0cmlidXRlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9u
KGltcGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIl9zKTsKICAgICBSRUxFQVNFX0FORF9SRVRV
Uk4odGhyb3dTY29wZSwgKHRvSlM8SURMQm9vbGVhbj4obGV4aWNhbEdsb2JhbE9iamVjdCwgdGhy
b3dTY29wZSwgaW1wbC50ZXN0QXR0cmlidXRlU3BlY2lmaWVkKCkpKSk7CiB9CiAKQEAgLTI3OSw4
ICsyODEsOCBAQCBzdGF0aWMgaW5saW5lIGJvb2wgc2V0SlNUZXN0Q2FsbFRyYWNlcl90ZXN0QXR0
cmlidXRlU3BlY2lmaWVkU2V0dGVyKEpTR2xvYmFsT2JqZQogICAgIGF1dG8mIGltcGwgPSB0aGlz
T2JqZWN0LndyYXBwZWQoKTsKICAgICBhdXRvIG5hdGl2ZVZhbHVlID0gY29udmVydDxJRExCb29s
ZWFuPihsZXhpY2FsR2xvYmFsT2JqZWN0LCB2YWx1ZSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
Tih0aHJvd1Njb3BlLCBmYWxzZSk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdB
Y3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VyQXR0cmlidXRlKGlt
cGwsICJ0ZXN0QXR0cmlidXRlU3BlY2lmaWVkIl9zLCB7IG5hdGl2ZVZhbHVlIH0pOworICAgIGlm
IChVTkxJS0VMWShpbXBsLmhhc0FjdGl2ZVRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyKCkpKQorICAg
ICAgICBUZXN0QXR0cmlidXRlQ2FsbFRyYWNlcjo6cmVjb3JkQWN0aW9uKGltcGwsICJ0ZXN0QXR0
cmlidXRlU3BlY2lmaWVkIl9zLCB7IFRlc3RBdHRyaWJ1dGVDYWxsVHJhY2VyOjpwcm9jZXNzQXJn
dW1lbnQoaW1wbCwgbmF0aXZlVmFsdWUpIH0pOwogICAgIEF0dHJpYnV0ZVNldHRlcjo6Y2FsbChs
ZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICByZXR1cm4gaW1w
bC5zZXRUZXN0QXR0cmlidXRlU3BlY2lmaWVkKFdURk1vdmUobmF0aXZlVmFsdWUpKTsKICAgICB9
KTsKQEAgLTI5Nyw4ICsyOTksOCBAQCBzdGF0aWMgaW5saW5lIEpTVmFsdWUganNUZXN0Q2FsbFRy
YWNlcl90ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnRHZXR0ZXIoSlNHbG9iYWxPYgogICAgIGF1dG8m
IHZtID0gSlNDOjpnZXRWTSgmbGV4aWNhbEdsb2JhbE9iamVjdCk7CiAgICAgYXV0byB0aHJvd1Nj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAgICAgYXV0byYgaW1wbCA9IHRoaXNPYmpl
Y3Qud3JhcHBlZCgpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkp
KQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVz
dEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9zKTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3Rp
dmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxU
cmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9zKTsK
ICAgICBSRUxFQVNFX0FORF9SRVRVUk4odGhyb3dTY29wZSwgKHRvSlM8SURMVW5pb248SURMQm9v
bGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsICp0aGlz
T2JqZWN0Lmdsb2JhbE9iamVjdCgpLCB0aHJvd1Njb3BlLCBpbXBsLnRlc3RBdHRyaWJ1dGVXaXRo
VmFyaWFudCgpKSkpOwogfQogCkBAIC0zMTQsOCArMzE2LDggQEAgc3RhdGljIGlubGluZSBib29s
IHNldEpTVGVzdENhbGxUcmFjZXJfdGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50U2V0dGVyKEpTR2xv
YmFsT2IKICAgICBhdXRvJiBpbXBsID0gdGhpc09iamVjdC53cmFwcGVkKCk7CiAgICAgYXV0byBu
YXRpdmVWYWx1ZSA9IGNvbnZlcnQ8SURMVW5pb248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERP
TVN0cmluZz4+KGxleGljYWxHbG9iYWxPYmplY3QsIHZhbHVlKTsKICAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHRocm93U2NvcGUsIGZhbHNlKTsKLSAgICBpZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJh
Y2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNlcjo6dGVzdENhbGxUcmFjZXJJbnRlcmZh
Y2UoaW1wbCwgInRlc3RBdHRyaWJ1dGVXaXRoVmFyaWFudCJfcywgeyBuYXRpdmVWYWx1ZSB9KTsK
KyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigp
KSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAi
dGVzdEF0dHJpYnV0ZVdpdGhWYXJpYW50Il9zLCB7IFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpw
cm9jZXNzQXJndW1lbnQoaW1wbCwgbmF0aXZlVmFsdWUpIH0pOwogICAgIEF0dHJpYnV0ZVNldHRl
cjo6Y2FsbChsZXhpY2FsR2xvYmFsT2JqZWN0LCB0aHJvd1Njb3BlLCBbJl0gewogICAgICAgICBy
ZXR1cm4gaW1wbC5zZXRUZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQoV1RGTW92ZShuYXRpdmVWYWx1
ZSkpOwogICAgIH0pOwpAQCAtMzQ3LDggKzM0OSw4IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNv
ZGVkSlNWYWx1ZSBqc1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlv
CiAgICAgVU5VU0VEX1BBUkFNKHRocm93U2NvcGUpOwogICAgIFVOVVNFRF9QQVJBTShjYWxsRnJh
bWUpOwogICAgIGF1dG8mIGltcGwgPSBjYXN0ZWRUaGlzLT53cmFwcGVkKCk7Ci0gICAgaWYgKFVO
TElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRl
c3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0T3BlcmF0aW9uSW50ZXJmYWNlIl9zKTsK
KyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigp
KSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAi
dGVzdE9wZXJhdGlvbkludGVyZmFjZSJfcyk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAg
ICAgaW1wbC50ZXN0T3BlcmF0aW9uSW50ZXJmYWNlKCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTM2Niw4ICszNjgsOCBAQCBzdGF0aWMgaW5saW5lIEpT
Qzo6RW5jb2RlZEpTVmFsdWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RP
cGVyYXRpbwogICAgIFVOVVNFRF9QQVJBTSh0aHJvd1Njb3BlKTsKICAgICBVTlVTRURfUEFSQU0o
Y2FsbEZyYW1lKTsKICAgICBhdXRvJiBpbXBsID0gY2FzdGVkVGhpcy0+d3JhcHBlZCgpOwotICAg
IGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJh
Y2VyOjp0ZXN0Q2FsbFRyYWNlck9wZXJhdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvblNwZWNpZmll
ZCJfcyk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdE9wZXJhdGlvbkNhbGxU
cmFjZXIoKSkpCisgICAgICAgIFRlc3RPcGVyYXRpb25DYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24o
aW1wbCwgInRlc3RPcGVyYXRpb25TcGVjaWZpZWQiX3MpOwogICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwogICAgIGltcGwudGVzdE9wZXJhdGlvblNwZWNpZmllZCgpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC0zOTYsOCArMzk4LDggQEAgc3RhdGljIGlu
bGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlv
bl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQyID0gY2Fs
bEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgyKTsKICAgICBhdXRvIGMgPSBjb252ZXJ0PElETERP
TVN0cmluZz4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50Mi52YWx1ZSgpKTsKICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlm
IChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2Vy
Ojp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVu
dHMiX3MsIHsgYSwgYiwgYyB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6
OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhBcmd1bWVudHMiX3MsIHsgVGVz
dEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCBhKSwgVGVzdEludGVy
ZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCBiKSwgVGVzdEludGVyZmFjZUNh
bGxUcmFjZXI6OnByb2Nlc3NBcmd1bWVudChpbXBsLCBjKSB9KTsKICAgICB0aHJvd1Njb3BlLnJl
bGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoQXJndW1lbnRzKFdURk1vdmUoYSks
IFdURk1vdmUoYiksIFdURk1vdmUoYykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CkBAIC00MjAsOCArNDIyLDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29k
ZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8K
ICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudCgwKTsKICAgICBhdXRvIG5vZGVOdWxsYWJsZUFyZyA9IGNvbnZlcnQ8SURMTnVs
bGFibGU8SURMSW50ZXJmYWNlPE5vZGU+Pj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50
MC52YWx1ZSgpLCBbXShKU0M6OkpTR2xvYmFsT2JqZWN0JiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBK
U0M6OlRocm93U2NvcGUmIHNjb3BlKSB7IHRocm93QXJndW1lbnRUeXBlRXJyb3IobGV4aWNhbEds
b2JhbE9iamVjdCwgc2NvcGUsIDAsICJub2RlTnVsbGFibGVBcmciLCAiVGVzdENhbGxUcmFjZXIi
LCAidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50IiwgIk5vZGUiKTsgfSk7CiAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTih0aHJvd1Njb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKLSAgICBp
ZiAoVU5MSUtFTFkoaW1wbC5jYWxsVHJhY2luZ0FjdGl2ZSgpKSkKLSAgICAgICAgQ2FsbFRyYWNl
cjo6dGVzdENhbGxUcmFjZXJJbnRlcmZhY2UoaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVsbGFi
bGVBcmd1bWVudCJfcywgeyBub2RlTnVsbGFibGVBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGlt
cGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRl
cmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoTnVs
bGFibGVBcmd1bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3Vt
ZW50KGltcGwsIG5vZGVOdWxsYWJsZUFyZykgfSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7
CiAgICAgaW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlQXJndW1lbnQoV1RGTW92ZShub2Rl
TnVsbGFibGVBcmcpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkp
OwpAQCAtNDQ0LDggKzQ0Niw4IEBAIHN0YXRpYyBpbmxpbmUgSlNDOjpFbmNvZGVkSlNWYWx1ZSBq
c1Rlc3RDYWxsVHJhY2VyUHJvdG90eXBlRnVuY3Rpb25fdGVzdE9wZXJhdGlvCiAgICAgRW5zdXJl
U3RpbGxBbGl2ZVNjb3BlIGFyZ3VtZW50MCA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQo
MCk7CiAgICAgYXV0byB2YXJpYW50QXJnID0gY29udmVydDxJRExVbmlvbjxJRExCb29sZWFuLCBJ
RExGbG9hdCwgSURMRE9NU3RyaW5nPj4oKmxleGljYWxHbG9iYWxPYmplY3QsIGFyZ3VtZW50MC52
YWx1ZSgpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBsLmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAg
ICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNlckludGVyZmFjZShpbXBsLCAidGVzdE9wZXJh
dGlvbldpdGhWYXJpYW50QXJndW1lbnQiX3MsIHsgdmFyaWFudEFyZyB9KTsKKyAgICBpZiAoVU5M
SUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAg
VGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlv
bldpdGhWYXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nl
c3NBcmd1bWVudChpbXBsLCB2YXJpYW50QXJnKSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2Uo
KTsKICAgICBpbXBsLnRlc3RPcGVyYXRpb25XaXRoVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFy
aWFudEFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBA
IC00NjgsOCArNDcwLDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVuY29kZWRKU1ZhbHVlIGpzVGVz
dENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0aW8KICAgICBFbnN1cmVTdGls
bEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudCgwKTsK
ICAgICBhdXRvIHZhcmlhbnROdWxsYWJsZUFyZyA9IGNvbnZlcnQ8SURMTnVsbGFibGU8SURMVW5p
b248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+PigqbGV4aWNhbEdsb2JhbE9i
amVjdCwgYXJndW1lbnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dT
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNp
bmdBY3RpdmUoKSkpCi0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNl
KGltcGwsICJ0ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50Il9zLCB7IHZh
cmlhbnROdWxsYWJsZUFyZyB9KTsKKyAgICBpZiAoVU5MSUtFTFkoaW1wbC5oYXNBY3RpdmVUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcigpKSkKKyAgICAgICAgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6
OnJlY29yZEFjdGlvbihpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZVZhcmlhbnRBcmd1
bWVudCJfcywgeyBUZXN0SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGws
IHZhcmlhbnROdWxsYWJsZUFyZykgfSk7CiAgICAgdGhyb3dTY29wZS5yZWxlYXNlKCk7CiAgICAg
aW1wbC50ZXN0T3BlcmF0aW9uV2l0aE51bGxhYmxlVmFyaWFudEFyZ3VtZW50KFdURk1vdmUodmFy
aWFudE51bGxhYmxlQXJnKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKQEAgLTQ5MCw4ICs0OTIsOCBAQCBzdGF0aWMgaW5saW5lIEpTQzo6RW5jb2RlZEpTVmFs
dWUganNUZXN0Q2FsbFRyYWNlclByb3RvdHlwZUZ1bmN0aW9uX3Rlc3RPcGVyYXRpbwogICAgIEVu
c3VyZVN0aWxsQWxpdmVTY29wZSBhcmd1bWVudDAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOwog
ICAgIGF1dG8gdmFyaWFudE9wdGlvbmFsQXJnID0gYXJndW1lbnQwLnZhbHVlKCkuaXNVbmRlZmlu
ZWQoKSA/IE9wdGlvbmFsPENvbnZlcnRlcjxJRExVbmlvbjxJRExCb29sZWFuLCBJRExGbG9hdCwg
SURMRE9NU3RyaW5nPj46OlJldHVyblR5cGU+KCkgOiBPcHRpb25hbDxDb252ZXJ0ZXI8SURMVW5p
b248SURMQm9vbGVhbiwgSURMRmxvYXQsIElETERPTVN0cmluZz4+OjpSZXR1cm5UeXBlPihjb252
ZXJ0PElETFVuaW9uPElETEJvb2xlYW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+PigqbGV4aWNh
bEdsb2JhbE9iamVjdCwgYXJndW1lbnQwLnZhbHVlKCkpKTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHRocm93U2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIGlmIChVTkxJS0VMWShpbXBs
LmNhbGxUcmFjaW5nQWN0aXZlKCkpKQotICAgICAgICBDYWxsVHJhY2VyOjp0ZXN0Q2FsbFRyYWNl
ckludGVyZmFjZShpbXBsLCAidGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVu
dCJfcywgeyB2YXJpYW50T3B0aW9uYWxBcmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFz
QWN0aXZlVGVzdEludGVyZmFjZUNhbGxUcmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VD
YWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24oaW1wbCwgInRlc3RPcGVyYXRpb25XaXRoT3B0aW9uYWxW
YXJpYW50QXJndW1lbnQiX3MsIHsgVGVzdEludGVyZmFjZUNhbGxUcmFjZXI6OnByb2Nlc3NBcmd1
bWVudChpbXBsLCB2YXJpYW50T3B0aW9uYWxBcmcpIH0pOwogICAgIHRocm93U2NvcGUucmVsZWFz
ZSgpOwogICAgIGltcGwudGVzdE9wZXJhdGlvbldpdGhPcHRpb25hbFZhcmlhbnRBcmd1bWVudChX
VEZNb3ZlKHZhcmlhbnRPcHRpb25hbEFyZykpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CkBAIC01MTIsOCArNTE0LDggQEAgc3RhdGljIGlubGluZSBKU0M6OkVu
Y29kZWRKU1ZhbHVlIGpzVGVzdENhbGxUcmFjZXJQcm90b3R5cGVGdW5jdGlvbl90ZXN0T3BlcmF0
aW8KICAgICBFbnN1cmVTdGlsbEFsaXZlU2NvcGUgYXJndW1lbnQwID0gY2FsbEZyYW1lLT5hcmd1
bWVudCgwKTsKICAgICBhdXRvIHZhcmlhbnREZWZhdWx0QXJnID0gYXJndW1lbnQwLnZhbHVlKCku
aXNVbmRlZmluZWQoKSA/IGVtcHR5U3RyaW5nKCkgOiBjb252ZXJ0PElETFVuaW9uPElETEJvb2xl
YW4sIElETEZsb2F0LCBJRExET01TdHJpbmc+PigqbGV4aWNhbEdsb2JhbE9iamVjdCwgYXJndW1l
bnQwLnZhbHVlKCkpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04odGhyb3dTY29wZSwgZW5jb2Rl
ZEpTVmFsdWUoKSk7Ci0gICAgaWYgKFVOTElLRUxZKGltcGwuY2FsbFRyYWNpbmdBY3RpdmUoKSkp
Ci0gICAgICAgIENhbGxUcmFjZXI6OnRlc3RDYWxsVHJhY2VySW50ZXJmYWNlKGltcGwsICJ0ZXN0
T3BlcmF0aW9uV2l0aERlZmF1bHRWYXJpYW50QXJndW1lbnQiX3MsIHsgdmFyaWFudERlZmF1bHRB
cmcgfSk7CisgICAgaWYgKFVOTElLRUxZKGltcGwuaGFzQWN0aXZlVGVzdEludGVyZmFjZUNhbGxU
cmFjZXIoKSkpCisgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsVHJhY2VyOjpyZWNvcmRBY3Rpb24o
aW1wbCwgInRlc3RPcGVyYXRpb25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudCJfcywgeyBUZXN0
SW50ZXJmYWNlQ2FsbFRyYWNlcjo6cHJvY2Vzc0FyZ3VtZW50KGltcGwsIHZhcmlhbnREZWZhdWx0
QXJnKSB9KTsKICAgICB0aHJvd1Njb3BlLnJlbGVhc2UoKTsKICAgICBpbXBsLnRlc3RPcGVyYXRp
b25XaXRoRGVmYXVsdFZhcmlhbnRBcmd1bWVudChXVEZNb3ZlKHZhcmlhbnREZWZhdWx0QXJnKSk7
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbFRyYWNlci5pZGwg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdENhbGxUcmFjZXIuaWRs
CmluZGV4IGM0MzQ4YzczZDg5ZGYxZDcwMjYyZWI5NDYwNDdmYzUyNDJhZTNjYTQuLjMyOTk4ZDY5
N2E3YTk4ZDY0NzI3YTI4N2Q0OTVmYTM0N2Y4MzA0YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9UZXN0Q2FsbFRyYWNlci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RDYWxsVHJhY2VyLmlkbApAQCAtMjYs
MTEgKzI2LDExIEBACiB0eXBlZGVmIChib29sZWFuIG9yIGZsb2F0IG9yIERPTVN0cmluZykgVmFy
aWFudFR5cGU7CiAKIFsKLSAgICBDYWxsVHJhY2luZ0NhbGxiYWNrPXRlc3RDYWxsVHJhY2VySW50
ZXJmYWNlLAorICAgIENhbGxUcmFjZXI9VGVzdEludGVyZmFjZUNhbGxUcmFjZXIsCiAgICAgRXhw
b3NlZD1UZXN0R2xvYmFsT2JqZWN0CiBdIGludGVyZmFjZSBUZXN0Q2FsbFRyYWNlciB7CiAgICAg
YXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJpYnV0ZUludGVyZmFjZTsKLSAgICBbQ2FsbFRyYWNp
bmdDYWxsYmFjaz10ZXN0Q2FsbFRyYWNlckF0dHJpYnV0ZV0gYXR0cmlidXRlIGJvb2xlYW4gdGVz
dEF0dHJpYnV0ZVNwZWNpZmllZDsKKyAgICBbQ2FsbFRyYWNlcj1UZXN0QXR0cmlidXRlQ2FsbFRy
YWNlcl0gYXR0cmlidXRlIGJvb2xlYW4gdGVzdEF0dHJpYnV0ZVNwZWNpZmllZDsKIAogICAgIGF0
dHJpYnV0ZSBWYXJpYW50VHlwZSB0ZXN0QXR0cmlidXRlV2l0aFZhcmlhbnQ7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGJvb2xlYW4gdGVzdFJlYWRvbmx5QXR0cmlidXRlOwpAQCAtMzgsNyArMzgs
NyBAQCB0eXBlZGVmIChib29sZWFuIG9yIGZsb2F0IG9yIERPTVN0cmluZykgVmFyaWFudFR5cGU7
CiAgICAgY29uc3QgYm9vbGVhbiB0ZXN0Q29uc3RWYWx1ZSA9IGZhbHNlOwogCiAgICAgdW5kZWZp
bmVkIHRlc3RPcGVyYXRpb25JbnRlcmZhY2UoKTsKLSAgICBbQ2FsbFRyYWNpbmdDYWxsYmFjaz10
ZXN0Q2FsbFRyYWNlck9wZXJhdGlvbl0gdW5kZWZpbmVkIHRlc3RPcGVyYXRpb25TcGVjaWZpZWQo
KTsKKyAgICBbQ2FsbFRyYWNlcj1UZXN0T3BlcmF0aW9uQ2FsbFRyYWNlcl0gdW5kZWZpbmVkIHRl
c3RPcGVyYXRpb25TcGVjaWZpZWQoKTsKIAogICAgIHVuZGVmaW5lZCB0ZXN0T3BlcmF0aW9uV2l0
aEFyZ3VtZW50cyhib29sZWFuIGEsIGZsb2F0IGIsIERPTVN0cmluZyBjKTsKICAgICB1bmRlZmlu
ZWQgdGVzdE9wZXJhdGlvbldpdGhOdWxsYWJsZUFyZ3VtZW50KE5vZGU/IG5vZGVOdWxsYWJsZUFy
Zyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9DYW52YXNCYXNlLmNwcAppbmRleCBlNGJiODhlMjhmOWI0NzNiZjBh
NWY3YWYxZmI4ZTVjNTEyMDA1MTVkLi5lZDA1NjI0NmQyNTJjZjRmOGI0OGIzNzhmYmVmMDE4MTE4
Y2NmNjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5jcHAKQEAgLTMwLDYgKzMwLDggQEAK
ICNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgorI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgor
I2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0pTTG9jay5oPgpAQCAtMTc2LDEwICsxNzgsMTAgQEAgSGFzaFNldDxF
bGVtZW50Kj4gQ2FudmFzQmFzZTo6Y3NzQ2FudmFzQ2xpZW50cygpIGNvbnN0CiAgICAgcmV0dXJu
IGNzc0NhbnZhc0NsaWVudHM7CiB9CiAKLWJvb2wgQ2FudmFzQmFzZTo6Y2FsbFRyYWNpbmdBY3Rp
dmUoKSBjb25zdAorYm9vbCBDYW52YXNCYXNlOjpoYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyKCkgY29uc3QKIHsKICAgICBhdXRvKiBjb250ZXh0ID0gcmVuZGVyaW5nQ29udGV4dCgp
OwotICAgIHJldHVybiBjb250ZXh0ICYmIGNvbnRleHQtPmNhbGxUcmFjaW5nQWN0aXZlKCk7Cisg
ICAgcmV0dXJuIGNvbnRleHQgJiYgY29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcigpOwogfQogCiBSZWZQdHI8SW1hZ2VCdWZmZXI+IENhbnZhc0Jhc2U6OnNldEltYWdl
QnVmZmVyKFJlZlB0cjxJbWFnZUJ1ZmZlcj4mJiBidWZmZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL0NhbnZhc0Jhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ2Fu
dmFzQmFzZS5oCmluZGV4IDUyZTAxNTYzYTAyMjZlMmRiYzJlNjI5YTYzODY0YzcwOGU1Y2FmYzEu
LjgzZmM0NjU2MmFjMmZkZTI4ZGJkN2ZjNzllOTRkNzMzM2E1Y2U5YzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvQ2FudmFzQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
Q2FudmFzQmFzZS5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgSW1h
Z2UqIGNvcGllZEltYWdlKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvcGll
ZEltYWdlKCkgY29uc3QgPSAwOwogCi0gICAgYm9vbCBjYWxsVHJhY2luZ0FjdGl2ZSgpIGNvbnN0
OworICAgIGJvb2wgaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpIGNvbnN0Owog
CiBwcm90ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQ2FudmFzQmFzZShJbnRTaXplKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKaW5kZXggMmE0ODVkNjFlOGU3YmQ1YjFi
ZDEwYjQ5ZTc2MmUxODk0NzZjMjJiNC4uYmUwOWIzYjg0Y2Y4N2I3YWY3NDliNGQ4YjZiM2E3Y2Y4
YmE5OGYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQ2FudmFzRWxlbWVudC5jcHAKQEAg
LTQ5LDYgKzQ5LDcgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNp
bmNsdWRlICJKU0RPTUNvbnZlcnREaWN0aW9uYXJ5LmgiCiAjaW5jbHVkZSAiTUlNRVR5cGVSZWdp
c3RyeS5oIgorI2luY2x1ZGUgIk9mZnNjcmVlbkNhbnZhcy5oIgogI2luY2x1ZGUgIlBsYWNlaG9s
ZGVyUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlckVsZW1lbnQuaCIKICNpbmNs
dWRlICJSZW5kZXJIVE1MQ2FudmFzLmgiCkBAIC02NjUsNyArNjY2LDcgQEAgdm9pZCBIVE1MQ2Fu
dmFzRWxlbWVudDo6cGFpbnQoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBMYXlvdXRS
ZWN0JiByKQogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKFVOTElLRUxZKG1fY29udGV4dCAm
JiBtX2NvbnRleHQtPmNhbGxUcmFjaW5nQWN0aXZlKCkpKQorICAgIGlmIChVTkxJS0VMWShtX2Nv
bnRleHQgJiYgbV9jb250ZXh0LT5oYXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkp
KQogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpbmlzaFJlY29yZGluZ0Nh
bnZhc0ZyYW1lKCptX2NvbnRleHQpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxDYW52YXNFbGVtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZh
c0VsZW1lbnQuaWRsCmluZGV4IDljYWU0MzNhNzc4NjdhM2Y3NjBmOWVlMmZmNTE0ZjQzNzYyYzY4
YzIuLjNiZDI1MGJmODhjMjFmNTA5NmE2YmI4NjY3NGE5Mzk0N2M1MDY5MTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTENhbnZhc0VsZW1lbnQuaWRsCkBAIC00NSw4ICs0NSw4IEBAIHR5cGVk
ZWYgKAogICAgIFJlcG9ydEV4dGVybmFsTWVtb3J5Q29zdCwKICAgICBFeHBvc2VkPVdpbmRvdwog
XSBpbnRlcmZhY2UgSFRNTENhbnZhc0VsZW1lbnQgOiBIVE1MRWxlbWVudCB7Ci0gICAgW0NFUmVh
Y3Rpb25zPU5vdE5lZWRlZCwgQ2FsbFRyYWNpbmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb25d
IGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIHdpZHRoOwotICAgIFtDRVJlYWN0aW9ucz1Ob3ROZWVk
ZWQsIENhbGxUcmFjaW5nQ2FsbGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uXSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBoZWlnaHQ7CisgICAgW0NFUmVhY3Rpb25zPU5vdE5lZWRlZCwgQ2FsbFRyYWNl
cj1JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyXSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyB3aWR0
aDsKKyAgICBbQ0VSZWFjdGlvbnM9Tm90TmVlZGVkLCBDYWxsVHJhY2VyPUluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXJdIGF0dHJpYnV0ZSB1bnNpZ25lZCBsb25nIGhlaWdodDsKIAogICAgIFtDYWxs
V2l0aD1HbG9iYWxPYmplY3QsIE1heVRocm93RXhjZXB0aW9uXSBSZW5kZXJpbmdDb250ZXh0PyBn
ZXRDb250ZXh0KERPTVN0cmluZyBjb250ZXh0SWQsIGFueS4uLiBhcmd1bWVudHMpOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0LmgK
aW5kZXggZjM4ODYzZjc4ZmVlM2ZmODk5MjljNzRjNDdjYTJlNTM0MTk5MDA1NS4uMDA1NmFlYjlj
ZTc3NGJiNTI3ODdmZDc2ODhlNGVhZTgwOWFjNTY0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRleHQuaApAQCAtNzcsOCArNzcsOCBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHBhaW50UmVuZGVyaW5nUmVzdWx0c1RvQ2FudmFz
KCkge30KICAgICB2aXJ0dWFsIFBsYXRmb3JtTGF5ZXIqIHBsYXRmb3JtTGF5ZXIoKSBjb25zdCB7
IHJldHVybiAwOyB9CiAKLSAgICBib29sIGNhbGxUcmFjaW5nQWN0aXZlKCkgY29uc3QgeyByZXR1
cm4gbV9jYWxsVHJhY2luZ0FjdGl2ZTsgfQotICAgIHZvaWQgc2V0Q2FsbFRyYWNpbmdBY3RpdmUo
Ym9vbCBjYWxsVHJhY2luZ0FjdGl2ZSkgeyBtX2NhbGxUcmFjaW5nQWN0aXZlID0gY2FsbFRyYWNp
bmdBY3RpdmU7IH0KKyAgICBib29sIGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIo
KSBjb25zdCB7IHJldHVybiBtX2hhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0K
KyAgICB2b2lkIHNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoYm9vbCBoYXNB
Y3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKSB7IG1faGFzQWN0aXZlSW5zcGVjdG9yQ2Fu
dmFzQ2FsbFRyYWNlciA9IGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI7IH0KIAog
ICAgIHZpcnR1YWwgYm9vbCBjb21wb3NpdGluZ1Jlc3VsdHNOZWVkVXBkYXRpbmcoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBuZWVkc1ByZXBhcmF0aW9uRm9yRGlz
cGxheSgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CkBAIC0xMDEsNyArMTAxLDcgQEAgcHJvdGVj
dGVkOgogICAgIHZvaWQgY2hlY2tPcmlnaW4oY29uc3QgVVJMJik7CiAgICAgdm9pZCBjaGVja09y
aWdpbihjb25zdCBUeXBlZE9NQ1NTSW1hZ2VWYWx1ZSYpOwogCi0gICAgYm9vbCBtX2NhbGxUcmFj
aW5nQWN0aXZlIHsgZmFsc2UgfTsKKyAgICBib29sIG1faGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlciB7IGZhbHNlIH07CiAKIHByaXZhdGU6CiAgICAgQ2FudmFzQmFzZSYgbV9jYW52
YXM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJp
bmdDb250ZXh0MkQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvQ2FudmFzUmVuZGVy
aW5nQ29udGV4dDJELmlkbAppbmRleCBjNWE5NWIzZDNiYTk5NWMwY2FiYjBmNDkzNjg1YzU0OTVl
MjQwMzNmLi5mZWUyNDRjZmZlNmIyMzEyNGFlYThiZDc5YzA4ODFkNTEwOThjN2Y1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQu
aWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0NhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyRC5pZGwKQEAgLTI3LDcgKzI3LDcgQEAKICAgICBDdXN0b21Jc1JlYWNoYWJsZSwKICAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0N1c3RvbU1hcmtGdW5jdGlvbiwKLSAgICBDYWxs
VHJhY2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0FjdGlvbiwKKyAgICBDYWxsVHJhY2VyPUluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIsCiAgICAgRXhwb3NlZD1XaW5kb3cKIF0gaW50ZXJmYWNlIENh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRCB7CiAgICAgLy8gYmFjay1yZWZlcmVuY2UgdG8gdGhlIGNh
bnZhcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBS
ZW5kZXJpbmdDb250ZXh0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL0ltYWdlQml0
bWFwUmVuZGVyaW5nQ29udGV4dC5pZGwKaW5kZXggY2MzNzU2ZDUxOGFhYTY1ZDJkY2Y1NDQzMzAx
M2JjYWQzYTlkODZlOC4uMGRlMmFmODViYzY1NGM5ZmZlYzMwMmU4YThjNWUyMmEwZGIxNWQ0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvSW1hZ2VCaXRtYXBSZW5kZXJp
bmdDb250ZXh0LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9JbWFnZUJpdG1h
cFJlbmRlcmluZ0NvbnRleHQuaWRsCkBAIC0yNiw3ICsyNiw3IEBACiBbCiAgICAgRW5hYmxlZEF0
UnVudGltZT1JbWFnZUJpdG1hcCwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKLSAgICBD
YWxsVHJhY2luZ0NhbGxiYWNrPXJlY29yZENhbnZhc0FjdGlvbiwKKyAgICBDYWxsVHJhY2VyPUlu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIsCiBdIGludGVyZmFjZSBJbWFnZUJpdG1hcFJlbmRlcmlu
Z0NvbnRleHQgewogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ2FudmFzRWxlbWVudCBjYW52
YXM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNjcmVlbkNh
bnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9P
ZmZzY3JlZW5DYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaWRsCmluZGV4IDg4YWEzOWZhMDIxYWQ5
MGEzNTllYzlkZGNhODAyNGMzMzhlNWE5OWMuLjBhODNmYjMxOGM0ZGU4MmQ5YjcwYjQ2ZjBjM2Nl
YmM0OGExODYzMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL09mZnNj
cmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9jYW52YXMvT2Zmc2NyZWVuQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmlkbApAQCAtMzAsNyAr
MzAsNyBAQAogICAgIEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAotICAgIC8vIENhbGxUcmFjaW5nQ2Fs
bGJhY2s9cmVjb3JkQ2FudmFzQWN0aW9uLCAvLyBGSVhNRTogT2Zmc2NyZWVuQ2FudmFzLgorICAg
IC8vIENhbGxUcmFjZXI9SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlciwgLy8gRklYTUU6IE9mZnNj
cmVlbkNhbnZhcy4KIF0gaW50ZXJmYWNlIE9mZnNjcmVlbkNhbnZhc1JlbmRlcmluZ0NvbnRleHQy
RCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIE9mZnNjcmVlbkNhbnZhcyBjYW52YXM7CiAgICAg
dW5kZWZpbmVkIGNvbW1pdCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52
YXMvV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZh
cy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmNwcAppbmRleCBhYTg5ZDMyYjk5ZmZlZGIwMzBhYTUz
MjRkNDEwNzI2ZTE2OTBhMWM0Li45ZGYzODk1YTI5NWNlMGQ5MmVmOWJhYTY1ZjU4YWIwMzhjODkz
NjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJp
bmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmNwcApAQCAtNDgsNiArNDgsNyBAQAogI2luY2x1ZGUgIlJlbmRlckJveC5o
IgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKICNpbmNsdWRlICJXZWJHTEFj
dGl2ZUluZm8uaCIKKyNpbmNsdWRlICJXZWJHTEJ1ZmZlci5oIgogI2luY2x1ZGUgIldlYkdMQ29t
cHJlc3NlZFRleHR1cmVBU1RDLmgiCiAjaW5jbHVkZSAiV2ViR0xDb21wcmVzc2VkVGV4dHVyZUFU
Qy5oIgogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVFVEMuaCIKQEAgLTU3LDE0ICs1
OCwxOSBAQAogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRleHR1cmVTM1RDc1JHQi5oIgogI2lu
Y2x1ZGUgIldlYkdMRGVidWdSZW5kZXJlckluZm8uaCIKICNpbmNsdWRlICJXZWJHTERlYnVnU2hh
ZGVycy5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTExv
c2VDb250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViR0xNdWx0aURyYXcuaCIKKyNpbmNsdWRlICJXZWJH
TFByb2dyYW0uaCIKICNpbmNsdWRlICJXZWJHTFF1ZXJ5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFNhbXBsZXIuaCIKICNpbmNsdWRlICJXZWJHTFN5
bmMuaCIKICNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKICNpbmNsdWRlICJXZWJHTFRyYW5zZm9y
bUZlZWRiYWNrLmgiCisjaW5jbHVkZSAiV2ViR0xVbmlmb3JtTG9jYXRpb24uaCIKICNpbmNsdWRl
ICJXZWJHTFZlcnRleEFycmF5T2JqZWN0LmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9i
amVjdE9FUy5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0dlbmVyaWNUeXBlZEFycmF5Vmll
d0lubGluZXMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9IZWFwSW5saW5lcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3SW5saW5lcy5oPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0wyUmVuZGVyaW5nQ29u
dGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250
ZXh0LmlkbAppbmRleCAyMDFjNDcxNWFlY2RiNjg3NzQ0MmQ1ZDJkOTVlNGI2NWRjZTNkMzcyLi4z
ZGU5MzVlMTdmYTEwOWZkMzdlZDU4YjNlYTczNWIxZGE5YzYzYzJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTDJSZW5kZXJpbmdDb250ZXh0LmlkbApAQCAt
NTksNyArNTksNyBAQCB0eXBlZGVmIChJbWFnZUJpdG1hcCBvciBJbWFnZURhdGEgb3IgSFRNTElt
YWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRWxlbWVudCkgVGV4SQogICAgIEpTR2VuZXJhdGVUb0pT
T2JqZWN0LAogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgRXhwb3NlZD0oV2luZG93LFdv
cmtlciksCi0gICAgQ2FsbFRyYWNpbmdDYWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb24sCisgICAg
Q2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLAogXSBpbnRlcmZhY2UgV2ViR0wy
UmVuZGVyaW5nQ29udGV4dCB7CiAKICAgICAvLyBUaGUgc3BlY2lmaWNhdGlvbiBzcGxpdHMgdGhl
IEFQSSBzdXJmYWNlIGludG8gYSBXZWJHTDJSZW5kZXJpbmdDb250ZXh0QmFzZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5k
ZXggZDRhMjNkYjgwOGYwODQ5ZTI2OTc2YjExMzg4NTUxNzdjOWUyYmE3MC4uYTI5NjAzNDFiNTE3
ODMwZGY2NmU1Njc5NDdhODE3ZTViZDczZTI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBAIC01NSw2ICs1NSw3IEBA
CiAjaW5jbHVkZSAiT0VTVmVydGV4QXJyYXlPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJCb3gu
aCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiV2ViR0xC
dWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTENvbG9yQnVmZmVyRmxvYXQuaCIKICNpbmNsdWRlICJX
ZWJHTENvbXByZXNzZWRUZXh0dXJlQVNUQy5oIgogI2luY2x1ZGUgIldlYkdMQ29tcHJlc3NlZFRl
eHR1cmVBVEMuaCIKQEAgLTY3LDggKzY4LDE1IEBACiAjaW5jbHVkZSAiV2ViR0xEZWJ1Z1NoYWRl
cnMuaCIKICNpbmNsdWRlICJXZWJHTERlcHRoVGV4dHVyZS5oIgogI2luY2x1ZGUgIldlYkdMRHJh
d0J1ZmZlcnMuaCIKKyNpbmNsdWRlICJXZWJHTEZyYW1lYnVmZmVyLmgiCiAjaW5jbHVkZSAiV2Vi
R0xMb3NlQ29udGV4dC5oIgogI2luY2x1ZGUgIldlYkdMTXVsdGlEcmF3LmgiCisjaW5jbHVkZSAi
V2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKKyNpbmNsdWRl
ICJXZWJHTFNhbXBsZXIuaCIKKyNpbmNsdWRlICJXZWJHTFRleHR1cmUuaCIKKyNpbmNsdWRlICJX
ZWJHTFRyYW5zZm9ybUZlZWRiYWNrLmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVj
dC5oIgogI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9HZW5lcmljVHlwZWRBcnJheVZpZXdJbmxpbmVzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSGVhcElubGluZXMuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaWRsCmluZGV4IGExNmRhMjFlOTdjN2Nh
MjdhOWRiMWRkZWJmZGY2MjU3YmNjMWM5MGMuLjcxODIyYzRhYjVhMWMwMDQ4MGYyMzA1YjllZDdh
NjIwN2JjZjc1ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmlkbApAQCAtNDIsNyArNDIsNyBAQCB0eXBlZGVmIChJbWFnZUJp
dG1hcCBvciBJbWFnZURhdGEgb3IgSFRNTEltYWdlRWxlbWVudCBvciBIVE1MQ2FudmFzRWxlbWVu
dCkgVGV4SQogICAgIERvTm90Q2hlY2tDb25zdGFudHMsCiAgICAgRXhwb3J0TWFjcm89V0VCQ09S
RV9FWFBPUlQsCiAgICAgRXhwb3NlZD0oV2luZG93LFdvcmtlciksCi0gICAgQ2FsbFRyYWNpbmdD
YWxsYmFjaz1yZWNvcmRDYW52YXNBY3Rpb24sCisgICAgQ2FsbFRyYWNlcj1JbnNwZWN0b3JDYW52
YXNDYWxsVHJhY2VyLAogXSBpbnRlcmZhY2UgV2ViR0xSZW5kZXJpbmdDb250ZXh0IHsKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dEJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdD
b250ZXh0QmFzZS5jcHAKaW5kZXggMDkxMWFiNmRlMWY2N2Q2NmYxNzU1NGRlMTZiZDUyODY0ZThj
MDNhOS4uN2EzODU5MDc5NzU3NWIyZDY4ZGY0ZWUzYWYzNDViNjExNGU3NWQ4OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZS5jcHAKQEAgLTEwMSwxMCArMTAxLDE0IEBACiAjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgi
CiAjaW5jbHVkZSAiV2ViR0xSZW5kZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmlu
Z0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJHTFNhbXBsZXIuaCIKICNpbmNsdWRlICJXZWJHTFNo
YWRlci5oIgogI2luY2x1ZGUgIldlYkdMU2hhZGVyUHJlY2lzaW9uRm9ybWF0LmgiCiAjaW5jbHVk
ZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5jbHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgog
I2luY2x1ZGUgIldlYkdMVW5pZm9ybUxvY2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhB
cnJheU9iamVjdC5oIgorI2luY2x1ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3RPRVMuaCIKICNp
bmNsdWRlICJXZWJYUlN5c3RlbS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVN
ZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgpAQCAtNzkw
Nyw3ICs3OTExLDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpkaWRDb21wb3Np
dGUoKQogewogICAgIG1fY29tcG9zaXRpbmdSZXN1bHRzTmVlZFVwZGF0aW5nID0gZmFsc2U7CiAK
LSAgICBpZiAoVU5MSUtFTFkoY2FsbFRyYWNpbmdBY3RpdmUoKSkpCisgICAgaWYgKFVOTElLRUxZ
KGhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSkpCiAgICAgICAgIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoKnRoaXMpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCmluZGV4
IGU1ZjIyMTBhZTk4NzMzZTk4NGFiNTg0ZjZmOWEzYzg0N2I1YTgwNDkuLjIzMWNkOGVlNWRmYjUx
MzA1NmM3OTM0ZWNlN2Y5ZDc4MmM5ZTAzNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JDYW52YXMuY3BwCkBAIC0yOCwxNCArMjgsMTcgQEAKIAogI2luY2x1ZGUgIkFm
ZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkNhY2hlZEltYWdlLmgiCisjaW5jbHVkZSAiQ2Fu
dmFzQmFzZS5oIgogI2luY2x1ZGUgIkNhbnZhc0dyYWRpZW50LmgiCiAjaW5jbHVkZSAiQ2FudmFz
UGF0dGVybi5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJDYW52YXNSZW5kZXJpbmdDb250ZXh0MkQuaCIKICNpbmNsdWRlICJDb2xvclNlcmlhbGl6YXRp
b24uaCIKKyNpbmNsdWRlICJET01NYXRyaXgyREluaXQuaCIKICNpbmNsdWRlICJEb2N1bWVudC5o
IgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJGbG9hdFBvaW50LmgiCisjaW5jbHVk
ZSAiR1BVQ2FudmFzQ29udGV4dC5oIgogI2luY2x1ZGUgIkdyYWRpZW50LmgiCiAjaW5jbHVkZSAi
SFRNTENhbnZhc0VsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCkBAIC00
NSw3ICs0OCw5IEBACiAjaW5jbHVkZSAiSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmgiCiAj
aW5jbHVkZSAiSW1hZ2VCdWZmZXIuaCIKICNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JDYW52YXNBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckRPTUFnZW50Lmgi
CisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiSlNDYW52
YXNEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJKU0NhbnZhc0ZpbGxSdWxlLmgiCiAjaW5jbHVkZSAi
SlNDYW52YXNMaW5lQ2FwLmgiCkBAIC01NiwzNCArNjEsNDMgQEAKICNpbmNsdWRlICJKU0V4ZWNT
dGF0ZS5oIgogI2luY2x1ZGUgIkpTSW1hZ2VCaXRtYXBSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5j
bHVkZSAiSlNJbWFnZVNtb290aGluZ1F1YWxpdHkuaCIKKyNpbmNsdWRlICJKU1dlYkdMMlJlbmRl
cmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgorI2lu
Y2x1ZGUgIkpTV2ViR1BVRGV2aWNlLmgiCisjaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCiAj
aW5jbHVkZSAiUGF0aDJELmgiCiAjaW5jbHVkZSAiUGF0dGVybi5oIgotI2luY2x1ZGUgIlJlY29y
ZGluZ1N3aXp6bGVUeXBlcy5oIgorI2luY2x1ZGUgIlJlY29yZGluZ1N3aXp6bGVUeXBlLmgiCiAj
aW5jbHVkZSAiU1ZHUGF0aFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlN0cmluZ0FkYXB0b3JzLmgi
CisjaW5jbHVkZSAiVHlwZWRPTUNTU0ltYWdlVmFsdWUuaCIKKyNpbmNsdWRlICJXZWJHTDJSZW5k
ZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xCdWZmZXIuaCIKKyNpbmNsdWRlICJXZWJH
TEZyYW1lYnVmZmVyLmgiCisjaW5jbHVkZSAiV2ViR0xQcm9ncmFtLmgiCisjaW5jbHVkZSAiV2Vi
R0xRdWVyeS5oIgorI2luY2x1ZGUgIldlYkdMUmVuZGVyYnVmZmVyLmgiCisjaW5jbHVkZSAiV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFz
ZS5oIgorI2luY2x1ZGUgIldlYkdMU2FtcGxlci5oIgorI2luY2x1ZGUgIldlYkdMU2hhZGVyLmgi
CisjaW5jbHVkZSAiV2ViR0xTeW5jLmgiCisjaW5jbHVkZSAiV2ViR0xUZXh0dXJlLmgiCisjaW5j
bHVkZSAiV2ViR0xUcmFuc2Zvcm1GZWVkYmFjay5oIgorI2luY2x1ZGUgIldlYkdMVW5pZm9ybUxv
Y2F0aW9uLmgiCisjaW5jbHVkZSAiV2ViR0xWZXJ0ZXhBcnJheU9iamVjdC5oIgorI2luY2x1ZGUg
IldlYkdQVURldmljZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXJWaWV3Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1R5cGVkQXJyYXlzLmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+Ci0KLSNpZiBFTkFCTEUo
Q1NTX1RZUEVEX09NKQotI2luY2x1ZGUgIlR5cGVkT01DU1NJbWFnZVZhbHVlLmgiCi0jZW5kaWYK
LQotI2lmIEVOQUJMRShXRUJHTCkKLSNpbmNsdWRlICJKU1dlYkdMUmVuZGVyaW5nQ29udGV4dC5o
IgotI2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dC5oIgotI2VuZGlmCi0KLSNpZiBFTkFC
TEUoV0VCR0wyKQotI2luY2x1ZGUgIkpTV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgotI2luY2x1
ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQkdQ
VSkKLSNpbmNsdWRlICJHUFVDYW52YXNDb250ZXh0LmgiCi0jaW5jbHVkZSAiSlNXZWJHUFVEZXZp
Y2UuaCIKLSNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKLSNlbmRpZgorI2luY2x1ZGUgPHd0Zi9P
cHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0yNzksNyArMjkzLDcgQEAgdm9pZCBJ
bnNwZWN0b3JDYW52YXM6OmNhbnZhc0NoYW5nZWQoKQogICAgIGF1dG8qIGNvbnRleHQgPSBjYW52
YXNDb250ZXh0KCk7CiAgICAgQVNTRVJUKGNvbnRleHQpOwogCi0gICAgaWYgKCFjb250ZXh0LT5j
YWxsVHJhY2luZ0FjdGl2ZSgpKQorICAgIGlmICghY29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcigpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTaW5jZSAyRCBj
b250ZXh0cyBhcmUgYWJsZSB0byBiZSBmdWxseSByZXByb2R1Y2VkIGluIHRoZSBmcm9udGVuZCwg
d2UgZG9uJ3QgbmVlZCBzbmFwc2hvdHMuCkBAIC0zMDcsNyArMzIxLDcgQEAgdm9pZCBJbnNwZWN0
b3JDYW52YXM6OnJlc2V0UmVjb3JkaW5nRGF0YSgpCiAgICAgQVNTRVJUKGNvbnRleHQpOwogICAg
IC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBD
YW52YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQogCi0gICAg
Y29udGV4dC0+c2V0Q2FsbFRyYWNpbmdBY3RpdmUoZmFsc2UpOworICAgIGNvbnRleHQtPnNldEhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoZmFsc2UpOwogfQogCiBib29sIEluc3Bl
Y3RvckNhbnZhczo6aGFzUmVjb3JkaW5nRGF0YSgpIGNvbnN0CkBAIC0zMjAsNiArMzM0LDQ0NSBA
QCBib29sIEluc3BlY3RvckNhbnZhczo6Y3VycmVudEZyYW1lSGFzRGF0YSgpIGNvbnN0CiAgICAg
cmV0dXJuICEhbV9mcmFtZXM7CiB9CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0YXRpYyBSZWY8
SlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JWZWN0b3IoY29uc3QgVmVj
dG9yPFQ+JiB2ZWN0b3IpCit7CisgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8SlNPTjo6
VmFsdWU+OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8mIGl0ZW0gOiB2ZWN0b3IpCisgICAgICAg
IGFycmF5LT5hZGRJdGVtKGl0ZW0pOworICAgIHJldHVybiBhcnJheTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0RpcmVjdGlvbiBhcmd1bWVudCkKK3sKKyAgICBy
ZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJn
dW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0ZpbGxSdWxlIGFyZ3VtZW50KQoreworICAgIHJl
dHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1
bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzSW1hZ2VTb3VyY2UmIGFyZ3VtZW50KQoreworICAg
IHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAg
ICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9y
Q2FudmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzTGluZUNhcCBhcmd1bWVudCkKK3sKKyAgICBy
ZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJn
dW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc0xpbmVKb2luIGFyZ3VtZW50KQoreworICAgIHJl
dHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1
bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJ
bnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2Fu
dmFzOjpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQmFzZTo6U3R5bGVW
YXJpYW50JiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhcmd1bWVudCwg
WyZdIChhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVl
KTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1Rl
eHRBbGlnbiBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoY29u
dmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6
OlN0cmluZyB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJv
Y2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KENhbnZhc1Rl
eHRCYXNlbGluZSBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEo
Y29udmVydEVudW1lcmF0aW9uVG9TdHJpbmcoYXJndW1lbnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGU6OlN0cmluZyB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KERPTU1h
dHJpeDJESW5pdCYgYXJndW1lbnQpCit7CisgICAgYXV0byBhcnJheSA9IEpTT046OkFycmF5T2Y8
ZG91YmxlPjo6Y3JlYXRlKCk7CisgICAgYXJyYXktPmFkZEl0ZW0oYXJndW1lbnQuYS52YWx1ZU9y
KDEpKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5iLnZhbHVlT3IoMCkpOworICAgIGFy
cmF5LT5hZGRJdGVtKGFyZ3VtZW50LmMudmFsdWVPcigwKSk7CisgICAgYXJyYXktPmFkZEl0ZW0o
YXJndW1lbnQuZC52YWx1ZU9yKDEpKTsKKyAgICBhcnJheS0+YWRkSXRlbShhcmd1bWVudC5lLnZh
bHVlT3IoMCkpOworICAgIGFycmF5LT5hZGRJdGVtKGFyZ3VtZW50LmYudmFsdWVPcigwKSk7Cisg
ICAgcmV0dXJuIHt7IFdURk1vdmUoYXJyYXkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6RE9NTWF0
cml4IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoRWxlbWVudCogYXJn
dW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKworICAgIC8vIEVsZW1lbnRzIGFyZSBub3Qgc2VyaWFsaXphYmxlLCBzbyBhZGQgYSBzdHJp
bmcgYXMgYSBwbGFjZWhvbGRlciBzaW5jZSB0aGUgYWN0dWFsCisgICAgLy8gZWxlbWVudCBjYW5u
b3QgYmUgcmVjb25zdHJ1Y3RlZCBpbiB0aGUgZnJvbnRlbmQuCisgICAgcmV0dXJuIHt7IHZhbHVl
SW5kZXhGb3JEYXRhKCJFbGVtZW50Il9zKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok5vbmUgfX07
Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChIVE1MSW1hZ2VFbGVtZW50KiBh
cmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShhcmd1bWVudCksIFJlY29yZGlu
Z1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3Vt
ZW50KEltYWdlQml0bWFwKiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShh
cmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZUJpdG1hcCB9fTsKK30KKworT3B0
aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3Bl
Y3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KEltYWdlRGF0YSogYXJndW1lbnQpCit7CisgICAg
aWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1h
Z2VEYXRhIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9j
ZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoSW1hZ2VTbW9v
dGhpbmdRdWFsaXR5IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0
YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyhhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6U3RyaW5nIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoT3B0
aW9uYWw8ZmxvYXQ+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0
YXRpY19jYXN0PGRvdWJsZT4oKmFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1i
ZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChQYXRoMkQqIGFyZ3Vt
ZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHt7IHZhbHVlSW5kZXhGb3JEYXRhKGJ1aWxkU3RyaW5nRnJvbVBhdGgoYXJn
dW1lbnQtPnBhdGgoKSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6UGF0aDJEIH19OworfQorCitP
cHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5z
cGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPENhbnZhc0dyYWRpZW50PiYgYXJn
dW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6Q2FudmFzR3JhZGllbnQgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChSZWZQdHI8Q2FudmFzUGF0dGVybj4mIGFyZ3VtZW50KQoreworICAgIGlmICgh
YXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IHZh
bHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OkNhbnZhc1Bh
dHRlcm4gfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SFRN
TENhbnZhc0VsZW1lbnQ+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAg
ICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyB2YWx1ZUluZGV4Rm9yRGF0YShh
cmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpJbWFnZSB9fTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYgYXJndW1lbnQp
Cit7CisgICAgcmV0dXJuIHByb2Nlc3NBcmd1bWVudChhcmd1bWVudC5nZXQoKSk7Cit9CisKK09w
dGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNw
ZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChSZWZQdHI8SW1hZ2VCaXRtYXA+JiBhcmd1bWVu
dCkKK3sKKyAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KGFyZ3VtZW50LmdldCgpKTsKK30KKwor
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxJbWFnZURhdGE+JiBhcmd1bWVu
dCkKK3sKKyAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KGFyZ3VtZW50LmdldCgpKTsKK30KKwor
T3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IElu
c3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYg
YXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dp
enpsZVR5cGU6OlR5cGVkQXJyYXkgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1
bWVudChSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAo
IWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9
fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxKU0M6OkZsb2F0
MzJBcnJheT4mIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVy
biBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFycmF5IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpw
cm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6SW50MzJBcnJheT4mIGFyZ3VtZW50KQoreworICAg
IGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJu
IHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpUeXBlZEFy
cmF5IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNz
ZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPEpTQzo6
VWludDMyQXJyYXk+JiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICBy
ZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDAp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6VHlwZWRBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KFN0cmluZyYgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIHt7IHZh
bHVlSW5kZXhGb3JEYXRhKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OlN0cmluZyB9
fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3RvcjxTdHJpbmc+JiBh
cmd1bWVudCkKK3sKKyAgICBhdXRvIGRlZHVwbGljYXRlZCA9IGFyZ3VtZW50Lm1hcChbJl0gKGNv
bnN0IFN0cmluZyYgaXRlbSkgeworICAgICAgICByZXR1cm4gaW5kZXhGb3JEYXRhKGl0ZW0pOwor
ICAgIH0pOworICAgIHJldHVybiB7eyBidWlsZEFycmF5Rm9yVmVjdG9yKFdURk1vdmUoZGVkdXBs
aWNhdGVkKSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpTdHJpbmcgfX07Cit9CisKK09wdGlvbmFs
PEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JD
YW52YXM6OnByb2Nlc3NBcmd1bWVudChWZWN0b3I8ZmxvYXQ+JiBhcmd1bWVudCkKK3sKKyAgICBy
ZXR1cm4ge3sgYnVpbGRBcnJheUZvclZlY3Rvcihhcmd1bWVudCksIFJlY29yZGluZ1N3aXp6bGVU
eXBlOjpBcnJheSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6
UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFZlY3Rv
cjx1aW50MzJfdD4mIGFyZ3VtZW50KQoreworICAgIGF1dG8gbWFwcGVkID0gYXJndW1lbnQubWFw
KFsmXSAodWludDMyX3QgaXRlbSkgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8ZG91Ymxl
PihpdGVtKTsKKyAgICB9KTsKKyAgICByZXR1cm4ge3sgYnVpbGRBcnJheUZvclZlY3RvcihtYXBw
ZWQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6QXJyYXkgfX07Cit9CisKK09wdGlvbmFsPEluc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6
OnByb2Nlc3NBcmd1bWVudChWZWN0b3I8aW50MzJfdD4mIGFyZ3VtZW50KQoreworICAgIGF1dG8g
bWFwcGVkID0gYXJndW1lbnQubWFwKFsmXSAoaW50MzJfdCBpdGVtKSB7CisgICAgICAgIHJldHVy
biBzdGF0aWNfY2FzdDxkb3VibGU+KGl0ZW0pOworICAgIH0pOworICAgIHJldHVybiB7eyBidWls
ZEFycmF5Rm9yVmVjdG9yKG1hcHBlZCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpBcnJheSB9fTsK
K30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KGRvdWJsZSBhcmd1bWVudCkKK3sK
KyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShhcmd1bWVudCksIFJlY29yZGluZ1N3
aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVu
dChmbG9hdCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShz
dGF0aWNfY2FzdDxkb3VibGU+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1i
ZXIgfX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudCh1aW50NjRfdCBhcmd1
bWVudCkKK3sKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNfY2FzdDxk
b3VibGU+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9CisK
K09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJ
bnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChpbnQ2NF90IGFyZ3VtZW50KQoreworICAg
IHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYXJndW1l
bnQpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5z
cGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZh
czo6cHJvY2Vzc0FyZ3VtZW50KHVpbnQzMl90IGFyZ3VtZW50KQoreworICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKHN0YXRpY19jYXN0PGRvdWJsZT4oYXJndW1lbnQpKSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGU6Ok51bWJlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFz
Q2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0Fy
Z3VtZW50KGludDMyX3QgYXJndW1lbnQpCit7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpj
cmVhdGUoc3RhdGljX2Nhc3Q8ZG91YmxlPihhcmd1bWVudCkpLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZTo6TnVtYmVyIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQodWludDhf
dCBhcmd1bWVudCkKK3sKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxpbnQ+KGFyZ3VtZW50KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpOdW1iZXIgfX07Cit9
CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50
PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChib29sIGFyZ3VtZW50KQoreworICAg
IHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKGFyZ3VtZW50KSwgUmVjb3JkaW5nU3dpenps
ZVR5cGU6OkJvb2xlYW4gfX07Cit9CisKKyNpZiBFTkFCTEUoQ1NTX1RZUEVEX09NKQorCitPcHRp
b25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVj
dG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVlPiYg
YXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVs
bG9wdDsKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRp
bmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoQ1NTX1RZUEVE
X09NKQorCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisKK09wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChSZWZQdHI8T2Zmc2NyZWVuQ2FudmFzPiYgYXJndW1lbnQpCit7CisgICAg
aWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4g
e3sgdmFsdWVJbmRleEZvckRhdGEoYXJndW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1h
Z2UgfX07Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKworI2lmIEVO
QUJMRShWSURFTykKKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFJlZlB0cjxIVE1M
VmlkZW9FbGVtZW50PiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgdmFsdWVJbmRleEZvckRhdGEoYXJn
dW1lbnQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6SW1hZ2UgfX07Cit9CisKKyNlbmRpZiAvLyBF
TkFCTEUoVklERU8pCisKKyNpZiBFTkFCTEUoV0VCR0wpCisKK09wdGlvbmFsPEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nl
c3NBcmd1bWVudChPcHRpb25hbDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpCdWZmZXJEYXRh
U291cmNlPiYgYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJu
IFdURjo6bnVsbG9wdDsKKworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKCphcmd1bWVudCwgWyZd
IChhdXRvJiB2YWx1ZSkgeworICAgICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVlKTsK
KyAgICB9KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vz
c2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KE9wdGlvbmFsPFdl
YkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OlRleEltYWdlU291cmNlPiYgYXJndW1lbnQpCit7Cisg
ICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKCphcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkgeworICAgICAg
ICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVlKTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMQnVmZmVyKiBhcmd1bWVudCkKK3sKKyAgICBpZiAo
IWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBK
U09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xCdWZmZXIg
fX07Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFy
Z3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTEZyYW1lYnVmZmVy
KiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdT
d2l6emxlVHlwZTo6V2ViR0xGcmFtZWJ1ZmZlciB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJv
Y2Vzc0FyZ3VtZW50KFdlYkdMUHJvZ3JhbSogYXJndW1lbnQpCit7CisgICAgaWYgKCFhcmd1bWVu
dCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNPTjo6VmFs
dWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMUHJvZ3JhbSB9fTsKK30K
KworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUXVlcnkqIGFyZ3VtZW50KQor
eworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpX
ZWJHTFF1ZXJ5IH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xS
ZW5kZXJidWZmZXIqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUoMCks
IFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFJlbmRlcmJ1ZmZlciB9fTsKK30KKworT3B0aW9u
YWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3Rv
ckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZl
ckRhdGFTb3VyY2UmIGFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3Vt
ZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQo
dmFsdWUpOworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2Vy
OjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6RmxvYXQzMkxpc3Q6OlZhcmlhbnRUeXBlJiBhcmd1bWVu
dCkKK3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1
ZSkgeworICAgICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVlKTsKKyAgICB9KTsKK30K
KworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+
IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OkludDMyTGlzdDo6VmFyaWFudFR5cGUmIGFyZ3VtZW50KQoreworICAgIHJldHVybiBXVEY6
OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8mIHZhbHVlKSB7CisgICAgICAgIHJldHVybiBw
cm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0pOworfQorCitPcHRpb25hbDxJbnNwZWN0b3JD
YW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9j
ZXNzQXJndW1lbnQoV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UmIGFy
Z3VtZW50KQoreworICAgIHJldHVybiBXVEY6OnN3aXRjaE9uKGFyZ3VtZW50LCBbJl0gKGF1dG8m
IHZhbHVlKSB7CisgICAgICAgIHJldHVybiBwcm9jZXNzQXJndW1lbnQodmFsdWUpOworICAgIH0p
OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1
bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1lbnQoV2ViR0xTYW1wbGVyKiBhcmd1
bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0
OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxl
VHlwZTo6V2ViR0xTYW1wbGVyIH19OworfQorCitPcHRpb25hbDxJbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudD4gSW5zcGVjdG9yQ2FudmFzOjpwcm9jZXNzQXJndW1l
bnQoV2ViR0xTaGFkZXIqIGFyZ3VtZW50KQoreworICAgIGlmICghYXJndW1lbnQpCisgICAgICAg
IHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgcmV0dXJuIHt7IEpTT046OlZhbHVlOjpjcmVhdGUo
MCksIFJlY29yZGluZ1N3aXp6bGVUeXBlOjpXZWJHTFNoYWRlciB9fTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNh
bnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMU3luYyogYXJndW1lbnQpCit7CisgICAgaWYgKCFh
cmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgSlNP
Tjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5cGU6OldlYkdMU3luYyB9fTsK
K30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdlYkdMVGV4dHVyZSogYXJndW1l
bnQpCit7CisgICAgaWYgKCFhcmd1bWVudCkKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsK
KyAgICByZXR1cm4ge3sgSlNPTjo6VmFsdWU6OmNyZWF0ZSgwKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGU6OldlYkdMVGV4dHVyZSB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRy
YWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50
KFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQor
ICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6
Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xVbmlmb3JtTG9jYXRpb24gfX07
Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3Vt
ZW50PiBJbnNwZWN0b3JDYW52YXM6OnByb2Nlc3NBcmd1bWVudChXZWJHTFZlcnRleEFycmF5T2Jq
ZWN0KiBhcmd1bWVudCkKK3sKKyAgICBpZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RG
OjpudWxsb3B0OworICAgIHJldHVybiB7eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRp
bmdTd2l6emxlVHlwZTo6V2ViR0xWZXJ0ZXhBcnJheU9iamVjdCB9fTsKK30KKworI2VuZGlmIC8v
IEVOQUJMRShXRUJHTCkKKworI2lmIEVOQUJMRShXRUJHTDIpCisKK09wdGlvbmFsPEluc3BlY3Rv
ckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXM6OnBy
b2Nlc3NBcmd1bWVudChXZWJHTFRyYW5zZm9ybUZlZWRiYWNrKiBhcmd1bWVudCkKK3sKKyAgICBp
ZiAoIWFyZ3VtZW50KQorICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIHJldHVybiB7
eyBKU09OOjpWYWx1ZTo6Y3JlYXRlKDApLCBSZWNvcmRpbmdTd2l6emxlVHlwZTo6V2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayB9fTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhczo6cHJvY2Vzc0FyZ3VtZW50KFdl
YkdMMlJlbmRlcmluZ0NvbnRleHQ6OlVpbnQzMkxpc3Q6OlZhcmlhbnRUeXBlJiBhcmd1bWVudCkK
K3sKKyAgICByZXR1cm4gV1RGOjpzd2l0Y2hPbihhcmd1bWVudCwgWyZdIChhdXRvJiB2YWx1ZSkg
eworICAgICAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KHZhbHVlKTsKKyAgICB9KTsKK30KKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJHTDIpCisKIHN0YXRpYyBib29sIHNob3VsZFNuYXBzaG90Qml0
bWFwUmVuZGVyZXJBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIHJldHVybiBuYW1l
ID09ICJ0cmFuc2ZlckZyb21JbWFnZUJpdG1hcCI7CkBAIC0zNDUsNyArNzk4LDcgQEAgc3RhdGlj
IGJvb2wgc2hvdWxkU25hcHNob3RXZWJHTDJBY3Rpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogfQog
I2VuZGlmCiAKLXZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rpb24oY29uc3QgU3RyaW5n
JiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4m
JiBwYXJhbWV0ZXJzKQordm9pZCBJbnNwZWN0b3JDYW52YXM6OnJlY29yZEFjdGlvbihTdHJpbmcm
JiBuYW1lLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudHMmJiBh
cmd1bWVudHMpCiB7CiAgICAgaWYgKCFtX2luaXRpYWxTdGF0ZSkgewogICAgICAgICAvLyBXZSBz
aG91bGQgb25seSBjb25zdHJ1Y3QgdGhlIGluaXRpYWwgc3RhdGUgZm9yIHRoZSBmaXJzdCBhY3Rp
b24gb2YgdGhlIHJlY29yZGluZy4KQEAgLTM3MywxMCArODI2LDYgQEAgdm9pZCBJbnNwZWN0b3JD
YW52YXM6OnJlY29yZEFjdGlvbihjb25zdCBTdHJpbmcmIG5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJf
bGlzdDxSZWMKIAogICAgIGFwcGVuZEFjdGlvblNuYXBzaG90SWZOZWVkZWQoKTsKIAotICAgIG1f
bGFzdFJlY29yZGVkQWN0aW9uID0gYnVpbGRBY3Rpb24obmFtZSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSk7Ci0gICAgbV9idWZmZXJVc2VkICs9IG1fbGFzdFJlY29yZGVkQWN0aW9uLT5tZW1vcnlDb3N0
KCk7Ci0gICAgbV9jdXJyZW50QWN0aW9ucy0+YWRkSXRlbSgqbV9sYXN0UmVjb3JkZWRBY3Rpb24p
OwotCiAgICAgYXV0byogY29udGV4dCA9IGNhbnZhc0NvbnRleHQoKTsKICAgICBBU1NFUlQoY29u
dGV4dCk7CiAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8yMDE2NTE+IFdlYiBJ
bnNwZWN0b3I6IENhbnZhczogc3VwcG9ydCBjYW52YXMgcmVjb3JkaW5ncyBmb3IgV2ViR1BVRGV2
aWNlCkBAIC0zOTEsNiArODQwLDEwIEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzOjpyZWNvcmRBY3Rp
b24oY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjCiAgICAgZWxz
ZSBpZiAoaXM8V2ViR0wyUmVuZGVyaW5nQ29udGV4dD4oY29udGV4dCkgJiYgc2hvdWxkU25hcHNo
b3RXZWJHTDJBY3Rpb24obmFtZSkpCiAgICAgICAgIG1fY29udGVudENoYW5nZWQgPSB0cnVlOwog
I2VuZGlmCisKKyAgICBtX2xhc3RSZWNvcmRlZEFjdGlvbiA9IGJ1aWxkQWN0aW9uKFdURk1vdmUo
bmFtZSksIFdURk1vdmUoYXJndW1lbnRzKSk7CisgICAgbV9idWZmZXJVc2VkICs9IG1fbGFzdFJl
Y29yZGVkQWN0aW9uLT5tZW1vcnlDb3N0KCk7CisgICAgbV9jdXJyZW50QWN0aW9ucy0+YWRkSXRl
bSgqbV9sYXN0UmVjb3JkZWRBY3Rpb24pOwogfQogCiB2b2lkIEluc3BlY3RvckNhbnZhczo6Zmlu
YWxpemVGcmFtZSgpCkBAIC03ODYsNiArMTIzOSwxMSBAQCBpbnQgSW5zcGVjdG9yQ2FudmFzOjpp
bmRleEZvckRhdGEoRHVwbGljYXRlRGF0YVZhcmlhbnQgZGF0YSkKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8aW50PihpbmRleCk7CiB9CiAKK1JlZjxKU09OOjpWYWx1ZT4gSW5zcGVjdG9yQ2FudmFz
Ojp2YWx1ZUluZGV4Rm9yRGF0YShEdXBsaWNhdGVEYXRhVmFyaWFudCBkYXRhKQoreworICAgIHJl
dHVybiBKU09OOjpWYWx1ZTo6Y3JlYXRlKGluZGV4Rm9yRGF0YShkYXRhKSk7Cit9CisKIFN0cmlu
ZyBJbnNwZWN0b3JDYW52YXM6OnN0cmluZ0luZGV4Rm9yS2V5KGNvbnN0IFN0cmluZyYga2V5KQog
ewogICAgIHJldHVybiBTdHJpbmc6Om51bWJlcihpbmRleEZvckRhdGEoa2V5KSk7CkBAIC04MDMs
MTQgKzEyNjEsNiBAQCBzdGF0aWMgUmVmPEpTT046OkFycmF5T2Y8ZG91YmxlPj4gYnVpbGRBcnJh
eUZvckFmZmluZVRyYW5zZm9ybShjb25zdCBBZmZpbmVUcmFucwogICAgIHJldHVybiBhcnJheTsK
IH0KIAotdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIFJlZjxKU09OOjpBcnJheU9mPEpTT046
OlZhbHVlPj4gYnVpbGRBcnJheUZvclZlY3Rvcihjb25zdCBWZWN0b3I8VD4mIHZlY3RvcikKLXsK
LSAgICBhdXRvIGFycmF5ID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwot
ICAgIGZvciAoYXV0byYgaXRlbSA6IHZlY3RvcikKLSAgICAgICAgYXJyYXktPmFkZEl0ZW0oaXRl
bSk7Ci0gICAgcmV0dXJuIGFycmF5OwotfQotCiBSZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6SW5p
dGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkSW5pdGlhbFN0YXRlKCkKIHsKICAgICBh
dXRvKiBjb250ZXh0ID0gY2FudmFzQ29udGV4dCgpOwpAQCAtOTE1LDIzOSArMTM2NSwyMCBAQCBS
ZWY8UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBJbnNwZWN0b3JDYW52YXM6OmJ1
aWxkSW5pdGlhbFN0YXRlKCkKICAgICByZXR1cm4gaW5pdGlhbFN0YXRlUGF5bG9hZDsKIH0KIAot
UmVmPEpTT046OkFycmF5T2Y8SlNPTjo6VmFsdWU+PiBJbnNwZWN0b3JDYW52YXM6OmJ1aWxkQWN0
aW9uKGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZh
c0FjdGlvblZhcmlhbnQ+JiYgcGFyYW1ldGVycykKK1JlZjxKU09OOjpBcnJheU9mPEpTT046OlZh
bHVlPj4gSW5zcGVjdG9yQ2FudmFzOjpidWlsZEFjdGlvbihTdHJpbmcmJiBuYW1lLCBJbnNwZWN0
b3JDYW52YXNDYWxsVHJhY2VyOjpQcm9jZXNzZWRBcmd1bWVudHMmJiBhcmd1bWVudHMpCiB7CiAg
ICAgYXV0byBhY3Rpb24gPSBKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPjo6Y3JlYXRlKCk7Ci0g
ICAgYWN0aW9uLT5hZGRJdGVtKGluZGV4Rm9yRGF0YShuYW1lKSk7CisgICAgYWN0aW9uLT5hZGRJ
dGVtKGluZGV4Rm9yRGF0YShXVEZNb3ZlKG5hbWUpKSk7CiAKICAgICBhdXRvIHBhcmFtZXRlcnNE
YXRhID0gSlNPTjo6QXJyYXlPZjxKU09OOjpWYWx1ZT46OmNyZWF0ZSgpOwogICAgIGF1dG8gc3dp
enpsZVR5cGVzID0gSlNPTjo6QXJyYXlPZjxpbnQ+OjpjcmVhdGUoKTsKKyAgICBmb3IgKGF1dG8m
JiBhcmd1bWVudCA6IFdURk1vdmUoYXJndW1lbnRzKSkgeworICAgICAgICBpZiAoIWFyZ3VtZW50
KQorICAgICAgICAgICAgY29udGludWU7CiAKLSAgICBhdXRvIGFkZFBhcmFtZXRlciA9IFsmcGFy
YW1ldGVyc0RhdGEsICZzd2l6emxlVHlwZXNdIChhdXRvIHZhbHVlLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXMgc3dpenpsZVR5cGUpIHsKLSAgICAgICAgcGFyYW1ldGVyc0RhdGEtPmFkZEl0ZW0odmFs
dWUpOwotICAgICAgICBzd2l6emxlVHlwZXMtPmFkZEl0ZW0oc3RhdGljX2Nhc3Q8aW50Pihzd2l6
emxlVHlwZSkpOwotICAgIH07Ci0KLSAgICAvLyBEZWNsYXJlZCBiZWZvcmUgaXQncyBpbml0aWFs
aXplZCBzbyBpdCBjYW4gYmUgdXNlZCByZWN1cnNpdmVseS4KLSAgICBGdW5jdGlvbjx2b2lkKGNv
bnN0IFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQmKT4gcGFyc2VQYXJhbWV0ZXI7Ci0gICAgcGFy
c2VQYXJhbWV0ZXIgPSBbJl0gKGNvbnN0IGF1dG8mIHBhcmFtZXRlcikgewotICAgICAgICBXVEY6
OnN3aXRjaE9uKHBhcmFtZXRlciwKLSAgICAgICAgICAgIFsmXSAoQ2FudmFzRGlyZWN0aW9uIHZh
bHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVudW1lcmF0aW9uVG9TdHJp
bmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcpOyB9LAotICAgICAgICAg
ICAgWyZdIChDYW52YXNGaWxsUnVsZSB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRh
KGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoQ2FudmFzTGluZUNhcCB2YWx1ZSkgeyBh
ZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVl
KSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAo
Q2FudmFzTGluZUpvaW4gdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0
RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSkpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmlu
Zyk7IH0sCi0gICAgICAgICAgICBbJl0gKENhbnZhc1RleHRBbGlnbiB2YWx1ZSkgeyBhZGRQYXJh
bWV0ZXIoaW5kZXhGb3JEYXRhKGNvbnZlcnRFbnVtZXJhdGlvblRvU3RyaW5nKHZhbHVlKSksIFJl
Y29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoQ2FudmFz
VGV4dEJhc2VsaW5lIHZhbHVlKSB7IGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEoY29udmVydEVu
dW1lcmF0aW9uVG9TdHJpbmcodmFsdWUpKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpTdHJpbmcp
OyB9LAotICAgICAgICAgICAgWyZdIChJbWFnZVNtb290aGluZ1F1YWxpdHkgdmFsdWUpIHsgYWRk
UGFyYW1ldGVyKGluZGV4Rm9yRGF0YShjb252ZXJ0RW51bWVyYXRpb25Ub1N0cmluZyh2YWx1ZSkp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7IH0sCi0gICAgICAgICAgICBbJl0gKGNv
bnN0IERPTU1hdHJpeDJESW5pdCYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBhdXRvIGFycmF5
ID0gSlNPTjo6QXJyYXlPZjxkb3VibGU+OjpjcmVhdGUoKTsKLSAgICAgICAgICAgICAgICBhcnJh
eS0+YWRkSXRlbSh2YWx1ZS5hLnZhbHVlT3IoMSkpOwotICAgICAgICAgICAgICAgIGFycmF5LT5h
ZGRJdGVtKHZhbHVlLmIudmFsdWVPcigwKSk7Ci0gICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0
ZW0odmFsdWUuYy52YWx1ZU9yKDApKTsKLSAgICAgICAgICAgICAgICBhcnJheS0+YWRkSXRlbSh2
YWx1ZS5kLnZhbHVlT3IoMSkpOwotICAgICAgICAgICAgICAgIGFycmF5LT5hZGRJdGVtKHZhbHVl
LmUudmFsdWVPcigwKSk7Ci0gICAgICAgICAgICAgICAgYXJyYXktPmFkZEl0ZW0odmFsdWUuZi52
YWx1ZU9yKDApKTsKLSAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoV1RGTW92ZShhcnJheSks
IFJlY29yZGluZ1N3aXp6bGVUeXBlczo6RE9NTWF0cml4KTsKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICBbJl0gKGNvbnN0IEVsZW1lbnQqIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYg
KHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEVsZW1lbnRzIGFyZSBub3Qgc2VyaWFs
aXphYmxlLCBzbyBhZGQgYSBzdHJpbmcgYXMgYSBwbGFjZWhvbGRlciBzaW5jZSB0aGUgYWN0dWFs
Ci0gICAgICAgICAgICAgICAgICAgIC8vIGVsZW1lbnQgY2Fubm90IGJlIHJlY29uc3RydWN0ZWQg
aW4gdGhlIGZyb250ZW5kLgotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhG
b3JEYXRhKCJFbGVtZW50IiksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6Tm9uZSk7Ci0gICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoSFRNTEltYWdlRWxl
bWVudCogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXM6OkltYWdlKTsgfSwKLSAgICAgICAgICAgIFsmXSAoSW1hZ2VCaXRtYXAqIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJh
bWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpJbWFnZUJp
dG1hcCk7IH0sCi0gICAgICAgICAgICBbJl0gKEltYWdlRGF0YSogdmFsdWUpIHsKLSAgICAgICAg
ICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRl
eEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlRGF0YSk7IH0sCi0g
ICAgICAgICAgICBbJl0gKGNvbnN0IFBhdGgyRCogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEo
YnVpbGRTdHJpbmdGcm9tUGF0aCh2YWx1ZS0+cGF0aCgpKSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6UGF0aDJEKTsgfSwKLSNpZiBFTkFCTEUoV0VCR0wpCi0gICAgICAgICAgICAvLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE3NjAwOT4gV2ViIEluc3BlY3Rvcjogc2VuZCBkYXRhIGZv
ciBXZWJHTCBvYmplY3RzIGR1cmluZyBhIHJlY29yZGluZyBpbnN0ZWFkIG9mIGEgcGxhY2Vob2xk
ZXIgc3RyaW5nCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMQnVmZmVyKiB2YWx1ZSkgewot
ICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1l
dGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xCdWZmZXIpOwotICAgICAgICAgICAg
fSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xGcmFtZWJ1ZmZlciogdmFsdWUpIHsKLSAg
ICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRl
cigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdMRnJhbWVidWZmZXIpOwotICAgICAgICAg
ICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xQcm9ncmFtKiB2YWx1ZSkgewotICAg
ICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVy
KDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xQcm9ncmFtKTsKLSAgICAgICAgICAgIH0s
Ci0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMUXVlcnkqIHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVj
b3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFF1ZXJ5KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyYnVmZmVyKiB2YWx1ZSkgewotICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29y
ZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xSZW5kZXJidWZmZXIpOwotICAgICAgICAgICAgfSwKLSAg
ICAgICAgICAgIFsmXSAoY29uc3QgV2ViR0xTYW1wbGVyKiB2YWx1ZSkgewotICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29y
ZGluZ1N3aXp6bGVUeXBlczo6V2ViR0xTYW1wbGVyKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAg
ICAgICBbJl0gKGNvbnN0IFdlYkdMU2hhZGVyKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlm
ICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3
aXp6bGVUeXBlczo6V2ViR0xTaGFkZXIpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgV2ViR0xTeW5jKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkK
LSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6V2ViR0xTeW5jKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdl
YkdMVGV4dHVyZSogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAg
ICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OldlYkdM
VGV4dHVyZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFRy
YW5zZm9ybUZlZWRiYWNrKiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAg
ICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
V2ViR0xUcmFuc2Zvcm1GZWVkYmFjayk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZd
IChjb25zdCBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBp
ZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdT
d2l6emxlVHlwZXM6OldlYkdMVW5pZm9ybUxvY2F0aW9uKTsKLSAgICAgICAgICAgIH0sCi0gICAg
ICAgICAgICBbJl0gKGNvbnN0IFdlYkdMVmVydGV4QXJyYXlPYmplY3QqIHZhbHVlKSB7Ci0gICAg
ICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIo
MCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpXZWJHTFZlcnRleEFycmF5T2JqZWN0KTsKLSAgICAg
ICAgICAgIH0sCi0jZW5kaWYKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEFycmF5QnVm
ZmVyPiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAg
ICAgICAgIGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlR5cGVkQXJyYXkp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPEFycmF5QnVm
ZmVyVmlldz4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAg
ICAgICAgICAgICBhZGRQYXJhbWV0ZXIoMCwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpUeXBlZEFy
cmF5KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxDYW52
YXNHcmFkaWVudD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAg
ICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5n
U3dpenpsZVR5cGVzOjpDYW52YXNHcmFkaWVudCk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAg
ICAgWyZdIChjb25zdCBSZWZQdHI8Q2FudmFzUGF0dGVybj4mIHZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhG
b3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpDYW52YXNQYXR0ZXJuKTsKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxGbG9hdDMyQXJyYXk+
JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAg
ICAgYWRkUGFyYW1ldGVyKDAsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6VHlwZWRBcnJheSk7Ci0g
ICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SFRNTENhbnZhc0Vs
ZW1lbnQ+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
ICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlczo6SW1hZ2UpOwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3Qg
UmVmUHRyPEhUTUxJbWFnZUVsZW1lbnQ+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1
ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2UpOwotICAgICAgICAgICAgfSwKLSNpZiBF
TkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPE9m
ZnNjcmVlbkNhbnZhcz4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAg
ICAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3Jk
aW5nU3dpenpsZVR5cGVzOjpJbWFnZSk7Ci0gICAgICAgICAgICB9LAotI2VuZGlmCi0jaWYgRU5B
QkxFKFZJREVPKQotICAgICAgICAgICAgWyZdIChjb25zdCBSZWZQdHI8SFRNTFZpZGVvRWxlbWVu
dD4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAg
ICAgICBhZGRQYXJhbWV0ZXIoaW5kZXhGb3JEYXRhKHZhbHVlKSwgUmVjb3JkaW5nU3dpenpsZVR5
cGVzOjpJbWFnZSk7Ci0gICAgICAgICAgICB9LAotI2VuZGlmCi0jaWYgRU5BQkxFKENTU19UWVBF
RF9PTSkKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPFR5cGVkT01DU1NJbWFnZVZhbHVl
PiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAg
ICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlw
ZXM6OkltYWdlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSAgICAgICAgICAgIFsmXSAoY29u
c3QgUmVmUHRyPEltYWdlQml0bWFwPiYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFs
dWUpCi0gICAgICAgICAgICAgICAgICAgIGFkZFBhcmFtZXRlcihpbmRleEZvckRhdGEodmFsdWUp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkltYWdlQml0bWFwKTsKLSAgICAgICAgICAgIH0sCi0g
ICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxJbWFnZURhdGE+JiB2YWx1ZSkgewotICAgICAg
ICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgYWRkUGFyYW1ldGVyKGlu
ZGV4Rm9yRGF0YSh2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6SW1hZ2VEYXRhKTsKLSAg
ICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFJlZlB0cjxJbnQzMkFycmF5PiYg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAg
IGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlR5cGVkQXJyYXkpOwotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgUmVmUHRyPFVpbnQzMkFycmF5PiYg
dmFsdWUpIHsKLSAgICAgICAgICAgICAgICBpZiAodmFsdWUpCi0gICAgICAgICAgICAgICAgICAg
IGFkZFBhcmFtZXRlcigwLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlR5cGVkQXJyYXkpOwotICAg
ICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgQ2FudmFzSW1hZ2VTb3VyY2UmIHZh
bHVlKSB7Ci0gICAgICAgICAgICAgICAgV1RGOjp2aXNpdChwYXJzZVBhcmFtZXRlciwgdmFsdWUp
OwotICAgICAgICAgICAgfSwKLSAgICAgICAgICAgIFsmXSAoY29uc3QgQ2FudmFzUmVuZGVyaW5n
Q29udGV4dDJEQmFzZTo6U3R5bGVWYXJpYW50JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdU
Rjo6dmlzaXQocGFyc2VQYXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0jaWYgRU5B
QkxFKFdFQkdMKQotICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRC
YXNlOjpCdWZmZXJEYXRhU291cmNlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlz
aXQocGFyc2VQYXJhbWV0ZXIsIHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBb
Jl0gKGNvbnN0IE9wdGlvbmFsPFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFT
b3VyY2U+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkKLSAgICAgICAgICAg
ICAgICAgICAgcGFyc2VQYXJhbWV0ZXIodmFsdWUudmFsdWUoKSk7Ci0gICAgICAgICAgICB9LAot
ICAgICAgICAgICAgWyZdIChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFn
ZVNvdXJjZSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBXVEY6OnZpc2l0KHBhcnNlUGFyYW1l
dGVyLCB2YWx1ZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBPcHRp
b25hbDxXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpUZXhJbWFnZVNvdXJjZT4mIHZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgaWYgKHZhbHVlKQotICAgICAgICAgICAgICAgICAgICBwYXJzZVBh
cmFtZXRlcih2YWx1ZS52YWx1ZSgpKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSAgICAgICAg
ICAgIFsmXSAoY29uc3QgVmVjdG9yPFN0cmluZz4mIHZhbHVlKSB7Ci0gICAgICAgICAgICAgICAg
YXV0byBkZWR1cGxpY2F0ZWQgPSB2YWx1ZS5tYXAoWyZdIChjb25zdCBTdHJpbmcmIGl0ZW0pIHsK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGluZGV4Rm9yRGF0YShpdGVtKTsKLSAgICAgICAg
ICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBhZGRQYXJhbWV0ZXIoYnVpbGRBcnJheUZvclZl
Y3RvcihkZWR1cGxpY2F0ZWQpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OlN0cmluZyk7Ci0gICAg
ICAgICAgICB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8ZmxvYXQ+JiB2YWx1ZSkg
eyBhZGRQYXJhbWV0ZXIoYnVpbGRBcnJheUZvclZlY3Rvcih2YWx1ZSksIFJlY29yZGluZ1N3aXp6
bGVUeXBlczo6QXJyYXkpOyB9LAotICAgICAgICAgICAgWyZdIChjb25zdCBWZWN0b3I8dWludDMy
X3Q+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGF1dG8gbWFwcGVkID0gdmFsdWUubWFwKFsm
XSAodWludDMyX3QgaXRlbSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8ZG91YmxlPihpdGVtKTsKLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICBh
ZGRQYXJhbWV0ZXIoYnVpbGRBcnJheUZvclZlY3RvcihtYXBwZWQpLCBSZWNvcmRpbmdTd2l6emxl
VHlwZXM6OkFycmF5KTsKLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFZl
Y3RvcjxpbnQzMl90PiYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGJ1aWxkQXJyYXlGb3JWZWN0b3Io
dmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkFycmF5KTsgfSwKLSNpZiBFTkFCTEUoV0VC
R0wpCi0gICAgICAgICAgICBbJl0gKGNvbnN0IFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OkZs
b2F0MzJMaXN0OjpWYXJpYW50VHlwZSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBXVEY6OnZp
c2l0KHBhcnNlUGFyYW1ldGVyLCB2YWx1ZSk7Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAg
WyZdIChjb25zdCBXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlOjpJbnQzMkxpc3Q6OlZhcmlhbnRU
eXBlJiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIFdURjo6dmlzaXQocGFyc2VQYXJhbWV0ZXIs
IHZhbHVlKTsKLSAgICAgICAgICAgIH0sCi0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCR0wyKQotICAg
ICAgICAgICAgWyZdIChjb25zdCBXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpW
YXJpYW50VHlwZSYgdmFsdWUpIHsKLSAgICAgICAgICAgICAgICBXVEY6OnZpc2l0KHBhcnNlUGFy
YW1ldGVyLCB2YWx1ZSk7Ci0gICAgICAgICAgICB9LAotI2VuZGlmCi0gICAgICAgICAgICBbJl0g
KGNvbnN0IFN0cmluZyYgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKGluZGV4Rm9yRGF0YSh2YWx1ZSks
IFJlY29yZGluZ1N3aXp6bGVUeXBlczo6U3RyaW5nKTsgfSwKLSAgICAgICAgICAgIFsmXSAoZG91
YmxlIHZhbHVlKSB7IGFkZFBhcmFtZXRlcih2YWx1ZSwgUmVjb3JkaW5nU3dpenpsZVR5cGVzOjpO
dW1iZXIpOyB9LAotICAgICAgICAgICAgWyZdIChmbG9hdCB2YWx1ZSkgeyBhZGRQYXJhbWV0ZXIo
dmFsdWUsIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsm
XSAoY29uc3QgT3B0aW9uYWw8ZmxvYXQ+JiB2YWx1ZSkgewotICAgICAgICAgICAgICAgIGlmICh2
YWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgcGFyc2VQYXJhbWV0ZXIodmFsdWUudmFsdWUoKSk7
Ci0gICAgICAgICAgICB9LAotICAgICAgICAgICAgWyZdICh1aW50NjRfdCB2YWx1ZSkgeyBhZGRQ
YXJhbWV0ZXIoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBl
czo6TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsmXSAoaW50NjRfdCB2YWx1ZSkgeyBhZGRQYXJh
bWV0ZXIoc3RhdGljX2Nhc3Q8ZG91YmxlPih2YWx1ZSksIFJlY29yZGluZ1N3aXp6bGVUeXBlczo6
TnVtYmVyKTsgfSwKLSAgICAgICAgICAgIFsmXSAodWludDMyX3QgdmFsdWUpIHsgYWRkUGFyYW1l
dGVyKHN0YXRpY19jYXN0PGRvdWJsZT4odmFsdWUpLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6Ok51
bWJlcik7IH0sCi0gICAgICAgICAgICBbJl0gKGludDMyX3QgdmFsdWUpIHsgYWRkUGFyYW1ldGVy
KHZhbHVlLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6Ok51bWJlcik7IH0sCi0gICAgICAgICAgICBb
Jl0gKHVpbnQ4X3QgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKHN0YXRpY19jYXN0PGludD4odmFsdWUp
LCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6Ok51bWJlcik7IH0sCi0gICAgICAgICAgICBbJl0gKGJv
b2wgdmFsdWUpIHsgYWRkUGFyYW1ldGVyKHZhbHVlLCBSZWNvcmRpbmdTd2l6emxlVHlwZXM6OkJv
b2xlYW4pOyB9Ci0gICAgICAgICk7Ci0gICAgfTsKLSAgICBmb3IgKGF1dG8mIHBhcmFtZXRlciA6
IHBhcmFtZXRlcnMpCi0gICAgICAgIHBhcnNlUGFyYW1ldGVyKHBhcmFtZXRlcik7Ci0KKyAgICAg
ICAgcGFyYW1ldGVyc0RhdGEtPmFkZEl0ZW0oYXJndW1lbnQtPnZhbHVlLmNvcHlSZWYoKSk7Cisg
ICAgICAgIHN3aXp6bGVUeXBlcy0+YWRkSXRlbShzdGF0aWNfY2FzdDxpbnQ+KGFyZ3VtZW50LT5z
d2l6emxlVHlwZSkpOworICAgIH0KICAgICBhY3Rpb24tPmFkZEl0ZW0oV1RGTW92ZShwYXJhbWV0
ZXJzRGF0YSkpOwogICAgIGFjdGlvbi0+YWRkSXRlbShXVEZNb3ZlKHN3aXp6bGVUeXBlcykpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ2FudmFzLmgKaW5kZXggYjI3YmM4
ZDQ5MjM5MTE3YmVlNTI1ZDVmZTZhYzI2ZTJkNjE2YjVjNy4uMjYyNWJkMGE3NjNmMDY2YzExZjJi
MjQwZjdjOWE3Yzk0MGMxZWQwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckNhbnZhcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JDYW52YXMuaApAQCAtMjUsMTQgKzI1LDE0IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVk
ZSAiQ2FsbFRyYWNlclR5cGVzLmgiCi0jaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dC5o
IgorI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCIKICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9JbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2Fs
bEZyYW1lLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAj
aW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2lu
Y2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODYs
NyArODYsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVzZXRSZWNvcmRpbmdEYXRhKCk7CiAgICAg
Ym9vbCBoYXNSZWNvcmRpbmdEYXRhKCkgY29uc3Q7CiAgICAgYm9vbCBjdXJyZW50RnJhbWVIYXNE
YXRhKCkgY29uc3Q7Ci0gICAgdm9pZCByZWNvcmRBY3Rpb24oY29uc3QgU3RyaW5nJiwgc3RkOjpp
bml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOworCisg
ICAgLy8gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcgorI2RlZmluZSBQUk9DRVNTX0FSR1VNRU5U
X0RFQ0xBUkFUSU9OKEFyZ3VtZW50VHlwZSkgXAorICAgIE9wdGlvbmFsPEluc3BlY3RvckNhbnZh
c0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBwcm9jZXNzQXJndW1lbnQoQXJndW1lbnRU
eXBlKTsgXAorLy8gZW5kIG9mIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04KKyAgICBGT1Jf
RUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0FSR1VNRU5UKFBST0NFU1NfQVJHVU1F
TlRfREVDTEFSQVRJT04pCisjdW5kZWYgUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTgorICAg
IHZvaWQgcmVjb3JkQWN0aW9uKFN0cmluZyYmLCBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpQ
cm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CiAKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpSZWNvcmRpbmc6OkZyYW1lPj4gcmVsZWFzZUZyYW1lcygpIHsgcmV0
dXJuIG1fZnJhbWVzLnJlbGVhc2VOb25OdWxsKCk7IH0KIApAQCAtMTM3LDkgKzE0NCwxMCBAQCBw
cml2YXRlOgogICAgID47CiAKICAgICBpbnQgaW5kZXhGb3JEYXRhKER1cGxpY2F0ZURhdGFWYXJp
YW50KTsKKyAgICBSZWY8SlNPTjo6VmFsdWU+IHZhbHVlSW5kZXhGb3JEYXRhKER1cGxpY2F0ZURh
dGFWYXJpYW50KTsKICAgICBTdHJpbmcgc3RyaW5nSW5kZXhGb3JLZXkoY29uc3QgU3RyaW5nJik7
CiAgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJlY29yZGluZzo6SW5pdGlhbFN0YXRlPiBi
dWlsZEluaXRpYWxTdGF0ZSgpOwotICAgIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4g
YnVpbGRBY3Rpb24oY29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENh
bnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOworICAgIFJlZjxKU09OOjpBcnJheU9mPEpTT046
OlZhbHVlPj4gYnVpbGRBY3Rpb24oU3RyaW5nJiYsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6
OlByb2Nlc3NlZEFyZ3VtZW50cyYmID0geyB9KTsKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxKU09O
OjpWYWx1ZT4+IGJ1aWxkQXJyYXlGb3JDYW52YXNHcmFkaWVudChjb25zdCBDYW52YXNHcmFkaWVu
dCYpOwogICAgIFJlZjxKU09OOjpBcnJheU9mPEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckNh
bnZhc1BhdHRlcm4oY29uc3QgQ2FudmFzUGF0dGVybiYpOwogICAgIFJlZjxKU09OOjpBcnJheU9m
PEpTT046OlZhbHVlPj4gYnVpbGRBcnJheUZvckltYWdlRGF0YShjb25zdCBJbWFnZURhdGEmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxs
VHJhY2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDA5NWU2MzU5ZjRkOTBlNjYzM2YxMDFmMjA5M2U2OTE5
MjRmYzM3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNhbnZhc0NhbGxUcmFjZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIu
aCIKKworI2luY2x1ZGUgIkNhbnZhc0Jhc2UuaCIKKyNpbmNsdWRlICJDYW52YXNHcmFkaWVudC5o
IgorI2luY2x1ZGUgIkNhbnZhc1BhdHRlcm4uaCIKKyNpbmNsdWRlICJDYW52YXNSZW5kZXJpbmdD
b250ZXh0LmgiCisjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4dDJELmgiCisjaW5jbHVk
ZSAiRE9NTWF0cml4MkRJbml0LmgiCisjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkhU
TUxDYW52YXNFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1
ZGUgIkhUTUxWaWRlb0VsZW1lbnQuaCIKKyNpbmNsdWRlICJJbWFnZURhdGEuaCIKKyNpbmNsdWRl
ICJJbnNwZWN0b3JDYW52YXNBZ2VudC5oIgorI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oIgorI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKKyNpbmNsdWRlICJPZmZz
Y3JlZW5DYW52YXMuaCIKKyNpbmNsdWRlICJQYXRoMkQuaCIKKyNpbmNsdWRlICJSZWNvcmRpbmdT
d2l6emxlVHlwZS5oIgorI2luY2x1ZGUgIlR5cGVkT01DU1NJbWFnZVZhbHVlLmgiCisjaW5jbHVk
ZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIldlYkdMQnVmZmVyLmgiCisj
aW5jbHVkZSAiV2ViR0xGcmFtZWJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMUHJvZ3JhbS5oIgor
I2luY2x1ZGUgIldlYkdMUXVlcnkuaCIKKyNpbmNsdWRlICJXZWJHTFJlbmRlcmJ1ZmZlci5oIgor
I2luY2x1ZGUgIldlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2UuaCIKKyNpbmNsdWRlICJXZWJHTFNh
bXBsZXIuaCIKKyNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgorI2luY2x1ZGUgIldlYkdMU3luYy5o
IgorI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdMVHJhbnNmb3JtRmVl
ZGJhY2suaCIKKyNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgorI2luY2x1ZGUgIldl
YkdMVmVydGV4QXJyYXlPYmplY3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8d3RmL09wdGlv
bmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0YXRpYyBJbnNwZWN0b3JDYW52YXNBZ2VudCog
ZW5hYmxlZENhbnZhc0FnZW50KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQpCit7CisgICAgQVNTRVJUKEluc3BlY3Rvckluc3RydW1lbnRhdGlvblB1YmxpYzo6
aGFzRnJvbnRlbmRzKCkpOworCisgICAgYXV0byogYWdlbnRzID0gSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjppbnN0cnVtZW50aW5nQWdlbnRzKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQuY2FudmFz
QmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CisgICAgQVNTRVJUKGFnZW50cyk7Cisg
ICAgaWYgKCFhZ2VudHMpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgQVNTRVJUKGFn
ZW50cy0+ZW5hYmxlZENhbnZhc0FnZW50KCkpOworICAgIHJldHVybiBhZ2VudHMtPmVuYWJsZWRD
YW52YXNBZ2VudCgpOworfQorCisjZGVmaW5lIFBST0NFU1NfQVJHVU1FTlRfREVGSU5JVElPTihB
cmd1bWVudFR5cGUpIFwKK09wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nl
c3NlZEFyZ3VtZW50PiBJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyOjpwcm9jZXNzQXJndW1lbnQo
Q2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgQXJndW1lbnRU
eXBlIGFyZ3VtZW50KSBcCit7IFwKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBlbmFibGVk
Q2FudmFzQWdlbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCkpIFwKKyAgICAgICAgcmV0dXJuIGNh
bnZhc0FnZW50LT5wcm9jZXNzQXJndW1lbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgYXJndW1l
bnQpOyBcCisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsgXAorfSBcCisvLyBlbmQgb2YgUFJPQ0VT
U19BUkdVTUVOVF9ERUZJTklUSU9OCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxM
X1RSQUNFUl9BUkdVTUVOVChQUk9DRVNTX0FSR1VNRU5UX0RFRklOSVRJT04pCisjdW5kZWYgUFJP
Q0VTU19BUkdVTUVOVF9ERUZJTklUSU9OCisKK3ZvaWQgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cjo6cmVjb3JkQWN0aW9uKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQsIFN0cmluZyYmIG5hbWUsIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3Nl
ZEFyZ3VtZW50cyYmIGFyZ3VtZW50cykKK3sKKyAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBl
bmFibGVkQ2FudmFzQWdlbnQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCkpCisgICAgICAgIGNhbnZh
c0FnZW50LT5yZWNvcmRBY3Rpb24oY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgV1RGTW92ZShuYW1l
KSwgV1RGTW92ZShhcmd1bWVudHMpKTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yQ2FudmFzQ2Fs
bFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OnBy
b2Nlc3NBcmd1bWVudChjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVudCwgdWlu
dDMyX3QgYXJndW1lbnQpCit7CisgICAgQVNTRVJUKGNhbnZhc0VsZW1lbnQucmVuZGVyaW5nQ29u
dGV4dCgpKTsKKyAgICByZXR1cm4gcHJvY2Vzc0FyZ3VtZW50KCpjYW52YXNFbGVtZW50LnJlbmRl
cmluZ0NvbnRleHQoKSwgYXJndW1lbnQpOworfQorCit2b2lkIEluc3BlY3RvckNhbnZhc0NhbGxU
cmFjZXI6OnJlY29yZEFjdGlvbihjb25zdCBIVE1MQ2FudmFzRWxlbWVudCYgY2FudmFzRWxlbWVu
dCwgU3RyaW5nJiYgbmFtZSwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJn
dW1lbnRzJiYgYXJndW1lbnRzKQoreworICAgIEFTU0VSVChjYW52YXNFbGVtZW50LnJlbmRlcmlu
Z0NvbnRleHQoKSk7CisgICAgcmVjb3JkQWN0aW9uKCpjYW52YXNFbGVtZW50LnJlbmRlcmluZ0Nv
bnRleHQoKSwgV1RGTW92ZShuYW1lKSwgV1RGTW92ZShhcmd1bWVudHMpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckNhbnZhc0NhbGxUcmFjZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDFlNzgzZGE4ZDUxOTYwYzI0MzZi
ZjlkNTM2ZDU0ZDVlMjMwNjMwNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgKQEAgLTAsMCArMSwyMDggQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRl
eHQyREJhc2UuaCIKKyNpbmNsdWRlICJXZWJHTDJSZW5kZXJpbmdDb250ZXh0LmgiCisjaW5jbHVk
ZSAiV2ViR0xSZW5kZXJpbmdDb250ZXh0QmFzZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L1R5cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KKyNpbmNsdWRlIDx3
dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0
Zi9SZWYuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RG
U3RyaW5nLmg+CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBBcnJheUJ1ZmZlcjsKK2NsYXNz
IEFycmF5QnVmZmVyVmlldzsKKworfSAvLyBuYW1lc3BhY2UgSlNDCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ2FudmFzR3JhZGllbnQ7CitjbGFzcyBDYW52YXNQYXR0ZXJuOworY2xh
c3MgQ2FudmFzUmVuZGVyaW5nQ29udGV4dDsKK2NsYXNzIEVsZW1lbnQ7CitjbGFzcyBIVE1MQ2Fu
dmFzRWxlbWVudDsKK2NsYXNzIEhUTUxJbWFnZUVsZW1lbnQ7CitjbGFzcyBIVE1MVmlkZW9FbGVt
ZW50OworY2xhc3MgSW1hZ2VCaXRtYXA7CitjbGFzcyBJbWFnZURhdGE7CitjbGFzcyBPZmZzY3Jl
ZW5DYW52YXM7CitjbGFzcyBQYXRoMkQ7CitjbGFzcyBUeXBlZE9NQ1NTSW1hZ2VWYWx1ZTsKK2Ns
YXNzIFdlYkdMQnVmZmVyOworY2xhc3MgV2ViR0xGcmFtZWJ1ZmZlcjsKK2NsYXNzIFdlYkdMUHJv
Z3JhbTsKK2NsYXNzIFdlYkdMUXVlcnk7CitjbGFzcyBXZWJHTFJlbmRlcmJ1ZmZlcjsKK2NsYXNz
IFdlYkdMU2FtcGxlcjsKK2NsYXNzIFdlYkdMU2hhZGVyOworY2xhc3MgV2ViR0xTeW5jOworY2xh
c3MgV2ViR0xUZXh0dXJlOworY2xhc3MgV2ViR0xUcmFuc2Zvcm1GZWVkYmFjazsKK2NsYXNzIFdl
YkdMVW5pZm9ybUxvY2F0aW9uOworY2xhc3MgV2ViR0xWZXJ0ZXhBcnJheU9iamVjdDsKK3N0cnVj
dCBET01NYXRyaXgyREluaXQ7CitlbnVtIGNsYXNzIFJlY29yZGluZ1N3aXp6bGVUeXBlIDogaW50
OworZW51bSBjbGFzcyBDYW52YXNEaXJlY3Rpb247CitlbnVtIGNsYXNzIENhbnZhc0ZpbGxSdWxl
OworZW51bSBjbGFzcyBDYW52YXNMaW5lQ2FwOworZW51bSBjbGFzcyBDYW52YXNMaW5lSm9pbjsK
K2VudW0gY2xhc3MgQ2FudmFzVGV4dEFsaWduOworZW51bSBjbGFzcyBDYW52YXNUZXh0QmFzZWxp
bmU7CitlbnVtIEltYWdlU21vb3RoaW5nUXVhbGl0eTsKKworI2lmIEVOQUJMRShDU1NfVFlQRURf
T00pCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQ1NTX1RZ
UEVEX09NX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgbWFjcm8oUmVmUHRyPFR5cGVkT01DU1NJbWFn
ZVZhbHVlPiYpIFwKKy8vIGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJB
Q0VSX0NTU19UWVBFRF9PTV9BUkdVTUVOVAorI2Vsc2UKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVD
VE9SX0NBTlZBU19DQUxMX1RSQUNFUl9DU1NfVFlQRURfT01fQVJHVU1FTlQobWFjcm8pCisjZW5k
aWYgLy8gRU5BQkxFKENTU19UWVBFRF9PTSkKKworI2lmIEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFT
KQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX09GRlNDUkVF
Tl9DQU5WQVNfQVJHVU1FTlQobWFjcm8pIFwKKyAgICBtYWNybyhSZWZQdHI8T2Zmc2NyZWVuQ2Fu
dmFzPiYpIFwKKy8vIGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VS
X09GRlNDUkVFTl9DQU5WQVNfQVJHVU1FTlQKKyNlbHNlCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BF
Q1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfT0ZGU0NSRUVOX0NBTlZBU19BUkdVTUVOVChtYWNybykK
KyNlbmRpZiAvLyBFTkFCTEUoT0ZGU0NSRUVOX0NBTlZBUykKKworI2lmIEVOQUJMRShWSURFTykK
KyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9WSURFT19BUkdV
TUVOVChtYWNybykgXAorICAgIG1hY3JvKFJlZlB0cjxIVE1MVmlkZW9FbGVtZW50PiYpIFwKKy8v
IGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1ZJREVPX0FSR1VN
RU5UCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VS
X1ZJREVPX0FSR1VNRU5UKG1hY3JvKQorI2VuZGlmIC8vIEVOQUJMRShWSURFTykKKworI2lmIEVO
QUJMRShXRUJHTCkKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNF
Ul9XRUJHTF9BUkdVTUVOVChtYWNybykgXAorICAgIG1hY3JvKE9wdGlvbmFsPFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OkJ1ZmZlckRhdGFTb3VyY2U+JikgXAorICAgIG1hY3JvKE9wdGlvbmFs
PFdlYkdMUmVuZGVyaW5nQ29udGV4dEJhc2U6OlRleEltYWdlU291cmNlPiYpIFwKKyAgICBtYWNy
byhXZWJHTEJ1ZmZlciopIFwKKyAgICBtYWNybyhXZWJHTEZyYW1lYnVmZmVyKikgXAorICAgIG1h
Y3JvKFdlYkdMUHJvZ3JhbSopIFwKKyAgICBtYWNybyhXZWJHTFF1ZXJ5KikgXAorICAgIG1hY3Jv
KFdlYkdMUmVuZGVyYnVmZmVyKikgXAorICAgIG1hY3JvKFdlYkdMUmVuZGVyaW5nQ29udGV4dEJh
c2U6OkJ1ZmZlckRhdGFTb3VyY2UmKSBcCisgICAgbWFjcm8oV2ViR0xSZW5kZXJpbmdDb250ZXh0
QmFzZTo6RmxvYXQzMkxpc3Q6OlZhcmlhbnRUeXBlJikgXAorICAgIG1hY3JvKFdlYkdMUmVuZGVy
aW5nQ29udGV4dEJhc2U6OkludDMyTGlzdDo6VmFyaWFudFR5cGUmKSBcCisgICAgbWFjcm8oV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZTo6VGV4SW1hZ2VTb3VyY2UmKSBcCisgICAgbWFjcm8oV2Vi
R0xTYW1wbGVyKikgXAorICAgIG1hY3JvKFdlYkdMU2hhZGVyKikgXAorICAgIG1hY3JvKFdlYkdM
U3luYyopIFwKKyAgICBtYWNybyhXZWJHTFRleHR1cmUqKSBcCisgICAgbWFjcm8oV2ViR0xVbmlm
b3JtTG9jYXRpb24qKSBcCisgICAgbWFjcm8oV2ViR0xWZXJ0ZXhBcnJheU9iamVjdCopIFwKKy8v
IGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VN
RU5UCisjZWxzZQorI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VS
X1dFQkdMX0FSR1VNRU5UKG1hY3JvKQorI2VuZGlmIC8vIEVOQUJMRShXRUJHTCkKKworI2lmIEVO
QUJMRShXRUJHTDIpCisjZGVmaW5lIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFD
RVJfV0VCR0wyX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgbWFjcm8oV2ViR0xUcmFuc2Zvcm1GZWVk
YmFjayopIFwKKyAgICBtYWNybyhXZWJHTDJSZW5kZXJpbmdDb250ZXh0OjpVaW50MzJMaXN0OjpW
YXJpYW50VHlwZSYpIFwKKy8vIGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExf
VFJBQ0VSX1dFQkdMMl9BUkdVTUVOVAorI2Vsc2UKKyNkZWZpbmUgRk9SX0VBQ0hfSU5TUEVDVE9S
X0NBTlZBU19DQUxMX1RSQUNFUl9XRUJHTDJfQVJHVU1FTlQobWFjcm8pCisjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMMikKKworI2RlZmluZSBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJB
Q0VSX0FSR1VNRU5UKG1hY3JvKSBcCisgICAgbWFjcm8oQ2FudmFzRGlyZWN0aW9uKSBcCisgICAg
bWFjcm8oQ2FudmFzRmlsbFJ1bGUpIFwKKyAgICBtYWNybyhDYW52YXNJbWFnZVNvdXJjZSYpIFwK
KyAgICBtYWNybyhDYW52YXNMaW5lQ2FwKSBcCisgICAgbWFjcm8oQ2FudmFzTGluZUpvaW4pIFwK
KyAgICBtYWNybyhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRCYXNlOjpTdHlsZVZhcmlhbnQmKSBc
CisgICAgbWFjcm8oQ2FudmFzVGV4dEFsaWduKSBcCisgICAgbWFjcm8oQ2FudmFzVGV4dEJhc2Vs
aW5lKSBcCisgICAgbWFjcm8oRE9NTWF0cml4MkRJbml0JikgXAorICAgIG1hY3JvKEVsZW1lbnQq
KSBcCisgICAgbWFjcm8oSFRNTEltYWdlRWxlbWVudCopIFwKKyAgICBtYWNybyhJbWFnZUJpdG1h
cCopIFwKKyAgICBtYWNybyhJbWFnZURhdGEqKSBcCisgICAgbWFjcm8oSW1hZ2VTbW9vdGhpbmdR
dWFsaXR5KSBcCisgICAgbWFjcm8oT3B0aW9uYWw8ZmxvYXQ+JikgXAorICAgIG1hY3JvKFBhdGgy
RCopIFwKKyAgICBtYWNybyhSZWZQdHI8Q2FudmFzR3JhZGllbnQ+JikgXAorICAgIG1hY3JvKFJl
ZlB0cjxDYW52YXNQYXR0ZXJuPiYpIFwKKyAgICBtYWNybyhSZWZQdHI8SFRNTENhbnZhc0VsZW1l
bnQ+JikgXAorICAgIG1hY3JvKFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiYpIFwKKyAgICBtYWNy
byhSZWZQdHI8SW1hZ2VCaXRtYXA+JikgXAorICAgIG1hY3JvKFJlZlB0cjxJbWFnZURhdGE+Jikg
XAorICAgIG1hY3JvKFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiYpIFwKKyAgICBtYWNybyhSZWZQ
dHI8SlNDOjpBcnJheUJ1ZmZlclZpZXc+JikgXAorICAgIG1hY3JvKFJlZlB0cjxKU0M6OkZsb2F0
MzJBcnJheT4mKSBcCisgICAgbWFjcm8oUmVmUHRyPEpTQzo6SW50MzJBcnJheT4mKSBcCisgICAg
bWFjcm8oUmVmUHRyPEpTQzo6VWludDMyQXJyYXk+JikgXAorICAgIG1hY3JvKFN0cmluZyYpIFwK
KyAgICBtYWNybyhWZWN0b3I8U3RyaW5nPiYpIFwKKyAgICBtYWNybyhWZWN0b3I8ZmxvYXQ+Jikg
XAorICAgIG1hY3JvKFZlY3Rvcjx1aW50MzJfdD4mKSBcCisgICAgbWFjcm8oVmVjdG9yPGludDMy
X3Q+JikgXAorICAgIG1hY3JvKGRvdWJsZSkgXAorICAgIG1hY3JvKGZsb2F0KSBcCisgICAgbWFj
cm8odWludDY0X3QpIFwKKyAgICBtYWNybyhpbnQ2NF90KSBcCisgICAgbWFjcm8odWludDMyX3Qp
IFwKKyAgICBtYWNybyhpbnQzMl90KSBcCisgICAgbWFjcm8odWludDhfdCkgXAorICAgIG1hY3Jv
KGJvb2wpIFwKKyAgICBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX0NTU19U
WVBFRF9PTV9BUkdVTUVOVChtYWNybykgXAorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNf
Q0FMTF9UUkFDRVJfT0ZGU0NSRUVOX0NBTlZBU19BUkdVTUVOVChtYWNybykgXAorICAgIEZPUl9F
QUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfVklERU9fQVJHVU1FTlQobWFjcm8pIFwK
KyAgICBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFTX0NBTExfVFJBQ0VSX1dFQkdMX0FSR1VNRU5U
KG1hY3JvKSBcCisgICAgRk9SX0VBQ0hfSU5TUEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9XRUJH
TDJfQVJHVU1FTlQobWFjcm8pIFwKKy8vIGVuZCBvZiBGT1JfRUFDSF9JTlNQRUNUT1JfQ0FOVkFT
X0NBTExfVFJBQ0VSX0FSR1VNRU5UCisKK2NsYXNzIEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIg
eworcHVibGljOgorICAgIHN0cnVjdCBQcm9jZXNzZWRBcmd1bWVudCB7CisgICAgICAgIFJlZjxK
U09OOjpWYWx1ZT4gdmFsdWU7CisgICAgICAgIFJlY29yZGluZ1N3aXp6bGVUeXBlIHN3aXp6bGVU
eXBlOworICAgIH07CisKKyAgICB1c2luZyBQcm9jZXNzZWRBcmd1bWVudHMgPSBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8T3B0aW9uYWw8UHJvY2Vzc2VkQXJndW1lbnQ+PjsKKworI2RlZmluZSBQUk9D
RVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKEFyZ3VtZW50VHlwZSkgXAorICAgIHN0YXRpYyBPcHRp
b25hbDxQcm9jZXNzZWRBcmd1bWVudD4gcHJvY2Vzc0FyZ3VtZW50KENhbnZhc1JlbmRlcmluZ0Nv
bnRleHQmLCBBcmd1bWVudFR5cGUpOyBcCisvLyBlbmQgb2YgUFJPQ0VTU19BUkdVTUVOVF9ERUNM
QVJBVElPTgorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9UUkFDRVJfQVJHVU1F
TlQoUFJPQ0VTU19BUkdVTUVOVF9ERUNMQVJBVElPTikKKyN1bmRlZiBQUk9DRVNTX0FSR1VNRU5U
X0RFQ0xBUkFUSU9OCisKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRBY3Rpb24oQ2FudmFzUmVuZGVy
aW5nQ29udGV4dCYsIFN0cmluZyYmLCBQcm9jZXNzZWRBcmd1bWVudHMmJiA9IHsgfSk7CisKKyAg
ICBzdGF0aWMgT3B0aW9uYWw8UHJvY2Vzc2VkQXJndW1lbnQ+IHByb2Nlc3NBcmd1bWVudChjb25z
dCBIVE1MQ2FudmFzRWxlbWVudCYsIHVpbnQzMl90KTsKKyAgICBzdGF0aWMgdm9pZCByZWNvcmRB
Y3Rpb24oY29uc3QgSFRNTENhbnZhc0VsZW1lbnQmLCBTdHJpbmcmJiwgUHJvY2Vzc2VkQXJndW1l
bnRzJiYgPSB7IH0pOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRl
eCBjZTA5ZTU3ZjAxMTQ0MTlhNjcwNGRlZTZhMzQ3NzY1MjBjYWRmNTljLi4wMTEzOTFjNWZkMTIx
MGFkNjBkM2VmOWZhMzM3MDY5M2Y5ODQwODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtMTA3NCwxMiArMTA3
NCw2IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDYW52YXNNZW1v
cnlJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluCiAgICAgICAgIGNhbnZhc0FnZW50LT5kaWRD
aGFuZ2VDYW52YXNNZW1vcnkoY29udGV4dCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnRpbmdBZ2VudHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNhbnZhc1JlbmRlcmluZ0Nv
bnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENh
bnZhc0FjdGlvblZhcmlhbnQ+JiYgcGFyYW1ldGVycykKLXsKLSAgICBpZiAoYXV0byogY2FudmFz
QWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQotICAgICAg
ICBjYW52YXNBZ2VudC0+cmVjb3JkQ2FudmFzQWN0aW9uKGNhbnZhc1JlbmRlcmluZ0NvbnRleHQs
IG5hbWUsIFdURk1vdmUocGFyYW1ldGVycykpOwotfQotCiB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWVJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRl
eHQsIGJvb2wgZm9yY2VEaXNwYXRjaCkKIHsKICAgICBpZiAoYXV0byogY2FudmFzQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRDYW52YXNBZ2VudCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDU5Nzkz
ODM4NTEzOWExOTlkMjBlODQxYWM4MDU3NjE5M2ExOWVkNTMuLjhjZWFhNWRkMjI4OWEwMDViY2Q3
YjYzOTEwMTAyMTI0MzRjYzM1MjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTMyLDcgKzMyLDYgQEAKICNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQ1NTU2VsZWN0b3IuaCIKLSNpbmNsdWRlICJDYWxsVHJhY2VyVHlw
ZXMuaCIKICNpbmNsdWRlICJDYW52YXNCYXNlLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIkRhdGFiYXNlLmgiCkBAIC0yOTUsNyArMjk0LDYgQEAgcHVi
bGljOgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUNTU0NhbnZhc0NsaWVudE5vZGVzKENhbnZh
c0Jhc2UmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFuZ2VDYW52
YXNNZW1vcnkoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwotICAgIHN0YXRpYyB2b2lkIHJlY29y
ZENhbnZhc0FjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgY29uc3QgU3RyaW5nJiwgc3Rk
Ojppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZhcmlhbnQ+JiYgPSB7IH0pOwog
ICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKENhbnZhc1JlbmRl
cmluZ0NvbnRleHQmLCBib29sIGZvcmNlRGlzcGF0Y2ggPSBmYWxzZSk7CiAjaWYgRU5BQkxFKFdF
QkdMKQogICAgIHN0YXRpYyB2b2lkIGRpZEVuYWJsZUV4dGVuc2lvbihXZWJHTFJlbmRlcmluZ0Nv
bnRleHRCYXNlJiwgY29uc3QgU3RyaW5nJik7CkBAIC0zMzcsNiArMzM1LDcgQEAgcHVibGljOgog
ICAgIHN0YXRpYyBib29sIHRpbWVsaW5lQWdlbnRUcmFja2luZyhTY3JpcHRFeGVjdXRpb25Db250
ZXh0Kik7CiAKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cyhQYWdlKik7CisgICAgc3RhdGljIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRp
bmdBZ2VudHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOwogCiAgICAgc3RhdGljIHZvaWQgcmVn
aXN0ZXJJbnN0cnVtZW50aW5nQWdlbnRzKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKICAgICBzdGF0
aWMgdm9pZCB1bnJlZ2lzdGVySW5zdHJ1bWVudGluZ0FnZW50cyhJbnN0cnVtZW50aW5nQWdlbnRz
Jik7CkBAIC01MDQsNyArNTAzLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCBkaWRDaGFu
Z2VDU1NDYW52YXNDbGllbnROb2Rlc0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIENhbnZhc0Jh
c2UmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRDcmVhdGVDYW52YXNSZW5kZXJpbmdDb250ZXh0SW1w
bChJbnN0cnVtZW50aW5nQWdlbnRzJiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwogICAgIHN0
YXRpYyB2b2lkIGRpZENoYW5nZUNhbnZhc01lbW9yeUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IENhbnZhc1JlbmRlcmluZ0NvbnRleHQmKTsKLSAgICBzdGF0aWMgdm9pZCByZWNvcmRDYW52YXNB
Y3Rpb25JbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBDYW52YXNSZW5kZXJpbmdDb250ZXh0Jiwg
Y29uc3QgU3RyaW5nJiwgc3RkOjppbml0aWFsaXplcl9saXN0PFJlY29yZENhbnZhc0FjdGlvblZh
cmlhbnQ+JiYgPSB7IH0pOwogICAgIHN0YXRpYyB2b2lkIGRpZEZpbmlzaFJlY29yZGluZ0NhbnZh
c0ZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYs
IGJvb2wgZm9yY2VEaXNwYXRjaCA9IGZhbHNlKTsKICNpZiBFTkFCTEUoV0VCR0wpCiAgICAgc3Rh
dGljIHZvaWQgZGlkRW5hYmxlRXh0ZW5zaW9uSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgV2Vi
R0xSZW5kZXJpbmdDb250ZXh0QmFzZSYsIGNvbnN0IFN0cmluZyYpOwpAQCAtNTM4LDcgKzUzNiw2
IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyhjb25zdCBGcmFtZSYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50aW5nQWdlbnRzKGNvbnN0IEZyYW1lKik7Ci0gICAgc3RhdGljIEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCop
OwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMgSW5zdHJ1bWVudGluZ0FnZW50cyog
aW5zdHJ1bWVudGluZ0FnZW50cyhEb2N1bWVudCYpOwogICAgIHN0YXRpYyBJbnN0cnVtZW50aW5n
QWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzKERvY3VtZW50Kik7CkBAIC0xNDIzLDEzICsxNDIw
LDYgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDaGFuZ2VDYW52
YXNNZW1vcnkoQ2FudmFzUmVuZGVyaW5nQ29udGUKICAgICAgICAgZGlkQ2hhbmdlQ2FudmFzTWVt
b3J5SW1wbCgqYWdlbnRzLCBjb250ZXh0KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpyZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYg
Y29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8UmVjb3Jk
Q2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQotewotICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwotICAgIGlmIChhdXRvKiBhZ2VudHMgPSBpbnN0cnVtZW50
aW5nQWdlbnRzKGNvbnRleHQuY2FudmFzQmFzZSgpLnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSkp
Ci0gICAgICAgIHJlY29yZENhbnZhc0FjdGlvbkltcGwoKmFnZW50cywgY29udGV4dCwgbmFtZSwg
V1RGTW92ZShwYXJhbWV0ZXJzKSk7Ci19Ci0KIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6ZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCYgY29udGV4dCwgYm9vbCBmb3JjZURpc3BhdGNoKQogewogICAgIEZBU1RfUkVUVVJOX0lG
X05PX0ZST05URU5EUyh2b2lkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1JlY29yZGluZ1N3aXp6bGVUeXBlLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUmVj
b3JkaW5nU3dpenpsZVR5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mODMzODg5YjVkMzhlYWUwNzY2Y2RmODky
MTkzYzhhZDA4MWM5YThmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1JlY29yZGluZ1N3aXp6bGVUeXBlLmgKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNyBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCisvLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFdJLlJlY29yZGluZy5T
d2l6emxlLgorZW51bSBjbGFzcyBSZWNvcmRpbmdTd2l6emxlVHlwZSA6IGludCB7CisgICAgTm9u
ZSA9IDAsCisgICAgTnVtYmVyID0gMSwKKyAgICBCb29sZWFuID0gMiwKKyAgICBTdHJpbmcgPSAz
LAorICAgIEFycmF5ID0gNCwKKyAgICBUeXBlZEFycmF5ID0gNSwKKyAgICBJbWFnZSA9IDYsCisg
ICAgSW1hZ2VEYXRhID0gNywKKyAgICBET01NYXRyaXggPSA4LAorICAgIFBhdGgyRCA9IDksCisg
ICAgQ2FudmFzR3JhZGllbnQgPSAxMCwKKyAgICBDYW52YXNQYXR0ZXJuID0gMTEsCisgICAgV2Vi
R0xCdWZmZXIgPSAxMiwKKyAgICBXZWJHTEZyYW1lYnVmZmVyID0gMTMsCisgICAgV2ViR0xSZW5k
ZXJidWZmZXIgPSAxNCwKKyAgICBXZWJHTFRleHR1cmUgPSAxNSwKKyAgICBXZWJHTFNoYWRlciA9
IDE2LAorICAgIFdlYkdMUHJvZ3JhbSA9IDE3LAorICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uID0g
MTgsCisgICAgSW1hZ2VCaXRtYXAgPSAxOSwKKyAgICBXZWJHTFF1ZXJ5ID0gMjAsCisgICAgV2Vi
R0xTYW1wbGVyID0gMjEsCisgICAgV2ViR0xTeW5jID0gMjIsCisgICAgV2ViR0xUcmFuc2Zvcm1G
ZWVkYmFjayA9IDIzLAorICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QgPSAyNCwKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9SZWNvcmRpbmdTd2l6emxlVHlwZXMuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9SZWNv
cmRpbmdTd2l6emxlVHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc0NWU4
NDY0MTVlYWFmNTUxNjhlY2MzMjcxMmU4NTdiMDI1ZmEwOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUmVjb3Jk
aW5nU3dpenpsZVR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGggV0kuUmVjb3Jk
aW5nLlN3aXp6bGUuCi1lbnVtIGNsYXNzIFJlY29yZGluZ1N3aXp6bGVUeXBlcyA6IGludCB7Ci0g
ICAgTm9uZSA9IDAsCi0gICAgTnVtYmVyID0gMSwKLSAgICBCb29sZWFuID0gMiwKLSAgICBTdHJp
bmcgPSAzLAotICAgIEFycmF5ID0gNCwKLSAgICBUeXBlZEFycmF5ID0gNSwKLSAgICBJbWFnZSA9
IDYsCi0gICAgSW1hZ2VEYXRhID0gNywKLSAgICBET01NYXRyaXggPSA4LAotICAgIFBhdGgyRCA9
IDksCi0gICAgQ2FudmFzR3JhZGllbnQgPSAxMCwKLSAgICBDYW52YXNQYXR0ZXJuID0gMTEsCi0g
ICAgV2ViR0xCdWZmZXIgPSAxMiwKLSAgICBXZWJHTEZyYW1lYnVmZmVyID0gMTMsCi0gICAgV2Vi
R0xSZW5kZXJidWZmZXIgPSAxNCwKLSAgICBXZWJHTFRleHR1cmUgPSAxNSwKLSAgICBXZWJHTFNo
YWRlciA9IDE2LAotICAgIFdlYkdMUHJvZ3JhbSA9IDE3LAotICAgIFdlYkdMVW5pZm9ybUxvY2F0
aW9uID0gMTgsCi0gICAgSW1hZ2VCaXRtYXAgPSAxOSwKLSAgICBXZWJHTFF1ZXJ5ID0gMjAsCi0g
ICAgV2ViR0xTYW1wbGVyID0gMjEsCi0gICAgV2ViR0xTeW5jID0gMjIsCi0gICAgV2ViR0xUcmFu
c2Zvcm1GZWVkYmFjayA9IDIzLAotICAgIFdlYkdMVmVydGV4QXJyYXlPYmplY3QgPSAyNCwKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKaW5kZXggNWU1NjViM2Q2
MTczN2NkYTFhYTBlY2Y2MWE2YjcwOTVmZDFhMGVlYy4uMmJkNmU0YzQ4ODQ3YTZlN2JiZTQ3NWE3
NTUyZWEwZWZiZmQ1NzQ4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5jcHAKQEAgLTI2LDU2ICsyNiw2OSBAQAog
I2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckNhbnZhc0FnZW50LmgiCiAK
KyNpbmNsdWRlICJDYW52YXNCYXNlLmgiCisjaW5jbHVkZSAiQ2FudmFzR3JhZGllbnQuaCIKKyNp
bmNsdWRlICJDYW52YXNQYXR0ZXJuLmgiCiAjaW5jbHVkZSAiQ2FudmFzUmVuZGVyaW5nQ29udGV4
dC5oIgogI2luY2x1ZGUgIkNhbnZhc1JlbmRlcmluZ0NvbnRleHQyRC5oIgorI2luY2x1ZGUgIkRP
TU1hdHJpeDJESW5pdC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVu
dC5oIgogI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCisjaW5jbHVk
ZSAiR1BVQ2FudmFzQ29udGV4dC5oIgogI2luY2x1ZGUgIkhUTUxDYW52YXNFbGVtZW50LmgiCisj
aW5jbHVkZSAiSFRNTEltYWdlRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQu
aCIKICNpbmNsdWRlICJJbWFnZUJpdG1hcC5oIgogI2luY2x1ZGUgIkltYWdlQml0bWFwUmVuZGVy
aW5nQ29udGV4dC5oIgorI2luY2x1ZGUgIkltYWdlRGF0YS5oIgogI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTUFnZW50LmgiCisjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yU2hhZGVyUHJvZ3JhbS5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdB
Z2VudHMuaCIKICNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgorI2luY2x1ZGUgIk9mZnNjcmVlbkNh
bnZhcy5oIgorI2luY2x1ZGUgIlBhdGgyRC5oIgogI2luY2x1ZGUgIlNjcmlwdFN0YXRlLmgiCiAj
aW5jbHVkZSAiU3RyaW5nQWRhcHRvcnMuaCIKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVu
dGlmaWVyc0ZhY3RvcnkuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlw
dC5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgot
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sT2JqZWN0cy5oPgotI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL0xvY2suaD4KLSNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi0jaWYg
RU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCi0jaW5jbHVkZSAiT2Zmc2NyZWVuQ2FudmFzLmgiCi0j
ZW5kaWYKLQotI2lmIEVOQUJMRShXRUJHTCkKKyNpbmNsdWRlICJUeXBlZE9NQ1NTSW1hZ2VWYWx1
ZS5oIgorI2luY2x1ZGUgIldlYkdMMlJlbmRlcmluZ0NvbnRleHQuaCIKKyNpbmNsdWRlICJXZWJH
TEJ1ZmZlci5oIgorI2luY2x1ZGUgIldlYkdMRnJhbWVidWZmZXIuaCIKICNpbmNsdWRlICJXZWJH
TFByb2dyYW0uaCIKKyNpbmNsdWRlICJXZWJHTFF1ZXJ5LmgiCisjaW5jbHVkZSAiV2ViR0xSZW5k
ZXJidWZmZXIuaCIKICNpbmNsdWRlICJXZWJHTFJlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRl
ICJXZWJHTFJlbmRlcmluZ0NvbnRleHRCYXNlLmgiCi0jZW5kaWYKLQotI2lmIEVOQUJMRShXRUJH
TDIpCi0jaW5jbHVkZSAiV2ViR0wyUmVuZGVyaW5nQ29udGV4dC5oIgotI2VuZGlmCi0KLSNpZiBF
TkFCTEUoV0VCR1BVKQotI2luY2x1ZGUgIkdQVUNhbnZhc0NvbnRleHQuaCIKKyNpbmNsdWRlICJX
ZWJHTFNhbXBsZXIuaCIKKyNpbmNsdWRlICJXZWJHTFNoYWRlci5oIgorI2luY2x1ZGUgIldlYkdM
U3luYy5oIgorI2luY2x1ZGUgIldlYkdMVGV4dHVyZS5oIgorI2luY2x1ZGUgIldlYkdMVHJhbnNm
b3JtRmVlZGJhY2suaCIKKyNpbmNsdWRlICJXZWJHTFVuaWZvcm1Mb2NhdGlvbi5oIgorI2luY2x1
ZGUgIldlYkdMVmVydGV4QXJyYXlPYmplY3QuaCIKICNpbmNsdWRlICJXZWJHUFVDb21wdXRlUGlw
ZWxpbmUuaCIKICNpbmNsdWRlICJXZWJHUFVEZXZpY2UuaCIKICNpbmNsdWRlICJXZWJHUFVQaXBl
bGluZS5oIgogI2luY2x1ZGUgIldlYkdQVVJlbmRlclBpcGVsaW5lLmgiCiAjaW5jbHVkZSAiV2Vi
R1BVU3dhcENoYWluLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1
ZmZlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyVmlldy5oPgorI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50aWZpZXJzRmFjdG9yeS5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9yUHJvdG9jb2xPYmplY3RzLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1R5cGVkQXJyYXlzLmg+CisjaW5jbHVkZSA8
d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9M
b2NrLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTI4OSw3ICszMDIsNyBAQCBQcm90b2NvbDo6RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JD
YW52YXNBZ2VudDo6c3RhcnRSZWNvcmRpbmcoY29uc3QgUHJvdG9jbwogICAgIGlmICghY29udGV4
dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9zKTsKIAot
ICAgIGlmIChjb250ZXh0LT5jYWxsVHJhY2luZ0FjdGl2ZSgpKQorICAgIGlmIChjb250ZXh0LT5o
YXNBY3RpdmVJbnNwZWN0b3JDYW52YXNDYWxsVHJhY2VyKCkpCiAgICAgICAgIHJldHVybiBtYWtl
VW5leHBlY3RlZCgiQWxyZWFkeSByZWNvcmRpbmcgY2FudmFzIl9zKTsKIAogICAgIFJlY29yZGlu
Z09wdGlvbnMgcmVjb3JkaW5nT3B0aW9uczsKQEAgLTMxNiw3ICszMjksNyBAQCBQcm90b2NvbDo6
RXJyb3JTdHJpbmdPcjx2b2lkPiBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3RvcFJlY29yZGluZyhj
b25zdCBQcm90b2NvbAogICAgIGlmICghY29udGV4dCkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4
cGVjdGVkKCJOb3Qgc3VwcG9ydGVkIl9zKTsKIAotICAgIGlmICghY29udGV4dC0+Y2FsbFRyYWNp
bmdBY3RpdmUoKSkKKyAgICBpZiAoIWNvbnRleHQtPmhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0Nh
bGxUcmFjZXIoKSkKICAgICAgICAgcmV0dXJuIG1ha2VVbmV4cGVjdGVkKCJOb3QgcmVjb3JkaW5n
IGNhbnZhcyJfcyk7CiAKICAgICBkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZSgqY29udGV4
dCwgdHJ1ZSk7CkBAIC00NjIsNTMgKzQ3NSw2IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OmRpZENoYW5nZUNhbnZhc01lbW9yeShDYW52YXNSZW5kZXJpbmdDb250ZXh0JiBjb250ZXh0CiAg
ICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5jYW52YXNNZW1vcnlDaGFuZ2VkKGluc3BlY3Rv
ckNhbnZhcy0+aWRlbnRpZmllcigpLCBub2RlLT5tZW1vcnlDb3N0KCkpOwogfQogCi12b2lkIElu
c3BlY3RvckNhbnZhc0FnZW50OjpyZWNvcmRDYW52YXNBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29u
dGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiBwYXJhbWV0ZXJzKQot
ewotICAgIGF1dG8gaW5zcGVjdG9yQ2FudmFzID0gZmluZEluc3BlY3RvckNhbnZhcyhjYW52YXNS
ZW5kZXJpbmdDb250ZXh0KTsKLSAgICBBU1NFUlQoaW5zcGVjdG9yQ2FudmFzKTsKLSAgICBpZiAo
IWluc3BlY3RvckNhbnZhcykKLSAgICAgICAgcmV0dXJuOwotCi0gICAgQVNTRVJUKGNhbnZhc1Jl
bmRlcmluZ0NvbnRleHQuY2FsbFRyYWNpbmdBY3RpdmUoKSk7Ci0gICAgaWYgKCFjYW52YXNSZW5k
ZXJpbmdDb250ZXh0LmNhbGxUcmFjaW5nQWN0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IC8vIE9ubHkgZW5xdWV1ZSBvbmUgbWljcm90YXNrIGZvciBhbGwgYWN0aXZlbHkgcmVjb3JkaW5n
IGNhbnZhc2VzLgotICAgIGlmIChtX3JlY29yZGluZ0NhbnZhc0lkZW50aWZpZXJzLmlzRW1wdHko
KSkgewotICAgICAgICBpZiAoYXV0byogc2NyaXB0RXhlY3V0aW9uQ29udGV4dCA9IGluc3BlY3Rv
ckNhbnZhcy0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKSB7Ci0gICAgICAgICAgICBzY3JpcHRF
eGVjdXRpb25Db250ZXh0LT5ldmVudExvb3AoKS5xdWV1ZU1pY3JvdGFzayhbd2Vha1RoaXMgPSBt
YWtlV2Vha1B0cigqdGhpcyldIHsKLSAgICAgICAgICAgICAgICBpZiAoIXdlYWtUaGlzKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBhdXRvJiBjYW52YXNB
Z2VudCA9ICp3ZWFrVGhpczsKLQotICAgICAgICAgICAgICAgIGF1dG8gaWRlbnRpZmllcnMgPSBj
b3B5VG9WZWN0b3IoY2FudmFzQWdlbnQubV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycyk7Ci0g
ICAgICAgICAgICAgICAgZm9yIChhdXRvJiBpZGVudGlmaWVyIDogaWRlbnRpZmllcnMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgYXV0byBpbnNwZWN0b3JDYW52YXMgPSBjYW52YXNBZ2VudC5tX2lk
ZW50aWZpZXJUb0luc3BlY3RvckNhbnZhcy5nZXQoaWRlbnRpZmllcik7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghaW5zcGVjdG9yQ2FudmFzKQotICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7Ci0KLSAgICAgICAgICAgICAgICAgICAgYXV0byogY2FudmFzUmVuZGVyaW5nQ29udGV4
dCA9IGluc3BlY3RvckNhbnZhcy0+Y2FudmFzQ29udGV4dCgpOwotICAgICAgICAgICAgICAgICAg
ICBBU1NFUlQoY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMjAxNjUxPiBXZWIgSW5zcGVjdG9yOiBDYW52
YXM6IHN1cHBvcnQgY2FudmFzIHJlY29yZGluZ3MgZm9yIFdlYkdQVURldmljZQotCi0gICAgICAg
ICAgICAgICAgICAgIGlmIChjYW52YXNSZW5kZXJpbmdDb250ZXh0LT5jYWxsVHJhY2luZ0FjdGl2
ZSgpKQotICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQuZGlkRmluaXNoUmVjb3Jk
aW5nQ2FudmFzRnJhbWUoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOwotICAgICAgICAgICAgICAg
IH0KLQotICAgICAgICAgICAgICAgIGNhbnZhc0FnZW50Lm1fcmVjb3JkaW5nQ2FudmFzSWRlbnRp
ZmllcnMuY2xlYXIoKTsKLSAgICAgICAgICAgIH0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
bV9yZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycy5hZGQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlm
aWVyKCkpOwotCi0gICAgaW5zcGVjdG9yQ2FudmFzLT5yZWNvcmRBY3Rpb24obmFtZSwgV1RGTW92
ZShwYXJhbWV0ZXJzKSk7Ci0KLSAgICBpZiAoIWluc3BlY3RvckNhbnZhcy0+aGFzQnVmZmVyU3Bh
Y2UoKSkKLSAgICAgICAgZGlkRmluaXNoUmVjb3JkaW5nQ2FudmFzRnJhbWUoY2FudmFzUmVuZGVy
aW5nQ29udGV4dCwgdHJ1ZSk7Ci19Ci0KIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmNhbnZh
c0NoYW5nZWQoQ2FudmFzQmFzZSYgY2FudmFzQmFzZSwgY29uc3QgRmxvYXRSZWN0JikKIHsKICAg
ICBhdXRvKiBjb250ZXh0ID0gY2FudmFzQmFzZS5yZW5kZXJpbmdDb250ZXh0KCk7CkBAIC01Mzks
NyArNTA1LDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6Y2FudmFzRGVzdHJveWVkKENh
bnZhc0Jhc2UmIGNhbnZhc0Jhc2UpCiAKIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6OmRpZEZp
bmlzaFJlY29yZGluZ0NhbnZhc0ZyYW1lKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmIGNvbnRleHQs
IGJvb2wgZm9yY2VEaXNwYXRjaCkKIHsKLSAgICBpZiAoIWNvbnRleHQuY2FsbFRyYWNpbmdBY3Rp
dmUoKSkKKyAgICBpZiAoIWNvbnRleHQuaGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cigpKQogICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGluc3BlY3RvckNhbnZhcyA9IGZpbmRJ
bnNwZWN0b3JDYW52YXMoY29udGV4dCk7CkBAIC03MTUsNiArNjgxLDYwIEBAIHZvaWQgSW5zcGVj
dG9yQ2FudmFzQWdlbnQ6OndpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUm
IHBpcGVsaW5lKQogfQogI2VuZGlmIC8vIEVOQUJMRShXRUJHUFUpCiAKKyNkZWZpbmUgUFJPQ0VT
U19BUkdVTUVOVF9ERUZJTklUSU9OKEFyZ3VtZW50VHlwZSkgXAorT3B0aW9uYWw8SW5zcGVjdG9y
Q2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1lbnQ+IEluc3BlY3RvckNhbnZhc0FnZW50
Ojpwcm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5n
Q29udGV4dCwgQXJndW1lbnRUeXBlIGFyZ3VtZW50KSBcCit7IFwKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7IFwK
KyAgICBBU1NFUlQoaW5zcGVjdG9yQ2FudmFzKTsgXAorICAgIHJldHVybiBpbnNwZWN0b3JDYW52
YXMtPnByb2Nlc3NBcmd1bWVudChhcmd1bWVudCk7IFwKK30gXAorLy8gZW5kIG9mIFBST0NFU1Nf
QVJHVU1FTlRfREVGSU5JVElPTgorICAgIEZPUl9FQUNIX0lOU1BFQ1RPUl9DQU5WQVNfQ0FMTF9U
UkFDRVJfQVJHVU1FTlQoUFJPQ0VTU19BUkdVTUVOVF9ERUZJTklUSU9OKQorI3VuZGVmIFBST0NF
U1NfQVJHVU1FTlRfREVGSU5JVElPTgorCit2b2lkIEluc3BlY3RvckNhbnZhc0FnZW50OjpyZWNv
cmRBY3Rpb24oQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYgY2FudmFzUmVuZGVyaW5nQ29udGV4dCwg
U3RyaW5nJiYgbmFtZSwgSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcjo6UHJvY2Vzc2VkQXJndW1l
bnRzJiYgYXJndW1lbnRzKQoreworICAgIEFTU0VSVChjYW52YXNSZW5kZXJpbmdDb250ZXh0Lmhh
c0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIoKSk7CisKKyAgICBhdXRvIGluc3BlY3Rv
ckNhbnZhcyA9IGZpbmRJbnNwZWN0b3JDYW52YXMoY2FudmFzUmVuZGVyaW5nQ29udGV4dCk7Cisg
ICAgQVNTRVJUKGluc3BlY3RvckNhbnZhcyk7CisKKyAgICAvLyBPbmx5IGVucXVldWUgb25lIG1p
Y3JvdGFzayBmb3IgYWxsIGFjdGl2ZWx5IHJlY29yZGluZyBjYW52YXNlcy4KKyAgICBpZiAobV9y
ZWNvcmRpbmdDYW52YXNJZGVudGlmaWVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSkgeworICAgICAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZXZlbnRM
b29wKCkucXVldWVNaWNyb3Rhc2soW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpXSB7Cisg
ICAgICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgYXV0byYgY2FudmFzQWdlbnQgPSAqd2Vha1RoaXM7CisKKyAg
ICAgICAgICAgICAgICBhdXRvIGlkZW50aWZpZXJzID0gY29weVRvVmVjdG9yKGNhbnZhc0FnZW50
Lm1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnMpOworICAgICAgICAgICAgICAgIGZvciAoYXV0
byYgaWRlbnRpZmllciA6IGlkZW50aWZpZXJzKSB7CisgICAgICAgICAgICAgICAgICAgIGF1dG8g
aW5zcGVjdG9yQ2FudmFzID0gY2FudmFzQWdlbnQubV9pZGVudGlmaWVyVG9JbnNwZWN0b3JDYW52
YXMuZ2V0KGlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3BlY3RvckNh
bnZhcykKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAg
ICAgICAgIGF1dG8qIGNhbnZhc1JlbmRlcmluZ0NvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMtPmNh
bnZhc0NvbnRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUKGNhbnZhc1JlbmRlcmlu
Z0NvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0
Lm9yZy9iLzIwMTY1MT4gV2ViIEluc3BlY3RvcjogQ2FudmFzOiBzdXBwb3J0IGNhbnZhcyByZWNv
cmRpbmdzIGZvciBXZWJHUFVEZXZpY2UKKworICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFz
UmVuZGVyaW5nQ29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcigpKQor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzQWdlbnQuZGlkRmluaXNoUmVjb3JkaW5nQ2Fu
dmFzRnJhbWUoKmNhbnZhc1JlbmRlcmluZ0NvbnRleHQpOworICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIGNhbnZhc0FnZW50Lm1fcmVjb3JkaW5nQ2FudmFzSWRlbnRpZmllcnMu
Y2xlYXIoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorCisgICAgbV9yZWNv
cmRpbmdDYW52YXNJZGVudGlmaWVycy5hZGQoaW5zcGVjdG9yQ2FudmFzLT5pZGVudGlmaWVyKCkp
OworCisgICAgaW5zcGVjdG9yQ2FudmFzLT5yZWNvcmRBY3Rpb24oV1RGTW92ZShuYW1lKSwgV1RG
TW92ZShhcmd1bWVudHMpKTsKKworICAgIGlmICghaW5zcGVjdG9yQ2FudmFzLT5oYXNCdWZmZXJT
cGFjZSgpKQorICAgICAgICBkaWRGaW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShjYW52YXNSZW5k
ZXJpbmdDb250ZXh0LCB0cnVlKTsKK30KKwogdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6c3Rh
cnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMsIFByb3RvY29sOjpS
ZWNvcmRpbmc6OkluaXRpYXRvciBpbml0aWF0b3IsIFJlY29yZGluZ09wdGlvbnMmJiByZWNvcmRp
bmdPcHRpb25zKQogewogICAgIGF1dG8qIGNvbnRleHQgPSBpbnNwZWN0b3JDYW52YXMuY2FudmFz
Q29udGV4dCgpOwpAQCAtNzMyLDcgKzc1Miw3IEBAIHZvaWQgSW5zcGVjdG9yQ2FudmFzQWdlbnQ6
OnN0YXJ0UmVjb3JkaW5nKEluc3BlY3RvckNhbnZhcyYgaW5zcGVjdG9yQ2FudmFzLCBQcm90CiAg
ICAgKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoY29udGV4dC0+Y2FsbFRyYWNpbmdBY3Rp
dmUoKSkKKyAgICBpZiAoY29udGV4dC0+aGFzQWN0aXZlSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNl
cigpKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnNwZWN0b3JDYW52YXMucmVzZXRSZWNvcmRp
bmdEYXRhKCk7CkBAIC03NDIsNyArNzYyLDcgQEAgdm9pZCBJbnNwZWN0b3JDYW52YXNBZ2VudDo6
c3RhcnRSZWNvcmRpbmcoSW5zcGVjdG9yQ2FudmFzJiBpbnNwZWN0b3JDYW52YXMsIFByb3QKICAg
ICAgICAgaW5zcGVjdG9yQ2FudmFzLnNldEJ1ZmZlckxpbWl0KHJlY29yZGluZ09wdGlvbnMubWVt
b3J5TGltaXQudmFsdWUoKSk7CiAgICAgaWYgKHJlY29yZGluZ09wdGlvbnMubmFtZSkKICAgICAg
ICAgaW5zcGVjdG9yQ2FudmFzLnNldFJlY29yZGluZ05hbWUocmVjb3JkaW5nT3B0aW9ucy5uYW1l
LnZhbHVlKCkpOwotICAgIGNvbnRleHQtPnNldENhbGxUcmFjaW5nQWN0aXZlKHRydWUpOworICAg
IGNvbnRleHQtPnNldEhhc0FjdGl2ZUluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXIodHJ1ZSk7CiAK
ICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVjb3JkaW5nU3RhcnRlZChpbnNwZWN0b3JDYW52
YXMuaWRlbnRpZmllcigpLCBpbml0aWF0b3IpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JDYW52YXNBZ2VudC5oCmluZGV4IDg2YmRiNTEy
NTY5YTMxMWY3YTI1MDg5NWU4ZmZiYzlkZDllYmNkYzAuLjUwYjMzNmM4OWI2NmE1YWNkZmNhZGM2
ZDFjNzQ5NTlmZmQ3ZTM3NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQ2FudmFzQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckNhbnZhc0FnZW50LmgKQEAgLTI1LDE2ICsyNSwxOCBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkNhbGxUcmFjZXJUeXBlcy5oIgogI2luY2x1ZGUgIkNh
bnZhc0Jhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JDYW52YXMuaCIKKyNpbmNsdWRlICJJbnNw
ZWN0b3JDYW52YXNDYWxsVHJhY2VyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNl
LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0
b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8aW5pdGlhbGl6ZXJfbGlzdD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1
ZGUgPHd0Zi9XZWFrUHRyLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5h
bWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwpAQCAtOTgs
NyArMTAwLDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlQ1NTQ2FudmFzQ2xpZW50Tm9k
ZXMoQ2FudmFzQmFzZSYpOwogICAgIHZvaWQgZGlkQ3JlYXRlQ2FudmFzUmVuZGVyaW5nQ29udGV4
dChDYW52YXNSZW5kZXJpbmdDb250ZXh0Jik7CiAgICAgdm9pZCBkaWRDaGFuZ2VDYW52YXNNZW1v
cnkoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYpOwotICAgIHZvaWQgcmVjb3JkQ2FudmFzQWN0aW9u
KENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBjb25zdCBTdHJpbmcmLCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8UmVjb3JkQ2FudmFzQWN0aW9uVmFyaWFudD4mJiA9IHsgfSk7CiAgICAgdm9pZCBkaWRG
aW5pc2hSZWNvcmRpbmdDYW52YXNGcmFtZShDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgYm9vbCBm
b3JjZURpc3BhdGNoID0gZmFsc2UpOwogICAgIHZvaWQgY29uc29sZVN0YXJ0UmVjb3JkaW5nQ2Fu
dmFzKENhbnZhc1JlbmRlcmluZ0NvbnRleHQmLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpK
U09iamVjdCogb3B0aW9ucyk7CiAgICAgdm9pZCBjb25zb2xlU3RvcFJlY29yZGluZ0NhbnZhcyhD
YW52YXNSZW5kZXJpbmdDb250ZXh0Jik7CkBAIC0xMTcsNiArMTE4LDE0IEBAIHB1YmxpYzoKICAg
ICB2b2lkIHdpbGxEZXN0cm95V2ViR1BVUGlwZWxpbmUoV2ViR1BVUGlwZWxpbmUmKTsKICNlbmRp
ZiAvLyBFTkFCTEUoV0VCR1BVKQogCisgICAgLy8gSW5zcGVjdG9yQ2FudmFzQ2FsbFRyYWNlcgor
I2RlZmluZSBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OKEFyZ3VtZW50VHlwZSkgXAorICAg
IE9wdGlvbmFsPEluc3BlY3RvckNhbnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50PiBw
cm9jZXNzQXJndW1lbnQoQ2FudmFzUmVuZGVyaW5nQ29udGV4dCYsIEFyZ3VtZW50VHlwZSk7IFwK
Ky8vIGVuZCBvZiBQUk9DRVNTX0FSR1VNRU5UX0RFQ0xBUkFUSU9OCisgICAgRk9SX0VBQ0hfSU5T
UEVDVE9SX0NBTlZBU19DQUxMX1RSQUNFUl9BUkdVTUVOVChQUk9DRVNTX0FSR1VNRU5UX0RFQ0xB
UkFUSU9OKQorI3VuZGVmIFBST0NFU1NfQVJHVU1FTlRfREVDTEFSQVRJT04KKyAgICB2b2lkIHJl
Y29yZEFjdGlvbihDYW52YXNSZW5kZXJpbmdDb250ZXh0JiwgU3RyaW5nJiYsIEluc3BlY3RvckNh
bnZhc0NhbGxUcmFjZXI6OlByb2Nlc3NlZEFyZ3VtZW50cyYmID0geyB9KTsKKwogcHJpdmF0ZToK
ICAgICBzdHJ1Y3QgUmVjb3JkaW5nT3B0aW9ucyB7CiAgICAgICAgIE9wdGlvbmFsPGxvbmc+IGZy
YW1lQ291bnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRUaHJl
YWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFi
bGVMb2FkZXIuY3BwCmluZGV4IDUxM2E1MmZlMWI5MWZmYWZlODUzN2UyMWI4NmJlNWI2ZDhiNzU1
MzUuLjliNjNlNDY4ODAxYTBkZmJlODVkMDA5MGQ2ZDk1YjcyMDM1NDEwZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwCkBAIC00
MCw3ICs0MCw5IEBACiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5o
IgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCisjaW5jbHVk
ZSAiRG9jdW1lbnRMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIkZyYW1l
TG9hZGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVk
ZSAiTGVnYWN5U2NoZW1lUmVnaXN0cnkuaCIKICNpbmNsdWRlICJMb2FkVGltaW5nLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ltYWdlTG9hZGVyLmNwcAppbmRleCAwYWNmNWY0ODkzNTEwY2U3ZjdmM2Zj
NTU4YTdkNTA1M2Q1MWM0MjNmLi5kMWFhMzM1NDc4NjYwY2Q4YjNhYmQwMmMzYmVjYzAwOTAyMDdl
MWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSW1hZ2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9JbWFnZUxvYWRlci5jcHAKQEAgLTM0LDYgKzM0LDcg
QEAKICNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVk
ZSAiRnJhbWVMb2FkZXIuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRl
ICJIVE1MUGFyc2VySWRpb21zLmgiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
VGV4dFRyYWNrTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2Fk
ZXIuY3BwCmluZGV4IGY0ZmU3MGYxMjYzNzNiNDAwZTYwMzQ3ODg1ZjI2ZmU5YmU2MzNjMTcuLjhj
YzNjNTY4YzQzNzk2YWM2MWIzMDk3NTQ3YTg5ZWY4MTJkOThkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9UZXh0VHJhY2tMb2FkZXIuY3BwCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAi
Q2FjaGVkVGV4dFRyYWNrLmgiCiAjaW5jbHVkZSAiQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmgi
CiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1l
bnRhdGlvbi5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGY5
NTIwMWQxMjYwODYzYWNiYWMyOTNmYjFmOTViZjFiNWJhZjJiYjYuLjUxMGU0MGE1ZTUwZTkyMjMx
NGZmYjg1NTYxODg5YzlkMTI5ZTFiNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcApAQCAtNjUsNiArNjUs
NyBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2luY2x1ZGUgIkZ1bGxzY3JlZW5NYW5hZ2Vy
LmgiCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKKyNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50
LmgiCiAjaW5jbHVkZSAiSFRNTE1lZGlhRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxUZXh0QXJl
YUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5oIgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29y
ZGluZy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZWNv
cmRpbmcuanMKaW5kZXggNTEzZWY3NmFmNTYxNDI5MWUyODY0YWFlYTU4ZTc0N2M2OGE4NGZhZi4u
OTc1ZDg5YjUzYTBlZTA0NTE2NWRhMmFjYmUxMGM0OTE3OGQzMWU5ZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZy5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nLmpz
CkBAIC04OTgsNyArODk4LDcgQEAgV0kuUmVjb3JkaW5nLlR5cGUgPSB7CiAgICAgQ2FudmFzV2Vi
R0wyOiAiY2FudmFzLXdlYmdsMiIsCiB9OwogCi0vLyBLZWVwIHRoaXMgaW4gc3luYyB3aXRoIFdl
YkNvcmU6OlJlY29yZGluZ1N3aXp6bGVUeXBlcy4KKy8vIEtlZXAgdGhpcyBpbiBzeW5jIHdpdGgg
V2ViQ29yZTo6UmVjb3JkaW5nU3dpenpsZVR5cGUuCiBXSS5SZWNvcmRpbmcuU3dpenpsZSA9IHsK
ICAgICBOb25lOiAwLAogICAgIE51bWJlcjogMSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmdBY3Rpb24uanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVjb3JkaW5nQWN0aW9uLmpzCmlu
ZGV4IGYzMWNkMzNkMzIzN2RmM2JkYjQyZjE2OTI1OTc1MDRmODEwYjlmZWIuLjdkOGIzMWRkMWY3
ODgwYTdlYmM4ZDY4MTNjOWQ1ODE2NTY2ODczODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZWNvcmRpbmdBY3Rpb24uanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1JlY29yZGluZ0FjdGlvbi5q
cwpAQCAtMzMsNyArMzMsNyBAQCBXSS5SZWNvcmRpbmdBY3Rpb24gPSBjbGFzcyBSZWNvcmRpbmdB
Y3Rpb24gZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fcGF5bG9hZFBhcmFtZXRlcnMg
PSBwYXJhbWV0ZXJzOwogICAgICAgICB0aGlzLl9wYXlsb2FkU3dpenpsZVR5cGVzID0gc3dpenps
ZVR5cGVzOwogICAgICAgICB0aGlzLl9wYXlsb2FkVHJhY2UgPSB0cmFjZTsKLSAgICAgICAgdGhp
cy5fcGF5bG9hZFNuYXBzaG90ID0gc25hcHNob3QgfHwgLTE7CisgICAgICAgIHRoaXMuX3BheWxv
YWRTbmFwc2hvdCA9IHNuYXBzaG90ID8/IC0xOwogCiAgICAgICAgIHRoaXMuX25hbWUgPSAiIjsK
ICAgICAgICAgdGhpcy5fcGFyYW1ldGVycyA9IFtdOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGQ5NTQzMDMyNThkYTI5MWYx
ZmQ2YTRlMWMzZGU2MzE5YzMwOWE0NjcuLjhkOTkxYmRlYjVkOWY2NDU1OWY5NzJkMzg0ZjlkNTI4
YmRmY2Y5YjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMS0wMy0wMyAgRGV2aW4gUm91c3Nv
ICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYFJlY29yZENh
bnZhc0FjdGlvblZhcmlhbnRgIGNhdXNlcyBhIGh1Z2Ugc3ltYm9sIHRvIGJlIGNyZWF0ZWQgaW4g
V2ViQ29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjIyNjM5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MzcyODA1Nz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBUaW0gSG9ydG9uIGFuZCBCcmlhbiBCdXJnLgorCisgICAgICAgICogaW5zcGVjdG9y
L2NhbnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5qczoKKyAgICAgICAgKiBpbnNwZWN0
b3IvY2FudmFzL3JlY29yZGluZy13ZWJnbDItZnVsbC1leHBlY3RlZC50eHQ6CisgICAgICAgIFVz
ZSBhbiBhY3R1YWwgYHVuaWZvcm1gIG5hbWUgaW5zdGVhZCBvZiBhIHJhbmRvbSB0ZXN0IHN0cmlu
Zy4KKwogMjAyMS0wMy0wMiAgQ2hyaXMgR2FtYnJlbGwgIDxjZ2FtYnJlbGxAYXBwbGUuY29tPgog
CiAgICAgICAgIFtMYXlvdXRUZXN0c10gQ29udmVydCBodHRwL3Rlc3RzL2Rvd25sb2FkIGNvbnZl
cnQgUEhQIHRvIFB5dGhvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZh
cy9yZWNvcmRpbmctd2ViZ2wyLWZ1bGwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2NhbnZhcy9yZWNvcmRpbmctd2ViZ2wyLWZ1bGwtZXhwZWN0ZWQudHh0CmluZGV4IDdhOTVl
NWNiOWVlMDE0MGExMzk2ZWUxZDUyN2JmYjBiZGMzZjM4OWYuLmI1YWJmNDZjMTcwN2JiYjNkY2M0
ZjUzMmM4OTY0ODc0MmRlNTMwMmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9j
YW52YXMvcmVjb3JkaW5nLXdlYmdsMi1mdWxsLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY2FudmFzL3JlY29yZGluZy13ZWJnbDItZnVsbC1leHBlY3RlZC50eHQKQEAg
LTUyMCw4ICs1MjAsOCBAQCBmcmFtZXM6CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24p
CiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDcyOiAoZHVyYXRpb24pCi0gICAg
MDogZ2V0VW5pZm9ybSgwKQotICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xQcm9ncmFtXQorICAg
IDA6IGdldFVuaWZvcm0oMCwgMCkKKyAgICAgIHN3aXp6bGVUeXBlczogW1dlYkdMUHJvZ3JhbSwg
V2ViR0xVbmlmb3JtTG9jYXRpb25dCiAgICAgICB0cmFjZToKICAgICAgICAgMDogZ2V0VW5pZm9y
bQogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQpAQCAtNzI5LDEzNCArNzI5LDEzNCBA
QCBmcmFtZXM6CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4
ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEwMjogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0xZigx
KQotICAgICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyXQorICAgIDA6IHVuaWZvcm0xZigwLCAxKQor
ICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlcl0KICAgICAg
IHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtMWYKICAgICAgICAgMTogKGFub255bW91cyBmdW5j
dGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTAzOiAoZHVyYXRpb24p
Ci0gICAgMDogdW5pZm9ybTFmdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0K
KyAgICAwOiB1bmlmb3JtMWZ2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZv
cm1Mb2NhdGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3Jt
MWZ2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVG
cmFtZUZ1bmN0aW9uCiAgIDEwNDogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0xaSgxKQotICAg
ICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyXQorICAgIDA6IHVuaWZvcm0xaSgwLCAxKQorICAgICAg
c3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlcl0KICAgICAgIHRyYWNl
OgogICAgICAgICAwOiB1bmlmb3JtMWkKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikK
ICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTA1OiAoZHVyYXRpb24pCi0gICAg
MDogdW5pZm9ybTFpdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0KKyAgICAw
OiB1bmlmb3JtMWl2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtMWl2CiAg
ICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1
bmN0aW9uCiAgIDEwNjogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0yZigxLCAyKQotICAgICAg
c3dpenpsZVR5cGVzOiBbTnVtYmVyLCBOdW1iZXJdCisgICAgMDogdW5pZm9ybTJmKDAsIDEsIDIp
CisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2NhdGlvbiwgTnVtYmVyLCBOdW1i
ZXJdCiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTJmCiAgICAgICAgIDE6IChhbm9u
eW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDEwNzog
KGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm0yZnYoMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5
cGVkQXJyYXldCisgICAgMDogdW5pZm9ybTJmdigwLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBb
V2ViR0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAg
MDogdW5pZm9ybTJmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAy
OiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMDg6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3Jt
MmkoMSwgMikKLSAgICAgIHN3aXp6bGVUeXBlczogW051bWJlciwgTnVtYmVyXQorICAgIDA6IHVu
aWZvcm0yaSgwLCAxLCAyKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRp
b24sIE51bWJlciwgTnVtYmVyXQogICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm0yaQog
ICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBleGVjdXRlRnJhbWVG
dW5jdGlvbgogICAxMDk6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtMml2KDApCi0gICAgICBz
d2l6emxlVHlwZXM6IFtUeXBlZEFycmF5XQorICAgIDA6IHVuaWZvcm0yaXYoMCwgMCkKKyAgICAg
IHN3aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBUeXBlZEFycmF5XQogICAgICAg
dHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm0yaXYKICAgICAgICAgMTogKGFub255bW91cyBmdW5j
dGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTEwOiAoZHVyYXRpb24p
Ci0gICAgMDogdW5pZm9ybTNmKDEsIDIsIDMpCi0gICAgICBzd2l6emxlVHlwZXM6IFtOdW1iZXIs
IE51bWJlciwgTnVtYmVyXQorICAgIDA6IHVuaWZvcm0zZigwLCAxLCAyLCAzKQorICAgICAgc3dp
enpsZVR5cGVzOiBbV2ViR0xVbmlmb3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVyLCBOdW1iZXJd
CiAgICAgICB0cmFjZToKICAgICAgICAgMDogdW5pZm9ybTNmCiAgICAgICAgIDE6IChhbm9ueW1v
dXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9uCiAgIDExMTogKGR1
cmF0aW9uKQotICAgIDA6IHVuaWZvcm0zZnYoMCkKLSAgICAgIHN3aXp6bGVUeXBlczogW1R5cGVk
QXJyYXldCisgICAgMDogdW5pZm9ybTNmdigwLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2Vi
R0xVbmlmb3JtTG9jYXRpb24sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAgMDog
dW5pZm9ybTNmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAgICAgICAyOiBl
eGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTI6IChkdXJhdGlvbikKLSAgICAwOiB1bmlmb3JtM2ko
MSwgMiwgMykKLSAgICAgIHN3aXp6bGVUeXBlczogW051bWJlciwgTnVtYmVyLCBOdW1iZXJdCisg
ICAgMDogdW5pZm9ybTNpKDAsIDEsIDIsIDMpCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVu
aWZvcm1Mb2NhdGlvbiwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KICAgICAgIHRyYWNlOgogICAg
ICAgICAwOiB1bmlmb3JtM2kKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAgICAg
ICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTEzOiAoZHVyYXRpb24pCi0gICAgMDogdW5p
Zm9ybTNpdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0KKyAgICAwOiB1bmlm
b3JtM2l2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2NhdGlvbiwg
VHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtM2l2CiAgICAgICAg
IDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0aW9u
CiAgIDExNDogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm00ZigxLCAyLCAzLCA0KQotICAgICAg
c3dpenpsZVR5cGVzOiBbTnVtYmVyLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyXQorICAgIDA6IHVu
aWZvcm00ZigwLCAxLCAyLCAzLCA0KQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlmb3Jt
TG9jYXRpb24sIE51bWJlciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KICAgICAgIHRyYWNlOgog
ICAgICAgICAwOiB1bmlmb3JtNGYKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikKICAg
ICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTE1OiAoZHVyYXRpb24pCi0gICAgMDog
dW5pZm9ybTRmdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0KKyAgICAwOiB1
bmlmb3JtNGZ2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2NhdGlv
biwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtNGZ2CiAgICAg
ICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1bmN0
aW9uCiAgIDExNjogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm00aSgxLCAyLCAzLCA0KQotICAg
ICAgc3dpenpsZVR5cGVzOiBbTnVtYmVyLCBOdW1iZXIsIE51bWJlciwgTnVtYmVyXQorICAgIDA6
IHVuaWZvcm00aSgwLCAxLCAyLCAzLCA0KQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlm
b3JtTG9jYXRpb24sIE51bWJlciwgTnVtYmVyLCBOdW1iZXIsIE51bWJlcl0KICAgICAgIHRyYWNl
OgogICAgICAgICAwOiB1bmlmb3JtNGkKICAgICAgICAgMTogKGFub255bW91cyBmdW5jdGlvbikK
ICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTE3OiAoZHVyYXRpb24pCi0gICAg
MDogdW5pZm9ybTRpdigwKQotICAgICAgc3dpenpsZVR5cGVzOiBbVHlwZWRBcnJheV0KKyAgICAw
OiB1bmlmb3JtNGl2KDAsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtNGl2CiAg
ICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCiAgICAgICAgIDI6IGV4ZWN1dGVGcmFtZUZ1
bmN0aW9uCiAgIDExODogKGR1cmF0aW9uKQotICAgIDA6IHVuaWZvcm1NYXRyaXgyZnYodHJ1ZSwg
MCkKLSAgICAgIHN3aXp6bGVUeXBlczogW0Jvb2xlYW4sIFR5cGVkQXJyYXldCisgICAgMDogdW5p
Zm9ybU1hdHJpeDJmdigwLCB0cnVlLCAwKQorICAgICAgc3dpenpsZVR5cGVzOiBbV2ViR0xVbmlm
b3JtTG9jYXRpb24sIEJvb2xlYW4sIFR5cGVkQXJyYXldCiAgICAgICB0cmFjZToKICAgICAgICAg
MDogdW5pZm9ybU1hdHJpeDJmdgogICAgICAgICAxOiAoYW5vbnltb3VzIGZ1bmN0aW9uKQogICAg
ICAgICAyOiBleGVjdXRlRnJhbWVGdW5jdGlvbgogICAxMTk6IChkdXJhdGlvbikKLSAgICAwOiB1
bmlmb3JtTWF0cml4M2Z2KHRydWUsIDApCi0gICAgICBzd2l6emxlVHlwZXM6IFtCb29sZWFuLCBU
eXBlZEFycmF5XQorICAgIDA6IHVuaWZvcm1NYXRyaXgzZnYoMCwgdHJ1ZSwgMCkKKyAgICAgIHN3
aXp6bGVUeXBlczogW1dlYkdMVW5pZm9ybUxvY2F0aW9uLCBCb29sZWFuLCBUeXBlZEFycmF5XQog
ICAgICAgdHJhY2U6CiAgICAgICAgIDA6IHVuaWZvcm1NYXRyaXgzZnYKICAgICAgICAgMTogKGFu
b255bW91cyBmdW5jdGlvbikKICAgICAgICAgMjogZXhlY3V0ZUZyYW1lRnVuY3Rpb24KICAgMTIw
OiAoZHVyYXRpb24pCi0gICAgMDogdW5pZm9ybU1hdHJpeDRmdih0cnVlLCAwKQotICAgICAgc3dp
enpsZVR5cGVzOiBbQm9vbGVhbiwgVHlwZWRBcnJheV0KKyAgICAwOiB1bmlmb3JtTWF0cml4NGZ2
KDAsIHRydWUsIDApCisgICAgICBzd2l6emxlVHlwZXM6IFtXZWJHTFVuaWZvcm1Mb2NhdGlvbiwg
Qm9vbGVhbiwgVHlwZWRBcnJheV0KICAgICAgIHRyYWNlOgogICAgICAgICAwOiB1bmlmb3JtTWF0
cml4NGZ2CiAgICAgICAgIDE6IChhbm9ueW1vdXMgZnVuY3Rpb24pCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY2FudmFzL3Jlc291cmNlcy9yZWNvcmRpbmctd2ViZ2wyLmpzIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NhbnZhcy9yZXNvdXJjZXMvcmVjb3JkaW5nLXdlYmdsMi5q
cwppbmRleCAzMTU4OGUyOTQyYjFlOWY5YzJiNDViOTZmNGY2ZmZhMWI4MTkxNDQwLi43N2I1OTg5
N2YyOTA2OGEzODhlODQ1OWQyZmZiZjFkNmRkYzhiMGYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvY2FudmFzL3Jlc291cmNlcy9yZWNvcmRpbmctd2ViZ2wyLmpzCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jYW52YXMvcmVzb3VyY2VzL3JlY29yZGluZy13ZWJnbDIuanMK
QEAgLTI2LDcgKzI2LDcgQEAgZnVuY3Rpb24gbG9hZCgpIHsKIAogICAgIGJ1ZmZlciA9IGNvbnRl
eHQuY3JlYXRlQnVmZmVyKCk7CiAgICAgZnJhbWVidWZmZXIgPSBjb250ZXh0LmNyZWF0ZUZyYW1l
YnVmZmVyKCk7Ci0gICAgdW5pZm9ybUxvY2F0aW9uID0gY29udGV4dC5nZXRVbmlmb3JtTG9jYXRp
b24ocHJvZ3JhbSwgInRlc3QiKTsKKyAgICB1bmlmb3JtTG9jYXRpb24gPSBjb250ZXh0LmdldFVu
aWZvcm1Mb2NhdGlvbihwcm9ncmFtLCAidGVzdFVuaWZvcm0iKTsKICAgICByZW5kZXJidWZmZXIg
PSBjb250ZXh0LmNyZWF0ZVJlbmRlcmJ1ZmZlcigpOwogICAgIHNoYWRlciA9IGNvbnRleHQuY3Jl
YXRlU2hhZGVyKGNvbnRleHQuVkVSVEVYX1NIQURFUik7CiAgICAgdGV4dHVyZSA9IGNvbnRleHQu
Y3JlYXRlVGV4dHVyZSgpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>