<?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>150269</bug_id>
          
          <creation_ts>2015-10-16 22:35:11 -0700</creation_ts>
          <short_desc>Enhance TextStream for logging, remove subclasses, log more things</short_desc>
          <delta_ts>2015-10-17 11:36:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>mmaxfield</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1134149</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-16 22:35:11 -0700</bug_when>
    <thetext>Enhance TextStream for logging, remove subclasses, log more things</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134150</commentid>
    <comment_count>1</comment_count>
      <attachid>263359</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-16 22:39:33 -0700</bug_when>
    <thetext>Created attachment 263359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134152</commentid>
    <comment_count>2</comment_count>
      <attachid>263361</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-16 23:10:14 -0700</bug_when>
    <thetext>Created attachment 263361
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134197</commentid>
    <comment_count>3</comment_count>
      <attachid>263361</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2015-10-17 11:01:42 -0700</bug_when>
    <thetext>Comment on attachment 263361
Patch

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

LGTM, but i&apos;ll wait for thorton to r+ it.

&gt; Source/WebCore/ChangeLog:58
&gt; +        * platform/graphics/ca/PlatformCAAnimation.cpp: Added.

Why did you make a new file for this?

&gt; Source/WebCore/CMakeLists.txt:2142
&gt; +    platform/animation/TimingFunction.cpp

Shouldn&apos;t there be additions for the new header files?

&gt; Source/WebCore/platform/animation/TimingFunction.cpp:1
&gt; +/*

Why did you make a new file for this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134200</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-17 11:06:46 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 263361 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=263361&amp;action=review
&gt; 
&gt; LGTM, but i&apos;ll wait for thorton to r+ it.
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:58
&gt; &gt; +        * platform/graphics/ca/PlatformCAAnimation.cpp: Added.
&gt; 
&gt; Why did you make a new file for this?

Because there was only the .h file, and I don&apos;t want PlatformCAAnimation.h pulling in TextStream.h.

&gt; &gt; Source/WebCore/CMakeLists.txt:2142
&gt; &gt; +    platform/animation/TimingFunction.cpp
&gt; 
&gt; Shouldn&apos;t there be additions for the new header files?

Header files are existing.

&gt; &gt; Source/WebCore/platform/animation/TimingFunction.cpp:1
&gt; &gt; +/*
&gt; 
&gt; Why did you make a new file for this?

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1134212</commentid>
    <comment_count>5</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2015-10-17 11:36:57 -0700</bug_when>
    <thetext>https://trac.webkit.org/r191243</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263359</attachid>
            <date>2015-10-16 22:39:33 -0700</date>
            <delta_ts>2015-10-16 23:10:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150269-20151016223852.patch</filename>
            <type>text/plain</type>
            <size>129578</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI2YmMxY2MyNjkxOTFm
NzUyMzY3ZmI2ODFiMDBkODRmYjc3ZjAzNy4uYWNiOTE2YjM5OWExNjM3Nzc3ODgzNmEwNjdiMzll
Yjg5OTk0ZGQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDE1LTEwLTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2UgVGV4
dFN0cmVhbSBmb3IgbG9nZ2luZywgcmVtb3ZlIHN1YmNsYXNzZXMsIGxvZyBtb3JlIHRoaW5ncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMjY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRo
ZSB2YXJpb3VzIFRleHRTdHJlYW0gc3ViY2xhc3NlcyB0aGF0IG9ubHkgZXhpc3RlZCB0byBzdXBw
b3J0IGluZGVudGluZywKKyAgICAgICAgYW5kIG91dHB1dCBhZGRpdGlvbmFsIHR5cGVzLiBBZGQg
b3V0cHV0IGZvciBtb3JlIFdlYkNvcmUgYW5kIFdlYktpdDIgdHlwZXMsIGFuZAorICAgICAgICBq
dXN0IHVzZSBUZXh0U3RyZWFtIGV2ZXJ5d2hlcmUuCisgICAgICAgIAorICAgICAgICBUZXh0U3Ry
ZWFtIGlzIGVuaGFuY2UgdG8gc3VwcG9ydCBncm91cGluZyAob3BlbiBwYXJlbiBhbmQgaW50ZW50
KSwgd2l0aCBhIAorICAgICAgICBzdGFjay1iYXNlZCBjbGFzcyB0byBvcGVuL2VuZCBhIGdyb3Vw
LgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlIHNvbWUgU1ZHLXNwZWNpZmljIGR1cGxpY2F0ZSBv
dXRwdXQgZnVuY3Rpb25zLgorICAgICAgICAKKyAgICAgICAgT3V0ZGVudCBuYW1lc3BhY2UgY29u
dGVudHMgb2YgR3JhcGhpY3NUeXBlcy5oLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oOgorICAgICAgICAqIHBh
Z2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PDwpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpkZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtOjpW
aWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW06OmluY3JlYXNlSW5kZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW06
OmRlY3JlYXNlSW5kZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmR1bXBQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0
U3RyZWFtOjp3cml0ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAq
IHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVj
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmlt
YXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5l
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW06OnN0
YXJ0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6ZW5kR3JvdXApOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6bmV4dExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFN0cmVhbTo6d3JpdGVJbmRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dFN0
cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0U3RyZWFtOjpkdW1wUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFN0cmVhbTo6aW5jcmVhc2VJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0
cmVhbTo6ZGVjcmVhc2VJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6R3Jv
dXBTY29wZTo6R3JvdXBTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0U3RyZWFtOjpHcm91
cFNjb3BlOjp+R3JvdXBTY29wZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oOgorCiAyMDE1LTEw
LTE2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQg
dG8gaW5zZXJ0IFRBQiBiZWZvcmUgSFRNTCBlbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGEwN2VkOTgy
MDg5MWQ3N2QwNDM2YmFlMmQ4MDZlYjU1YTJlYjQ2ODYuLjFjNDdlMmZmZTkyM2JlZGJkYTI3Yzll
OTg4NGI1YjBmYTVlZGJiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNS0xMC0x
NiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBFbmhh
bmNlIFRleHRTdHJlYW0gZm9yIGxvZ2dpbmcsIHJlbW92ZSBzdWJjbGFzc2VzLCBsb2cgbW9yZSB0
aGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSB0aGUgdmFyaW91cyBUZXh0U3RyZWFtIHN1YmNsYXNzZXMgdGhhdCBvbmx5IGV4aXN0ZWQg
dG8gc3VwcG9ydCBpbmRlbnRpbmcsCisgICAgICAgIGFuZCBvdXRwdXQgYWRkaXRpb25hbCB0eXBl
cy4gQWRkIG91dHB1dCBmb3IgbW9yZSBXZWJDb3JlIGFuZCBXZWJLaXQyIHR5cGVzLCBhbmQKKyAg
ICAgICAganVzdCB1c2UgVGV4dFN0cmVhbSBldmVyeXdoZXJlLgorICAgICAgICAKKyAgICAgICAg
VGV4dFN0cmVhbSBpcyBlbmhhbmNlIHRvIHN1cHBvcnQgZ3JvdXBpbmcgKG9wZW4gcGFyZW4gYW5k
IGludGVudCksIHdpdGggYSAKKyAgICAgICAgc3RhY2stYmFzZWQgY2xhc3MgdG8gb3Blbi9lbmQg
YSBncm91cC4KKyAgICAgICAgCisgICAgICAgIFJlbW92ZSBzb21lIFNWRy1zcGVjaWZpYyBkdXBs
aWNhdGUgb3V0cHV0IGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgIE91dGRlbnQgbmFtZXNw
YWNlIGNvbnRlbnRzIG9mIEdyYXBoaWNzVHlwZXMuaC4KKworICAgICAgICAqIFNoYXJlZC9TY3Jv
bGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmR1bXApOgorICAgICAgICAoV2ViS2l0OjpyZWN1cnNpdmVEdW1wTm9kZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpk
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3Ry
ZWFtOjpSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjppbmNyZWFzZUluZGVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpk
ZWNyZWFzZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z1RyZWVUZXh0U3RyZWFtOjp3cml0ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OmR1bXBQcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z1RyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXApOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6cmVjdXJzaXZlRHVtcE5vZGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYktpdDo6
ZHVtcENoYW5nZWRMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVU
ZXh0U3RyZWFtOjpSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6aW5jcmVhc2VJbmRlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpkZWNyZWFz
ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmR1bXBQcm9wZXJ0eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9y
PDwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFt
Ojp3cml0ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAoV2ViS2l0Ojpv
cGVyYXRvcjw8KToKKwogMjAxNS0xMC0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXS1dlYlZpZXcgaW5wdXQgZGVsZWdhdGUgU1BJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDhkOTMyMDFjZTZjYzgzNDM4ZjY1MDQ1YWE1NTc3YzU5NGVh
ODA2M2EuLmQ2ZjVmMWEwOTBjYzYzZjFjMzgxNDcxNGUyZDM5MTRkZmNjZWUxMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0yMTM5LDYgKzIxMzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAK
ICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb25MaXN0LmNwcAorICAgIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5j
dGlvbi5jcHAKIAogICAgIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAogICAgIHBsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMDU5ZjM3ZDhhNzBlZDIzYTU5YzQyMTdkNmZi
MjQwM2E5OTAwZmE3Li45N2Y4YWNhOTE3Y2E2ZDRkNGY4MWYwZDY2MzZkYWI1MThlNmY4NmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00ODAsOCArNDgwLDggQEAKIAkJMEYxNUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxD
aGFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjE1RUQ1QTFCN0VDN0M1MDBFRERGRUIgLyogV2lsbENoYW5nZURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE3NzQ4MDEzNzhCNzcy
MDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTc3NDdFMTM3OEI3NzEwMDlEQTc2QSAvKiBTY3JvbGxB
bmltYXRvcklPUy5oICovOyB9OwogCQkwRjE3NzQ4MTEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xs
QW5pbWF0b3JJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjE3NzQ3RjEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gKi87
IH07Ci0JCTBGMzZFNzM3MUJEMTgzN0EwMDJEQjg5MSAvKiBMYXlvdXRQb2ludC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM2RTczNjFCRDE4MzdB
MDAyREI4OTEgLyogTGF5b3V0UG9pbnQuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0g
KCk7IH07IH07Ci0JCTBGMzZFNzM5MUJEMTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzZFNzM4MUJE
MTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFH
UyA9ICgpOyB9OyB9OworCQkwRjM2RTczNzFCRDE4MzdBMDAyREI4OTEgLyogTGF5b3V0UG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNkU3
MzYxQkQxODM3QTAwMkRCODkxIC8qIExheW91dFBvaW50LmNwcCAqLzsgfTsKKwkJMEYzNkU3Mzkx
QkQxODRCOTAwMkRCODkxIC8qIExheW91dFNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNkU3MzgxQkQxODRCOTAwMkRCODkxIC8qIExheW91
dFNpemUuY3BwICovOyB9OwogCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzcyNUQxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCAqLzsgfTsKIAkJMEYzREQ0
NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzREQ0NEQxMkY1RUExQjAwMEQ5MTkwIC8qIFNo
YWRvd0JsdXIuY3BwICovOyB9OwogCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93
Qmx1ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
REQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLzsgfTsKQEAgLTU2Niw2ICs1
NjYsOCBAQAogCQkwRkRBN0MyMzE4ODMzMEE5MDBDOTU0QjUgLyogRHJhZ0ltYWdlSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMjIxODgz
MzBBOTAwQzk1NEI1IC8qIERyYWdJbWFnZUlPUy5tbSAqLzsgfTsKIAkJMEZEQTdDMjYxODgzMzMz
MjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRBN0MyNDE4
ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmNwcCAqLzsgfTsKIAkJMEZEQTdDMjcxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMjUxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovOyB9OworCQkwRkRGNDVBNzFCRDFDNkZE
MDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNDVBNjFCRDFDNkZEMDBFNEZBOEMgLyogUGxh
dGZvcm1DQUFuaW1hdGlvbi5jcHAgKi87IH07CisJCTBGREY0NUE5MUJEMUM4MjUwMEU0RkE4QyAv
KiBUaW1pbmdGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkRGNDVBODFCRDFDODI1MDBFNEZBOEMgLyogVGltaW5nRnVuY3Rpb24uY3Bw
ICovOyB9OwogCQkwRkU1ODA2MzE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1ODA2
MTE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5jcHAgKi87IH07CiAJCTBGRTU4
MDY0MTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1ODA2MjE5MzI3QTYyMDBERTMyRUIg
LyogU2Nyb2xsaW5nVHJlZU1hYy5oICovOyB9OwogCQkwRkU3MTQwNTE0MjE3MEI4MDBEQjMzQkEg
LyogU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRTcxNDAzMTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVt
ZU1vY2suY3BwICovOyB9OwpAQCAtNTI4NSwxMCArNTI4NywxMCBAQAogCQlCQzEyOEIwMTEzN0M4
RDQ2MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyOEIwMDEzN0M4RDQ2MDBDQUM4NDUgLyogUmVuZGVyR3Jp
ZC5jcHAgKi87IH07CiAJCUJDMTQwMjhBMEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzE0MDI4ODBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
Y3BwICovOyB9OwogCQlCQzE0MDI4QjBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMTc5MEJC
MUJCNUFCM0YwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURlcGVuZGVudFZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3OTBCQTFCQjVBQjNGMDAw
NkQxM0UgLyogQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07Ci0JCUJDMTc5MEJEMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NWYXJp
YWJsZURlcGVuZGVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMTc5MEJDMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURlcGVu
ZGVudFZhbHVlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlC
QzE3OTBDMDFCQkYyQzQzMDAwNkQxM0UgLyogQ1NTVmFyaWFibGVWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3OTBCRTFCQkYyQzQzMDAw
NkQxM0UgLyogQ1NTVmFyaWFibGVWYWx1ZS5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1Mg
PSAoKTsgfTsgfTsKLQkJQkMxNzkwQzExQkJGMkM0MzAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTc5
MEJGMUJCRjJDNDMwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJQkMxNzkwQkIxQkI1QUIzRjAwMDZEMTNFIC8qIENT
U1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMTc5MEJBMUJCNUFCM0YwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURl
cGVuZGVudFZhbHVlLmggKi87IH07CisJCUJDMTc5MEJEMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NW
YXJpYWJsZURlcGVuZGVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMTc5MEJDMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURl
cGVuZGVudFZhbHVlLmNwcCAqLzsgfTsKKwkJQkMxNzkwQzAxQkJGMkM0MzAwMDZEMTNFIC8qIENT
U1ZhcmlhYmxlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxNzkwQkUxQkJGMkM0MzAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlVmFsdWUuY3Bw
ICovOyB9OworCQlCQzE3OTBDMTFCQkYyQzQzMDAwNkQxM0UgLyogQ1NTVmFyaWFibGVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxNzkwQkYx
QkJGMkM0MzAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlVmFsdWUuaCAqLzsgfTsKIAkJQkMxN0Y5NjYw
QjY0RUJCODAwNEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxN0Y5NjUwQjY0RUJCODAw
NEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzFBMzdB
RDA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzFBMzc5NzA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxQTM3QUUwOTdD
NzE1RjAwMTlGM0Q4IC8qIERPTS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMUEzNzk4MDk3QzcxNUYwMDE5RjNEOCAvKiBET00ubW0gKi87IH07CkBA
IC01NDg5LDggKzU0OTEsOCBAQAogCQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzc3MkUxNTEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5W
YWx1ZS5jcHAgKi87IH07CiAJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzc3OUUxMzFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzc5
RTE3MUJCMjI3Q0EwMENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzlFMTUxQkIyMjZBMjAw
Q0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkM3RDhGRUYxQkQwM0I2NDAwRkZFNTQwIC8q
IENTU1Vuc2V0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM3RDhGRUQxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuY3BwICov
OyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUJDN0Q4RkYwMUJEMDNCNjQw
MEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZFRTFCRDAzQjY0MDBGRkU1NDAgLyogQ1NTVW5zZXRWYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUJDN0Q4RkVGMUJE
MDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVEMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NV
bnNldFZhbHVlLmNwcCAqLzsgfTsKKwkJQkM3RDhGRjAxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vu
c2V0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmggKi87IH07CiAJCUJD
N0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEg
LyogSW1hZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDN0ZBNjIwMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUUw
RDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgKi87IH07CiAJCUJDN0ZBNjIxMEQx
RjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9k
ZUxpc3QuaCAqLzsgfTsKQEAgLTY0NzcsNyArNjQ3OSw3IEBACiAJCUU0QjY1QTVBMTMyRkFBRjkw
MDcwRTdCRSAvKiBMZWdhY3lUaWxlR3JpZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjY1QTU5MTMyRkFBRjkwMDcwRTdCRSAvKiBMZWdhY3lUaWxl
R3JpZC5tbSAqLzsgfTsKIAkJRTRCNjVBNUMxMzJGQUNCMDAwNzBFN0JFIC8qIExlZ2FjeVRpbGVM
YXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRC
NjVBNUIxMzJGQUNCMDAwNzBFN0JFIC8qIExlZ2FjeVRpbGVMYXllci5oICovOyB9OwogCQlFNEI2
NUE1RTEzMkZBREI2MDA3MEU3QkUgLyogTGVnYWN5VGlsZUxheWVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNjVBNUQxMzJGQURCNjAwNzBFN0JF
IC8qIExlZ2FjeVRpbGVMYXllci5tbSAqLzsgfTsKLQkJRTRCQTUwOTAxQkNGQkQ5NTAwRTM0RUY3
IC8qIENvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QkE1MDhGMUJDRkJEOTUwMEUzNEVGNyAvKiBDb21w
b3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAo
KTsgfTsgfTsKKwkJRTRCQTUwOTAxQkNGQkQ5NTAwRTM0RUY3IC8qIENvbXBvc2VkVHJlZUFuY2Vz
dG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QkE1MDhGMUJDRkJEOTUwMEUzNEVGNyAvKiBDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJh
dG9yLmggKi87IH07CiAJCUU0QkJFRDBFMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRCQkVEMEMxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAgKi87IH07CiAJCUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAvKiBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QkJFRDBEMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLzsgfTsKIAkJRTRCQkVENEMxNEZDREJBMTAwM0Yw
Qjk4IC8qIFN0eWxlUnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEJCRUQ0QTE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCAqLzsg
fTsKQEAgLTc3OTcsNiArNzc5OSw4IEBACiAJCTBGREE3QzIyMTg4MzMwQTkwMEM5NTRCNSAvKiBE
cmFnSW1hZ2VJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
cmFnSW1hZ2VJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGREE3QzI0MTg4
MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZEQTdDMjUxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZERjQ1QTYxQkQxQzZGRDAwRTRGQThDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DQUFuaW1h
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREY0NUE4MUJEMUM4MjUw
MEU0RkE4QyAvKiBUaW1pbmdGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUaW1pbmdGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRTU4MDYxMTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1ODA2MjE5MzI3QTYyMDBERTMyRUIgLyog
U2Nyb2xsaW5nVHJlZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxpbmdUcmVlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTcxNDAzMTQy
MTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjQzLDYgKzE2NjQ3LDcgQEAKIAkJCQkyOTE3QjU2MDE0NzM0
OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oICovLAogCQkJCTdBQTNB
NjlEMTk0QjU5QjYwMDFDQkQyNCAvKiBMYXllclBvb2wuY3BwICovLAogCQkJCTdBQTNBNjlFMTk0
QjU5QjYwMDFDQkQyNCAvKiBMYXllclBvb2wuaCAqLywKKwkJCQkwRkRGNDVBNjFCRDFDNkZEMDBF
NEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgKi8sCiAJCQkJNDk5QjNFREMxMjhEQjUw
MTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLywKIAkJCQkwRjEzMTYzRDE2RUQw
Q0M4MDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnMuaCAqLywKIAkJCQkyRDcwQkExNDE4MDc0
Rjg1MDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVyLmNwcCAqLywKQEAgLTE2Njk5LDYgKzE2NzA0
LDcgQEAKIAkJCQk0OUU5MTJBODBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5oICov
LAogCQkJCTMxRENEMjlDMUFCNEZCREUwMDcyRTgxNyAvKiBBbmltYXRpb25UcmlnZ2VyLmggKi8s
CiAJCQkJMEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oICov
LAorCQkJCTBGREY0NUE4MUJEMUM4MjUwMEU0RkE4QyAvKiBUaW1pbmdGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJNDlFOTEyQTkwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0aW9uLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGFuaW1hdGlvbjsKQEAgLTI4Njc0LDYgKzI4NjgwLDcgQEAKIAkJCQlC
Q0QwRkJEMDBEQkQ2MjVFMDBCMkY2MzAgLyogRE9NQWJzdHJhY3RWaWV3Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE5ODQ4MDkxQTFFNkNCRjAwQTEzMzE4IC8qIERPTUFuaW1hdGlvbkV2ZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQzIwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZERjQ1QTcxQkQxQzZGRDAwRTRG
QThDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVEMzg5
QjMwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NkZC
OUZFQzE5QTcyODRCMDA0MjA1NjIgLyogRE9NQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDOTQ2RUYwMTA3RkRCQUMwMDg1NzE5MyAvKiBET01CZWZvcmVMb2Fk
RXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5NTMzLDYgKzI5NTQwLDcgQEAKIAkJCQlCQzZE
NDRCRTBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBRTJBQTI2MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBMjgwQTFDREFCNDAwQjQyQjI1
IC8qIEpTSFRNTEZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGREY0NUE5MUJE
MUM4MjUwMEU0RkE4QyAvKiBUaW1pbmdGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
QkY5QTg4MDE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5QjFBQjA3QzE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQw
NjRGQjBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCBjYzg0MTY0
OGJmZDBmYWY1NGE2ZTM5YzU2Nzc4MTY0ZmE4NTllMDVmLi42NzZjYmE2MDVhMDI4ZWVhMmM5MzQ1
Y2M1ODgxMjU5NGU2ZGY1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NTAsNCArNDUxLDI0
IEBAIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3Bv
cnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zCiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChl
cnJvckNvZGUpLCBtZXNzYWdlKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKQorewor
ICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CisKKyAgICB0cyA8PCAiXG4iOworICAgIHRzLndyaXRl
SW5kZW50KCk7CisgICAgdHMgPDwgIih3aWR0aCAiIDw8IHZpZXdwb3J0QXJndW1lbnRzLndpZHRo
IDw8ICIsIG1pbldpZHRoICIgPDwgdmlld3BvcnRBcmd1bWVudHMubWluV2lkdGggPDwgIiwgbWF4
V2lkdGggIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5tYXhXaWR0aCA8PCAiKSI7CisKKyAgICB0cyA8
PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgIihoZWlnaHQgIiA8PCB2
aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQgPDwgIiwgbWluSGVpZ2h0ICIgPDwgdmlld3BvcnRBcmd1
bWVudHMubWluSGVpZ2h0IDw8ICIsIG1heEhlaWdodCAiIDw8IHZpZXdwb3J0QXJndW1lbnRzLm1h
eEhlaWdodCA8PCAiKSI7CisKKyAgICB0cyA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7
CisgICAgdHMgPDwgIih6b29tICIgPDwgdmlld3BvcnRBcmd1bWVudHMuem9vbSA8PCAiLCBtaW5a
b29tICIgPDwgdmlld3BvcnRBcmd1bWVudHMubWluWm9vbSA8PCAiLCBtYXhab29tICIgPDwgdmll
d3BvcnRBcmd1bWVudHMubWF4Wm9vbSA8PCAiKSI7CisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsK
KworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCAxZDY0MWQzOTNlNDkzMzZkNTBmYzJjY2I2
N2I4MTI0YWFkOTVmZGMwLi40ZGY1MmRkNmU4NDgwY2NkNzg5YTMxNWVjYzE5OGNmNjdjMjVmNTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtMTM1LDYgKzEzNSw4
IEBAIGZsb2F0IGNvbXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKGNv
bnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzCiB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25z
dCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQq
LCB2b2lkKiBkYXRhKTsKIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiwgVmll
d3BvcnRFcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50Mik7CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFZpZXdwb3J0QXJndW1lbnRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3Bv
cnRDb25maWd1cmF0aW9uLmNwcAppbmRleCAwYzQxMWI0ZDdlNjVmZTExYjE5NDIzMjdmYjAyMDkw
OGY1OGM4Y2Q2Li45MjQ3OTBkOTNhNmM0NDE1MGM2MGI2YWVmYjQ0MTlmMjMzODFhOTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCkBAIC0zOTks
NDggKzM5OSw5IEBAIGludCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dEhlaWdodCgpIGNv
bnN0CiB9CiAKICNpZm5kZWYgTkRFQlVHCi1jbGFzcyBWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0
U3RyZWFtIDogcHVibGljIFRleHRTdHJlYW0gewotcHVibGljOgotICAgIFZpZXdwb3J0Q29uZmln
dXJhdGlvblRleHRTdHJlYW0oKQotICAgICAgICA6IG1faW5kZW50KDApCi0gICAgewotICAgIH0K
LQotICAgIHVzaW5nIFRleHRTdHJlYW06Om9wZXJhdG9yPDw7Ci0KLSAgICBWaWV3cG9ydENvbmZp
Z3VyYXRpb25UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlv
bjo6UGFyYW1ldGVycyYpOwotICAgIFZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmKTsKLQotICAgIHZvaWQgaW5jcmVhc2VJ
bmRlbnQoKSB7ICsrbV9pbmRlbnQ7IH0KLSAgICB2b2lkIGRlY3JlYXNlSW5kZW50KCkgeyAtLW1f
aW5kZW50OyBBU1NFUlQobV9pbmRlbnQgPj0gMCk7IH0KLQotICAgIHZvaWQgd3JpdGVJbmRlbnQo
KTsKIAotcHJpdmF0ZToKLSAgICBpbnQgbV9pbmRlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXN0YXRpYyB2b2lkIGR1bXBQcm9wZXJ0eShWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0
U3RyZWFtJiB0cywgU3RyaW5nIG5hbWUsIFQgdmFsdWUpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgdHMgPDwgIlxuIjsKLSAgICB0cy5pbmNyZWFzZUluZGVudCgp
OwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwgIigiIDw8IG5hbWUgPDwgIiAiOwot
ICAgIHRzIDw8IHZhbHVlIDw8ICIpIjsKLSAgICB0cy5kZWNyZWFzZUluZGVudCgpOwotfQotCi12
b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW06OndyaXRlSW5kZW50KCkKLXsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5kZW50OyArK2kpCi0gICAgICAgICp0aGlzIDw8ICIg
ICI7Ci19Ci0KLVZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW0mIFZpZXdwb3J0Q29uZmln
dXJhdGlvblRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgVmlld3BvcnRDb25maWd1cmF0aW9u
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIFZpZXdwb3J0Q29uZmlndXJhdGlvblRl
eHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0KICAgICB0cy5pbmNyZWFzZUluZGVudCgpOwogICAgIHRz
IDw8ICJcbiI7CiAgICAgdHMud3JpdGVJbmRlbnQoKTsKQEAgLTQ1NSwzOSArNDE2LDE3IEBAIFZp
ZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW0mIFZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRT
dHJlYW06Om9wZXJhdG9yPDwoY29uCiAgICAgdHMgPDwgIihpbml0aWFsU2NhbGUgIiA8PCBwYXJh
bWV0ZXJzLmluaXRpYWxTY2FsZSA8PCAiLCBzZXQ6ICIgPDwgKHBhcmFtZXRlcnMuaW5pdGlhbFNj
YWxlSXNTZXQgPyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiKSI7CiAgICAgdHMuZGVjcmVhc2VJbmRl
bnQoKTsKIAotICAgIGR1bXBQcm9wZXJ0eSh0cywgIm1pbmltdW1TY2FsZSIsIHBhcmFtZXRlcnMu
bWluaW11bVNjYWxlKTsKLSAgICBkdW1wUHJvcGVydHkodHMsICJtYXhpbXVtU2NhbGUiLCBwYXJh
bWV0ZXJzLm1heGltdW1TY2FsZSk7Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAiYWxsb3dzVXNlclNj
YWxpbmciLCBwYXJhbWV0ZXJzLmFsbG93c1VzZXJTY2FsaW5nKTsKLSAgICBkdW1wUHJvcGVydHko
dHMsICJhbGxvd3NTaHJpbmtUb0ZpdCIsIHBhcmFtZXRlcnMuYWxsb3dzU2hyaW5rVG9GaXQpOwot
Ci0gICAgcmV0dXJuIHRzOwotfQotCi1WaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtJiBW
aWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFZpZXdwb3J0
QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKLXsKLSAgICBWaWV3cG9ydENvbmZpZ3VyYXRp
b25UZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotCi0gICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLQot
ICAgIHRzIDw8ICJcbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiKHdpZHRo
ICIgPDwgdmlld3BvcnRBcmd1bWVudHMud2lkdGggPDwgIiwgbWluV2lkdGggIiA8PCB2aWV3cG9y
dEFyZ3VtZW50cy5taW5XaWR0aCA8PCAiLCBtYXhXaWR0aCAiIDw8IHZpZXdwb3J0QXJndW1lbnRz
Lm1heFdpZHRoIDw8ICIpIjsKLQotICAgIHRzIDw8ICJcbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQo
KTsKLSAgICB0cyA8PCAiKGhlaWdodCAiIDw8IHZpZXdwb3J0QXJndW1lbnRzLmhlaWdodCA8PCAi
LCBtaW5IZWlnaHQgIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5taW5IZWlnaHQgPDwgIiwgbWF4SGVp
Z2h0ICIgPDwgdmlld3BvcnRBcmd1bWVudHMubWF4SGVpZ2h0IDw8ICIpIjsKLQotICAgIHRzIDw8
ICJcbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiKHpvb20gIiA8PCB2aWV3
cG9ydEFyZ3VtZW50cy56b29tIDw8ICIsIG1pblpvb20gIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5t
aW5ab29tIDw8ICIsIG1heFpvb20gIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5tYXhab29tIDw8ICIp
IjsKLSAgICB0cy5kZWNyZWFzZUluZGVudCgpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibWluaW11
bVNjYWxlIiwgcGFyYW1ldGVycy5taW5pbXVtU2NhbGUpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
bWF4aW11bVNjYWxlIiwgcGFyYW1ldGVycy5tYXhpbXVtU2NhbGUpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiYWxsb3dzVXNlclNjYWxpbmciLCBwYXJhbWV0ZXJzLmFsbG93c1VzZXJTY2FsaW5nKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoImFsbG93c1Nocmlua1RvRml0IiwgcGFyYW1ldGVycy5hbGxv
d3NTaHJpbmtUb0ZpdCk7CiAKICAgICByZXR1cm4gdHM7CiB9CiAKIENTdHJpbmcgVmlld3BvcnRD
b25maWd1cmF0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgVmlld3BvcnRDb25maWd1
cmF0aW9uVGV4dFN0cmVhbSB0czsKKyAgICBUZXh0U3RyZWFtIHRzOwogCiAgICAgdHMgPDwgIih2
aWV3cG9ydC1jb25maWd1cmF0aW9uICIgPDwgKHZvaWQqKXRoaXM7CiAgICAgdHMgPDwgIlxuIjsK
QEAgLTUxNCw4ICs0NTMsOCBAQCBDU3RyaW5nIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6ZGVzY3Jp
cHRpb24oKSBjb25zdAogICAgIHRzIDw8ICIpIjsKICAgICB0cy5kZWNyZWFzZUluZGVudCgpOwog
Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAiY29udGVudFNpemUiLCBtX2NvbnRlbnRTaXplKTsKLSAg
ICBkdW1wUHJvcGVydHkodHMsICJtaW5pbXVtTGF5b3V0U2l6ZSIsIG1fbWluaW11bUxheW91dFNp
emUpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29udGVudFNpemUiLCBtX2NvbnRlbnRTaXplKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoIm1pbmltdW1MYXlvdXRTaXplIiwgbV9taW5pbXVtTGF5b3V0
U2l6ZSk7CiAKICAgICB0cyA8PCAiXG4iOwogICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAppbmRleCBmNTAzODliODA5
ZWI1OGNjZWM4ZTY4YTM4NWNlNWU5MDk5MTQzNzg3Li5kYzI5ODM0MWMwYTExMDJhYWM2YzI1YTQ3
MWE2NWYzYzU0MDk2YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1
cmF0aW9uLmgKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBUZXh0U3RyZWFtOworCiBjbGFzcyBWaWV3cG9ydENvbmZpZ3VyYXRpb24gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFZpZXdwb3J0Q29uZmlndXJhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtMTIyLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOwogfTsKIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgVmlld3BvcnRDb25maWd1cmF0aW9uOjpQYXJhbWV0ZXJzJik7CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFZpZXdwb3J0Q29uZmlndXJhdGlv
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b25zdHJhaW50cy5jcHAKaW5kZXggNGIzZjRkNjhjMTNhZmVlOTk3MjFkYWFiYmU2NzhkMzNiMmIw
OWIyMS4uMDBmMTAxYTM0ZTYxZDI0ODMxMWEyMmQ1OTkyMDYyMjcxM2IwZDYxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRz
LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNj
cm9sbGluZ0NvbnN0cmFpbnRzLmgiCiAKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRmxvYXRQb2ludCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50czo6bGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBGbG9hdFJlY3QmIHZpZXdw
b3J0UmVjdCkgY29uc3QKQEAgLTk4LDQgKzEwMCwyMCBAQCBGbG9hdFBvaW50IFN0aWNreVBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50czo6bGF5ZXJQb3NpdGlvbkZvckNvbnN0cmFpbmluZ1JlY3Qo
YwogICAgIHJldHVybiBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQgKyBvZmZzZXQgLSBtX3N0
aWNreU9mZnNldEF0TGFzdExheW91dDsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmIGNvbnN0
cmFpbnRzKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgidmlld3BvcnQtcmVjdC1hdC1sYXN0LWxh
eW91dCIsIGNvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoImxheWVyLXBvc2l0aW9uLWF0LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMu
bGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsKKworICAgIHJldHVybiB0czsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
InN0aWNreS1wb3NpdGlvbi1hdC1sYXN0LWxheW91dCIsIGNvbnN0cmFpbnRzLnN0aWNreU9mZnNl
dEF0TGFzdExheW91dCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyLXBvc2l0aW9uLWF0
LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsK
KworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmgKaW5k
ZXggMzIzYjU2NDJiYjczNWE1Mzg5OTcwZTU5YjI0MzgzNWQ4NGZjZjM0MS4uMjNiMDViOGFiZjg3
MTU2NzdmZDliOWJiOTZkNTZiOWU5YWRmZTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oCkBAIC0xOTYsNiArMTk2LDkg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dDsK
IH07CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJik7CitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHMmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU2Nyb2xsaW5nQ29uc3RyYWludHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDVjNTJiYTBkNjM0
ZDI1YWQ0MDEzNjE5ZWRiYjE1MmIxZGVmMDViMjcuLmI3YWY3OWE2NjBiZGJiMDExMzgyNzMxNDJl
MDU2Yzk4N2M5OWM5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNDIxLDQg
KzQyMiwyMyBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdOb2RlVHlwZSBub2Rl
VHlwZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgY2FzZSBGcmFtZVNjcm9sbGlu
Z05vZGU6CisgICAgICAgIHRzIDw8ICJmcmFtZS1zY3JvbGxpbmciOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE92ZXJmbG93U2Nyb2xsaW5nTm9kZToKKyAgICAgICAgdHMgPDwgIm92ZXJmbG93
LXNjcm9sbGluZyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRml4ZWROb2RlOgorICAgICAg
ICB0cyA8PCAiZml4ZWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0aWNreU5vZGU6Cisg
ICAgICAgIHRzIDw8ICJzdGlja3kiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCAxMzEwY2I0ZWYz
YWIxMTc0YmFkZWMwMDY3YzRiNGFiODJlZmJiMWExLi5jOTFjMzJjZDI4Yjc2YTA3YmNhMjAyNjQz
OThhMDc3ZDk0MGRiMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgR3JhcGhp
Y3NMYXllcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZWdpb247CiBjbGFzcyBTY3JvbGxhYmxlQXJl
YTsKK2NsYXNzIFRleHRTdHJlYW07CiBjbGFzcyBWaWV3cG9ydENvbnN0cmFpbnRzOwogCiAjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKQEAgLTIzMyw2ICsyMzQsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9mb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMgeyBmYWxz
ZSB9OwogfTsKIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgU2Nyb2xsaW5nTm9kZVR5cGUpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNk
ZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfQ09PUkRJTkFUT1IoVG9WYWx1
ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ZThhNjZmYjI2OGU5
MjdiZTc0ODgxN2YwNzhlOGQxNTJjOGViZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaW1pbmdGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlv
bikKK3sKKyAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSkgeworICAgIGNhc2UgVGlt
aW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uOgorICAgICAgICB0cyA8PCAibGluZWFyIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlv
bjogeworICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBjdWJpY0Jlemll
ckZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiY+
KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgdHMgPDwgImN1YmljLWJlemllcigiIDw8IGN1Ymlj
QmV6aWVyRnVuY3Rpb24ueDEoKSA8PCAiLCAiIDw8IGN1YmljQmV6aWVyRnVuY3Rpb24ueTEoKSA8
PCAiLCAiIDw8ICBjdWJpY0JlemllckZ1bmN0aW9uLngyKCkgPDwgIiwgIiA8PCBjdWJpY0Jlemll
ckZ1bmN0aW9uLnkyKCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
aW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogeworICAgICAgICBjb25zdCBTdGVwc1RpbWlu
Z0Z1bmN0aW9uJiBzdGVwc0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdG
dW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgdHMgPDwgInN0ZXBzKCIgPDwgc3Rl
cHNGdW5jdGlvbi5udW1iZXJPZlN0ZXBzKCkgPDwgIiwgIiA8PCAoc3RlcHNGdW5jdGlvbi5zdGVw
QXRTdGFydCgpID8gInN0YXJ0IiA6ICJlbmQiKSA8PCAiKSI7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5o
CmluZGV4IDg4NzYyNmFlOTlhZTQwOTFjMDYzNTk2ZGMzMWYyZTBhMDNlZTRkODEuLjI0ODZhOTM3
NTZlNmQyZTM0YTMzMjFmYjUzMzI2NDFmNjA0OGFiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaWZuZGVmIFRpbWluZ0Z1bmN0aW9uX2gKICNkZWZpbmUgVGltaW5nRnVuY3Rpb25faAogCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMzAsNiArMjMxLDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc3RlcEF0U3RhcnQ7CiB9OwogCitjbGFzcyBUZXh0U3RyZWFtOworV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVGltaW5nRnVuY3Rp
b24mKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVGltaW5nRnVuY3Rp
b25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDAy
MDM2N2FkN2RiMGYwZjdhNTAwYzQ2OWI0NjAyZjMzZWNmMDM0ZGYuLmYwMDZjNjc0N2Q1MDg2OWEx
MWFmYTc4YTAzZDAxMzYxYjg3YzkwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvblV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIkhhc2hUb29scy5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9EZWNpbWFsTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgpAQCAtNDg4LDUgKzQ4OSw5IEBAIENv
bG9yIGJsZW5kKGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFByZW11CiAgICAgICAgIGJsZW5kKGZyb20uYWxwaGEoKSwgdG8uYWxw
aGEoKSwgcHJvZ3Jlc3MpKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIHJldHVybiB0cyA8PCBjb2xvci5uYW1l
Rm9yUmVuZGVyVHJlZUFzVGV4dCgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCA2Yzc5YzYzYmNmYTgxMmZh
YzQ2OGZlODg2ZDcwNDVjODk4Mjg0NDMzLi5kMWQ0ZTcyNzcwMGQ5ZTI4YzBjZmRiMzU0ZWJiOWM5
Y2FmOWQxODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAg
LTQ2LDYgKzQ2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0dka1JHQkEgR2RrUkdCQTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBUZXh0U3RyZWFtOworCiB0eXBlZGVmIHVuc2lnbmVkIFJH
QkEzMjsgLy8gRGVwcmVjYXRlZDogVHlwZSBmb3IgYW4gUkdCQSBxdWFkcnVwbGV0LiBVc2UgUkdC
QSBjbGFzcyBpbnN0ZWFkLgogCiBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQihpbnQgciwg
aW50IGcsIGludCBiKTsKQEAgLTI5Miw2ICsyOTQsOCBAQCBpbmxpbmUgdWludDE2X3QgZmFzdERp
dmlkZUJ5MjU1KHVpbnQxNl90IHZhbHVlKQogICAgIHJldHVybiBhcHByb3hpbWF0aW9uICsgKHJl
bWFpbmRlciA+PiA4KTsKIH0KIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gQ29sb3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRQb2ludDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQzRC5jcHAKaW5kZXggZWQxODE2YmRkN2E4YzYyMjQxMDk1ZDQ4MzVhZTli
OTExMGY2NmI2ZC4uYzZmYmRhYjcyMzNlMDBlOTdkYzI3OWFmYjJhNjI2ZmMzMTFjNDk5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3Bw
CkBAIC0yMCw5ICsyMCw5IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRl
ICJGbG9hdFBvaW50M0QuaCIKIAorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDxt
YXRoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDUgKzM4LDEwIEBAIHZvaWQgRmxv
YXRQb2ludDNEOjpub3JtYWxpemUoKQogICAgIH0KIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmxvYXRQb2ludDNEJiBwb2ludCkKK3sKKyAgICByZXR1
cm4gdHMgPDwgcG9pbnQueCgpIDw8ICIgIiA8PCBwb2ludC55KCkgPDwgIiAiIDw8IHBvaW50Lnoo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5oCmluZGV4IGJhMGVlOWQ5NDcxZGY1ZTk3NjZh
NTAzMjJiNWY1YzRjYjQwOGM4ZWMuLjNjNmUyYTc3Y2VjMzZiYmI1Yzc5OWQ5ZTA5NDQ4MzMzOTgw
NTYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UG9pbnQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9p
bnQzRC5oCkBAIC0xODIsNiArMTgyLDggQEAgaW5saW5lIGZsb2F0IEZsb2F0UG9pbnQzRDo6ZGlz
dGFuY2VUbyhjb25zdCBGbG9hdFBvaW50M0QmIGEpIGNvbnN0CiAgICAgcmV0dXJuICgqdGhpcyAt
IGEpLmxlbmd0aCgpOwogfQogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBGbG9hdFBvaW50M0QmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRmxvYXRQb2ludDNEX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKaW5kZXggZDM0ZWMyYWUx
ZmEwMjc3MjY4ZGQxZmZmOGVmMDgzNzk1NDY1MTA4Ny4uZDk4NTZiODAzZDNiMTc3MDZiNmQ1NDZh
ZjVlOGZiOWM3NTViMDBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAKKyNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xOTYsNSArMTk3LDI0IEBAIHZvaWQgRmxvYXRSb3VuZGVkUmVjdDo6YWRqdXN0UmFkaWko
KQogICAgIG1fcmFkaWkuc2NhbGUod2lkdGhSYXRpbyA8IGhlaWdodFJhdGlvID8gd2lkdGhSYXRp
byA6IGhlaWdodFJhdGlvKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCit7CisgICAgdHMgPDwg
cm91bmRlZFJlY3QucmVjdCgpLngoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QucmVjdCgpLnkoKSA8
PCAiICIgPDwgcm91bmRlZFJlY3QucmVjdCgpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0
LnJlY3QoKS5oZWlnaHQoKSA8PCAiXG4iOworCisgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKKyAg
ICB0cy53cml0ZUluZGVudCgpOworICAgIHRzIDw8ICJ0b3BMZWZ0PSIgPDwgcm91bmRlZFJlY3Qu
dG9wTGVmdENvcm5lcigpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LnRvcExlZnRDb3Ju
ZXIoKS5oZWlnaHQoKSA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwg
InRvcFJpZ2h0PSIgPDwgcm91bmRlZFJlY3QudG9wUmlnaHRDb3JuZXIoKS53aWR0aCgpIDw8ICIg
IiA8PCByb3VuZGVkUmVjdC50b3BSaWdodENvcm5lcigpLmhlaWdodCgpIDw8ICJcbiI7CisgICAg
dHMud3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8PCAiYm90dG9tTGVmdD0iIDw8IHJvdW5kZWRSZWN0
LmJvdHRvbUxlZnRDb3JuZXIoKS53aWR0aCgpIDw8ICIgIiA8PCByb3VuZGVkUmVjdC5ib3R0b21M
ZWZ0Q29ybmVyKCkuaGVpZ2h0KCkgPDwgIlxuIjsKKyAgICB0cy53cml0ZUluZGVudCgpOworICAg
IHRzIDw8ICJib3R0b21SaWdodD0iIDw8IHJvdW5kZWRSZWN0LmJvdHRvbVJpZ2h0Q29ybmVyKCku
d2lkdGgoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QuYm90dG9tUmlnaHRDb3JuZXIoKS5oZWlnaHQo
KTsKKyAgICB0cy5kZWNyZWFzZUluZGVudCgpOworCisgICAgcmV0dXJuIHRzOworfQorCisKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IGZkMmZjMWJhYWQ3MGIwYjI3MTVlNzA3
ZWE2MThlMmQ1NDg4YTU4ZmMuLjkzMzg4NThiMzlkMGJkNzIxNTZkMTYxZTExNmM2YzFjNzhmZTNm
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91
bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJv
dW5kZWRSZWN0LmgKQEAgLTE3OCw2ICsxNzgsOCBAQCBpbmxpbmUgZmxvYXQgY2FsY0JvcmRlclJh
ZGlpQ29uc3RyYWludFNjYWxlRm9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYQog
ICAgIHJldHVybiBmYWN0b3I7CiB9CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRmxvYXRSb3VuZGVkUmVjdF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDA2
MTZjZDhmY2Q0MmE1Yzk0ZDQ5NDg2YmFjMmZhM2JlZTY0ODhjODguLjI5NGNiNmJhYTgzOWRkN2Zh
MTgwNDdiZmQ3MjRmNmM4YjAzZWQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC04NzUsNiArODc1LDI5IEBAIHZvaWQg
R3JhcGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQs
IExheWVyVHJlZUFzVGV4dEJlCiAgICAgfQogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
PiYgbGF5ZXJzKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgdHMgPDwgIiAiOworICAgICAgICB0
cyA8PCBsYXllcnNbaV07CisgICAgfQorCisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpDdXN0b21BcHBlYXJhbmNlJiBjdXN0b21BcHBlYXJhbmNlKQoreworICAgIHN3aXRjaCAoY3Vz
dG9tQXBwZWFyYW5jZSkgeworICAgIGNhc2UgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5j
ZTo6Tm9DdXN0b21BcHBlYXJhbmNlOiB0cyA8PCAibm9uZSI7IGJyZWFrOworICAgIGNhc2UgR3Jh
cGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6U2Nyb2xsaW5nT3Zlcmhhbmc6IHRzIDw8ICJz
Y3JvbGxpbmctb3ZlcmhhbmciOyBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzTGF5ZXI6OkN1c3Rv
bUFwcGVhcmFuY2U6OlNjcm9sbGluZ1NoYWRvdzogdHMgPDwgInNjcm9sbGluZy1zaGFkb3ciOyBi
cmVhazsKKyAgICBjYXNlIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFj
a2Ryb3BBcHBlYXJhbmNlOiB0cyA8PCAibGlnaHQtYmFja2Ryb3AiOyBicmVhazsKKyAgICBjYXNl
IEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkRhcmtCYWNrZHJvcEFwcGVhcmFuY2U6
IHRzIDw8ICJkYXJrLWJhY2tkcm9wIjsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30K
KwogU3RyaW5nIEdyYXBoaWNzTGF5ZXI6OmxheWVyVHJlZUFzVGV4dChMYXllclRyZWVBc1RleHRC
ZWhhdmlvciBiZWhhdmlvcikgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDU3NmU3
MmY2NThkMWI3NWNlZjZjNTE5N2Q5ZTczOTlmOTlkNTQ0OTMuLjBiNzY2ODE2ZTMyOTcxOTY3ZTUy
MGYzMzA2ZGMxMzM5MTljMDQ2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTY0MCw2ICs2NDAsOSBAQCBwcm90ZWN0ZWQ6CiAj
ZW5kaWYKIH07CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBH
cmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0dSQVBISUNTTEFZRVIoVG9WYWx1
ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKaW5kZXggYzcyNjUyNzNmODljZjIyY2RjYWM0YmQw
NGRmMTM3NDZjOTRiZTRkZS4uZDUyMzA4YzdjYzUzNDk1MTYzMmU4ZTAwZDZlYjJkYTU4NjI0Yjcy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzLmgiCiAKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
MjM2LDQgKzIzNyw3NiBAQCBib29sIHBhcnNlVGV4dEJhc2VsaW5lKGNvbnN0IFN0cmluZyYgcywg
VGV4dEJhc2VsaW5lJiBiYXNlbGluZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7Cisg
ICAgc3dpdGNoIChibGVuZE1vZGUpIHsKKyAgICBjYXNlIEJsZW5kTW9kZU5vcm1hbDogdHMgPDwg
Im5vcm1hbCI7IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6IHRzIDw8ICJtdWx0
aXBseSI7IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlU2NyZWVuOiB0cyA8PCAic2NyZWVuIjsg
YnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVPdmVybGF5OiB0cyA8PCAib3ZlcmxheSI7IGJyZWFr
OworICAgIGNhc2UgQmxlbmRNb2RlRGFya2VuOiB0cyA8PCAiZGFya2VuIjsgYnJlYWs7CisgICAg
Y2FzZSBCbGVuZE1vZGVMaWdodGVuOiB0cyA8PCAibGlnaHRlbiI7IGJyZWFrOworICAgIGNhc2Ug
QmxlbmRNb2RlQ29sb3JEb2RnZTogdHMgPDwgImNvbG9yLWRvZGdlIjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVDb2xvckJ1cm46IHRzIDw8ICJjb2xvci1idXJuIjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVIYXJkTGlnaHQ6IHRzIDw8ICJoYXJkLWxpZ2h0IjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVTb2Z0TGlnaHQ6IHRzIDw8ICJzb2Z0LWxpZ2h0IjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVEaWZmZXJlbmNlOiB0cyA8PCAiZGlmZmVyZW5jZSI7IGJyZWFrOworICAgIGNh
c2UgQmxlbmRNb2RlRXhjbHVzaW9uOiB0cyA8PCAiZXhjbHVzaW9uIjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVIdWU6IHRzIDw8ICJodWUiOyBicmVhazsKKyAgICBjYXNlIEJsZW5kTW9kZVNh
dHVyYXRpb246IHRzIDw8ICJzYXR1cmF0aW9uIjsgYnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVD
b2xvcjogdHMgPDwgImNvbG9yIjsgYnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVMdW1pbm9zaXR5
OiB0cyA8PCAibHVtaW5vc2l0eSI7IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlUGx1c0Rhcmtl
cjogdHMgPDwgInBsdXMtZGFya2VyIjsgYnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVQbHVzTGln
aHRlcjogdHMgPDwgInBsdXMtbGlnaHRlciI7IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxlIHJ1
bGUpCit7CisgICAgc3dpdGNoIChydWxlKSB7CisgICAgY2FzZSBSVUxFX05PTlpFUk86CisgICAg
ICAgIHRzIDw8ICJOT04tWkVSTyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUlVMRV9FVkVO
T0REOgorICAgICAgICB0cyA8PCAiRVZFTi1PREQiOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIExpbmVDYXAgY2FwU3R5bGUpCit7CisgICAgc3dpdGNoIChjYXBTdHlsZSkgeworICAgIGNh
c2UgQnV0dENhcDoKKyAgICAgICAgdHMgPDwgIkJVVFQiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kQ2FwOgorICAgICAgICB0cyA8PCAiUk9VTkQiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNxdWFyZUNhcDoKKyAgICAgICAgdHMgPDwgIlNRVUFSRSI7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIExpbmVKb2luIGpvaW5TdHlsZSkKK3sKKyAgICBzd2l0Y2ggKGpvaW5TdHls
ZSkgeworICAgIGNhc2UgTWl0ZXJKb2luOgorICAgICAgICB0cyA8PCAiTUlURVIiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvdW5kSm9pbjoKKyAgICAgICAgdHMgPDwgIlJPVU5EIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBCZXZlbEpvaW46CisgICAgICAgIHRzIDw8ICJCRVZFTCI7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IDAw
NTIxYjZhZjRjOWE4NmM5MWE0ZTRkODE4NGYzZTA0ZjA4Y2E3YzQuLjExZGZmZTY3ZGY4NjkyNjNi
ZDA2ODQ4MDM0MmRkYmM2MjAxY2IyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKQEAgLTI2LDg1ICsyNiw5MiBAQAogI2lmbmRlZiBH
cmFwaGljc1R5cGVzX2gKICNkZWZpbmUgR3JhcGhpY3NUeXBlc19oCiAKKyNpbmNsdWRlICJXaW5k
UnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGVudW0gQ29tcG9zaXRlT3BlcmF0b3IgewotICAgICAgICBDb21wb3NpdGVDbGVhciwK
LSAgICAgICAgQ29tcG9zaXRlQ29weSwKLSAgICAgICAgQ29tcG9zaXRlU291cmNlT3ZlciwKLSAg
ICAgICAgQ29tcG9zaXRlU291cmNlSW4sCi0gICAgICAgIENvbXBvc2l0ZVNvdXJjZU91dCwKLSAg
ICAgICAgQ29tcG9zaXRlU291cmNlQXRvcCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25P
dmVyLAotICAgICAgICBDb21wb3NpdGVEZXN0aW5hdGlvbkluLAotICAgICAgICBDb21wb3NpdGVE
ZXN0aW5hdGlvbk91dCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wLAotICAgICAg
ICBDb21wb3NpdGVYT1IsCi0gICAgICAgIENvbXBvc2l0ZVBsdXNEYXJrZXIsCi0gICAgICAgIENv
bXBvc2l0ZVBsdXNMaWdodGVyLAotICAgICAgICBDb21wb3NpdGVEaWZmZXJlbmNlCi0gICAgfTsK
LQotICAgIGVudW0gQmxlbmRNb2RlIHsKLSAgICAgICAgQmxlbmRNb2RlTm9ybWFsID0gMSwgLy8g
U3RhcnQgd2l0aCAxIHRvIG1hdGNoIFNWRydzIGJsZW5kbW9kZSBlbnVtZXJhdGlvbi4KLSAgICAg
ICAgQmxlbmRNb2RlTXVsdGlwbHksCi0gICAgICAgIEJsZW5kTW9kZVNjcmVlbiwKLSAgICAgICAg
QmxlbmRNb2RlRGFya2VuLAotICAgICAgICBCbGVuZE1vZGVMaWdodGVuLAotICAgICAgICBCbGVu
ZE1vZGVPdmVybGF5LAotICAgICAgICBCbGVuZE1vZGVDb2xvckRvZGdlLAotICAgICAgICBCbGVu
ZE1vZGVDb2xvckJ1cm4sCi0gICAgICAgIEJsZW5kTW9kZUhhcmRMaWdodCwKLSAgICAgICAgQmxl
bmRNb2RlU29mdExpZ2h0LAotICAgICAgICBCbGVuZE1vZGVEaWZmZXJlbmNlLAotICAgICAgICBC
bGVuZE1vZGVFeGNsdXNpb24sCi0gICAgICAgIEJsZW5kTW9kZUh1ZSwKLSAgICAgICAgQmxlbmRN
b2RlU2F0dXJhdGlvbiwKLSAgICAgICAgQmxlbmRNb2RlQ29sb3IsCi0gICAgICAgIEJsZW5kTW9k
ZUx1bWlub3NpdHksCi0gICAgICAgIEJsZW5kTW9kZVBsdXNEYXJrZXIsCi0gICAgICAgIEJsZW5k
TW9kZVBsdXNMaWdodGVyCi0gICAgfTsKLQotICAgIGVudW0gR3JhZGllbnRTcHJlYWRNZXRob2Qg
ewotICAgICAgICBTcHJlYWRNZXRob2RQYWQsCi0gICAgICAgIFNwcmVhZE1ldGhvZFJlZmxlY3Qs
Ci0gICAgICAgIFNwcmVhZE1ldGhvZFJlcGVhdAotICAgIH07Ci0KLSAgICBlbnVtIExpbmVDYXAg
eyBCdXR0Q2FwLCBSb3VuZENhcCwgU3F1YXJlQ2FwIH07Ci0KLSAgICBlbnVtIExpbmVKb2luIHsg
TWl0ZXJKb2luLCBSb3VuZEpvaW4sIEJldmVsSm9pbiB9OwotCi0gICAgZW51bSBIb3Jpem9udGFs
QWxpZ25tZW50IHsgQWxpZ25MZWZ0LCBBbGlnblJpZ2h0LCBBbGlnbkhDZW50ZXIgfTsKLQotICAg
IGVudW0gVGV4dEJhc2VsaW5lIHsgQWxwaGFiZXRpY1RleHRCYXNlbGluZSwgVG9wVGV4dEJhc2Vs
aW5lLCBNaWRkbGVUZXh0QmFzZWxpbmUsIEJvdHRvbVRleHRCYXNlbGluZSwgSWRlb2dyYXBoaWNU
ZXh0QmFzZWxpbmUsIEhhbmdpbmdUZXh0QmFzZWxpbmUgfTsKLSAgICAKLSAgICBlbnVtIFRleHRB
bGlnbiB7IFN0YXJ0VGV4dEFsaWduLCBFbmRUZXh0QWxpZ24sIExlZnRUZXh0QWxpZ24sIENlbnRl
clRleHRBbGlnbiwgUmlnaHRUZXh0QWxpZ24gfTsKLQotICAgIGVudW0gUmVuZGVyaW5nTW9kZSB7
Ci0gICAgICAgIFVuYWNjZWxlcmF0ZWQsCi0gICAgICAgIFVuYWNjZWxlcmF0ZWROb25QbGF0Zm9y
bUJ1ZmZlciwgLy8gVXNlIHBsYWluIG1lbW9yeSBhbGxvY2F0aW9uIHJhdGhlciB0aGFuIHBsYXRm
b3JtIEFQSSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlLgotICAgICAgICBBY2NlbGVyYXRlZAot
ICAgIH07Ci0KLSAgICBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpOwotICAgIGJvb2wgcGFyc2VCbGVuZE1vZGUoY29uc3QgU3RyaW5nJiwg
QmxlbmRNb2RlJik7Ci0gICAgYm9vbCBwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0b3IoY29u
c3QgU3RyaW5nJiwgQ29tcG9zaXRlT3BlcmF0b3ImLCBCbGVuZE1vZGUmKTsKLQotICAgIFN0cmlu
ZyBsaW5lQ2FwTmFtZShMaW5lQ2FwKTsKLSAgICBib29sIHBhcnNlTGluZUNhcChjb25zdCBTdHJp
bmcmLCBMaW5lQ2FwJik7Ci0KLSAgICBTdHJpbmcgbGluZUpvaW5OYW1lKExpbmVKb2luKTsKLSAg
ICBib29sIHBhcnNlTGluZUpvaW4oY29uc3QgU3RyaW5nJiwgTGluZUpvaW4mKTsKLQotICAgIFN0
cmluZyB0ZXh0QWxpZ25OYW1lKFRleHRBbGlnbik7Ci0gICAgYm9vbCBwYXJzZVRleHRBbGlnbihj
b25zdCBTdHJpbmcmLCBUZXh0QWxpZ24mKTsKLSAgICAKLSAgICBTdHJpbmcgdGV4dEJhc2VsaW5l
TmFtZShUZXh0QmFzZWxpbmUpOwotICAgIGJvb2wgcGFyc2VUZXh0QmFzZWxpbmUoY29uc3QgU3Ry
aW5nJiwgVGV4dEJhc2VsaW5lJik7CitlbnVtIENvbXBvc2l0ZU9wZXJhdG9yIHsKKyAgICBDb21w
b3NpdGVDbGVhciwKKyAgICBDb21wb3NpdGVDb3B5LAorICAgIENvbXBvc2l0ZVNvdXJjZU92ZXIs
CisgICAgQ29tcG9zaXRlU291cmNlSW4sCisgICAgQ29tcG9zaXRlU291cmNlT3V0LAorICAgIENv
bXBvc2l0ZVNvdXJjZUF0b3AsCisgICAgQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyLAorICAgIENv
bXBvc2l0ZURlc3RpbmF0aW9uSW4sCisgICAgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQsCisgICAg
Q29tcG9zaXRlRGVzdGluYXRpb25BdG9wLAorICAgIENvbXBvc2l0ZVhPUiwKKyAgICBDb21wb3Np
dGVQbHVzRGFya2VyLAorICAgIENvbXBvc2l0ZVBsdXNMaWdodGVyLAorICAgIENvbXBvc2l0ZURp
ZmZlcmVuY2UKK307CisKK2VudW0gQmxlbmRNb2RlIHsKKyAgICBCbGVuZE1vZGVOb3JtYWwgPSAx
LCAvLyBTdGFydCB3aXRoIDEgdG8gbWF0Y2ggU1ZHJ3MgYmxlbmRtb2RlIGVudW1lcmF0aW9uLgor
ICAgIEJsZW5kTW9kZU11bHRpcGx5LAorICAgIEJsZW5kTW9kZVNjcmVlbiwKKyAgICBCbGVuZE1v
ZGVEYXJrZW4sCisgICAgQmxlbmRNb2RlTGlnaHRlbiwKKyAgICBCbGVuZE1vZGVPdmVybGF5LAor
ICAgIEJsZW5kTW9kZUNvbG9yRG9kZ2UsCisgICAgQmxlbmRNb2RlQ29sb3JCdXJuLAorICAgIEJs
ZW5kTW9kZUhhcmRMaWdodCwKKyAgICBCbGVuZE1vZGVTb2Z0TGlnaHQsCisgICAgQmxlbmRNb2Rl
RGlmZmVyZW5jZSwKKyAgICBCbGVuZE1vZGVFeGNsdXNpb24sCisgICAgQmxlbmRNb2RlSHVlLAor
ICAgIEJsZW5kTW9kZVNhdHVyYXRpb24sCisgICAgQmxlbmRNb2RlQ29sb3IsCisgICAgQmxlbmRN
b2RlTHVtaW5vc2l0eSwKKyAgICBCbGVuZE1vZGVQbHVzRGFya2VyLAorICAgIEJsZW5kTW9kZVBs
dXNMaWdodGVyCit9OworCitlbnVtIEdyYWRpZW50U3ByZWFkTWV0aG9kIHsKKyAgICBTcHJlYWRN
ZXRob2RQYWQsCisgICAgU3ByZWFkTWV0aG9kUmVmbGVjdCwKKyAgICBTcHJlYWRNZXRob2RSZXBl
YXQKK307CisKK2VudW0gTGluZUNhcCB7IEJ1dHRDYXAsIFJvdW5kQ2FwLCBTcXVhcmVDYXAgfTsK
KworZW51bSBMaW5lSm9pbiB7IE1pdGVySm9pbiwgUm91bmRKb2luLCBCZXZlbEpvaW4gfTsKKwor
ZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHsgQWxpZ25MZWZ0LCBBbGlnblJpZ2h0LCBBbGlnbkhD
ZW50ZXIgfTsKKworZW51bSBUZXh0QmFzZWxpbmUgeyBBbHBoYWJldGljVGV4dEJhc2VsaW5lLCBU
b3BUZXh0QmFzZWxpbmUsIE1pZGRsZVRleHRCYXNlbGluZSwgQm90dG9tVGV4dEJhc2VsaW5lLCBJ
ZGVvZ3JhcGhpY1RleHRCYXNlbGluZSwgSGFuZ2luZ1RleHRCYXNlbGluZSB9OworCitlbnVtIFRl
eHRBbGlnbiB7IFN0YXJ0VGV4dEFsaWduLCBFbmRUZXh0QWxpZ24sIExlZnRUZXh0QWxpZ24sIENl
bnRlclRleHRBbGlnbiwgUmlnaHRUZXh0QWxpZ24gfTsKKworZW51bSBSZW5kZXJpbmdNb2RlIHsK
KyAgICBVbmFjY2VsZXJhdGVkLAorICAgIFVuYWNjZWxlcmF0ZWROb25QbGF0Zm9ybUJ1ZmZlciwg
Ly8gVXNlIHBsYWluIG1lbW9yeSBhbGxvY2F0aW9uIHJhdGhlciB0aGFuIHBsYXRmb3JtIEFQSSB0
byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlLgorICAgIEFjY2VsZXJhdGVkCit9OworCitTdHJpbmcg
Y29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworYm9v
bCBwYXJzZUJsZW5kTW9kZShjb25zdCBTdHJpbmcmLCBCbGVuZE1vZGUmKTsKK2Jvb2wgcGFyc2VD
b21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKGNvbnN0IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJhdG9y
JiwgQmxlbmRNb2RlJik7CisKK1N0cmluZyBsaW5lQ2FwTmFtZShMaW5lQ2FwKTsKK2Jvb2wgcGFy
c2VMaW5lQ2FwKGNvbnN0IFN0cmluZyYsIExpbmVDYXAmKTsKKworU3RyaW5nIGxpbmVKb2luTmFt
ZShMaW5lSm9pbik7Citib29sIHBhcnNlTGluZUpvaW4oY29uc3QgU3RyaW5nJiwgTGluZUpvaW4m
KTsKKworU3RyaW5nIHRleHRBbGlnbk5hbWUoVGV4dEFsaWduKTsKK2Jvb2wgcGFyc2VUZXh0QWxp
Z24oY29uc3QgU3RyaW5nJiwgVGV4dEFsaWduJik7CisKK1N0cmluZyB0ZXh0QmFzZWxpbmVOYW1l
KFRleHRCYXNlbGluZSk7Citib29sIHBhcnNlVGV4dEJhc2VsaW5lKGNvbnN0IFN0cmluZyYsIFRl
eHRCYXNlbGluZSYpOworCitjbGFzcyBUZXh0U3RyZWFtOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQmxlbmRNb2RlKTsKK1dFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsKK1dFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIExpbmVDYXApOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgTGluZUpvaW4p
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTBiZGQ4MmQ4ZTgzM2VlNGZmM2M3MWQ0OGIyZjYyMWEzYWQ5YjY2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FB
bmltYXRpb24uY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtQ0FBbmltYXRpb24uaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYzogdHMgPDwgImJhc2ljIjsg
YnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFtZTogdHMgPDwgImtl
eWZyYW1lIjsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVU
eXBlIGZpbGxNb2RlKQoreworICAgIHN3aXRjaCAoZmlsbE1vZGUpIHsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FBbmltYXRpb246Ok5vRmlsbE1vZGU6IHRzIDw8ICJub25lIjsgYnJlYWs7CisgICAgY2Fz
ZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczogdHMgPDwgImZvcndhcmRzIjsgYnJlYWs7
CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYWNrd2FyZHM6IHRzIDw8ICJiYWNrd2Fy
ZHMiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg6IHRzIDw8ICJi
b3RoIjsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlv
blR5cGUgdmFsdWVGdW5jdGlvblR5cGUpCit7CisgICAgc3dpdGNoICh2YWx1ZUZ1bmN0aW9uVHlw
ZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOiB0cyA8
PCAibm9uZSI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWDog
dHMgPDwgInJvdGF0ZVgiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJv
dGF0ZVk6IHRzIDw8ICJyb3RhdGVZIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpSb3RhdGVaOiB0cyA8PCAicm90YXRlWCI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6U2NhbGVYOiB0cyA8PCAic2NhbGVYIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVk6IHRzIDw8ICJzY2FsZVkiOyBicmVhazsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjogdHMgPDwgInNjYWxlWCI7IGJyZWFrOworICAg
IGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU6IHRzIDw8ICJzY2FsZSI7IGJyZWFrOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWDogdHMgPDwgInRyYW5zbGF0
ZVgiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk6IHRz
IDw8ICJ0cmFuc2xhdGVZIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpU
cmFuc2xhdGVaOiB0cyA8PCAidHJhbnNsYXRlWiI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6VHJhbnNsYXRlOiB0cyA8PCAidHJhbnNsYXRlIjsgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlv
bi5oCmluZGV4IGVhZGQxMTdmNjIxOTk0MWEzYTg4OWYwNGE5MGQ0MjM1YjBlMzE4ZjIuLjYwZmI4
NmE4M2Q4OGRjNjZjYmE0MTI4NWYyOTk5MzVjOWJhYjE2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgK
QEAgLTEzNiw2ICsxMzYsMTAgQEAgcHJpdmF0ZToKICAgICBBbmltYXRpb25UeXBlIG1fdHlwZTsK
IH07CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUpOworV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rmls
bE1vZGVUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlKTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FBTklN
QVRJT04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCmluZGV4IGZk
NjQ0MzU1MzhjNGYyOWFlMmE2MjY0MTM4ZDFmMWY1MGM1YWVmZmQuLmIzOGQ3NWFlYTAxOTBlOTk5
YzU3NTg2YjkwNDE3Yzg4ZDE1YjIzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApAQCAtMjQsOCArMjQsMTAg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGF5ZXJQb29sLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCisKKyNpbmNsdWRlICJMYXllclBvb2wuaCIKKyNp
bmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiAj
aWYgVVNFKENBKQpAQCAtMTMzLDYgKzEzNSw3OSBAQCBMYXllclBvb2wmIFBsYXRmb3JtQ0FMYXll
cjo6bGF5ZXJQb29sKCkKICAgICByZXR1cm4gKnNoYXJlZFBvb2w7CiB9CiAKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxh
eWVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGxheWVyVHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlV2ViTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxh
eWVyOgorICAgICAgICB0cyA8PCAibGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CisgICAgICAgIHRzIDw8ICJ0
cmFuc2Zvcm0tbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcjoKKyAgICAgICAgdHMgPDwgInRpbGVkLWxheWVyIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ0xheWVyOgorICAgICAgICB0cyA8PCAidGlsZWQtYmFja2luZy1sYXllciI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRC
YWNraW5nTGF5ZXI6CisgICAgICAgIHRzIDw8ICJwYWdlLXRpbGVkLWJhY2tpbmctbGF5ZXIiOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRC
YWNraW5nVGlsZUxheWVyOgorICAgICAgICB0cyA8PCAidGlsZWQtYmFja2luZy10aWxlIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXll
cjoKKyAgICAgICAgdHMgPDwgInJvb3QtbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKKyAgICAgICAgdHMgPDwg
ImJhY2tkcm9wLWxheWVyIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CisgICAgICAgIHRzIDw8ICJhdi1wbGF5ZXItbGF5
ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
V2ViR0xMYXllcjoKKyAgICAgICAgdHMgPDwgIndlYi1nbC1sYXllciI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgorICAgICAg
ICB0cyA8PCAic2hhcGUtbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlU2Nyb2xsaW5nTGF5ZXI6CisgICAgICAgIHRzIDw8ICJzY3JvbGxp
bmctbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ3VzdG9tOgorICAgICAgICB0cyA8PCAiY3VzdG9tLWxheWVyIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ry
b3BMYXllcjoKKyAgICAgICAgdHMgPDwgImxpZ2h0LXN5c3RlbS1iYWNrZHJvcC1sYXllciI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lz
dGVtQmFja2Ryb3BMYXllcjoKKyAgICAgICAgdHMgPDwgImRhcmstc3lzdGVtLWJhY2tkcm9wLWxh
eWVyIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJU
eXBlIGZpbHRlclR5cGUpCit7CisgICAgc3dpdGNoIChmaWx0ZXJUeXBlKSB7CisgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxpbmVhcjoKKyAgICAgICAgdHMgPDwgImxpbmVhciI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpOZWFyZXN0OgorICAgICAgICB0cyA8
PCAibmVhcmVzdCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpU
cmlsaW5lYXI6CisgICAgICAgIHRzIDw8ICJ0cmlsaW5lYXIiOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAppbmRleCAxMGExMDM3ZmJlZWI4Yjc2NmJmZTQ5YjhlMWMzODJlMjRlNzk0MmE1Li44YWI3
NjBlYmRhZDNhZTg5ZTM4NjFjMjdjZDhkNTE0NWNiZGQ0ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMjgw
LDYgKzI4MCw5IEBAIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG1fb3du
ZXI7CiB9OwogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUp
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19QTEFURk9STV9DQUxBWUVSKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5jcHAKaW5kZXggMWEyMTBjNTZjZWQ1ZTViODkyY2M0OTJlZThiYjk5MTY2
ZmY4NWYzMC4uY2M4NGQ0NDM0YWVhOGZhODE1YzUzYTg4N2ZhNDk3NzEyYTI3ZTBiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlv
blV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0xOTgsNCArMTk5LDc2IEBAIFBhc3NSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0
ZXJPcGVyYXRpCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21Db2xvciwgbV9jb2xvciwgcHJv
Z3Jlc3MpKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXIpCit7CisgICAgc3dpdGNoIChmaWx0ZXIudHlwZSgp
KSB7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKKyAgICAgICAgdHMgPDwg
InJlZmVyZW5jZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpH
UkFZU0NBTEU6IHsKKyAgICAgICAgY29uc3QgYXV0byYgY29sb3JNYXRyaXhGaWx0ZXIgPSBkb3du
Y2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0
cyA8PCAiZ3JheXNjYWxlKCIgPDwgY29sb3JNYXRyaXhGaWx0ZXIuYW1vdW50KCkgPDwgIikiOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNvbG9yTWF0cml4RmlsdGVyID0gZG93bmNhc3Q8QmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgInNlcGlh
KCIgPDwgY29sb3JNYXRyaXhGaWx0ZXIuYW1vdW50KCkgPDwgIikiOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7CisgICAgICAgIGNv
bnN0IGF1dG8mIGNvbG9yTWF0cml4RmlsdGVyID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgInNhdHVyYXRlKCIgPDwgY29s
b3JNYXRyaXhGaWx0ZXIuYW1vdW50KCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAgICAgY29uc3QgYXV0
byYgY29sb3JNYXRyaXhGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0cyA8PCAiaHVlLXJvdGF0ZSgiIDw8IGNvbG9yTWF0
cml4RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKKyAgICAgICAgY29uc3QgYXV0byYgY29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0cyA8PCAiaW52ZXJ0KCIgPDwgY29tcG9uZW50
VHJhbnNmZXJGaWx0ZXIuYW1vdW50KCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKKyAgICAgICAgY29uc3QgYXV0byYg
Y29tcG9uZW50VHJhbnNmZXJGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0cyA8PCAib3BhY2l0eSgiIDw8IGNv
bXBvbmVudFRyYW5zZmVyRmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7CisgICAgICAgIGNv
bnN0IGF1dG8mIGNvbXBvbmVudFRyYW5zZmVyRmlsdGVyID0gZG93bmNhc3Q8QmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgImJyaWdo
dG5lc3MoIiA8PCBjb21wb25lbnRUcmFuc2ZlckZpbHRlci5hbW91bnQoKSA8PCAiKSI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsK
KyAgICAgICAgY29uc3QgYXV0byYgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIgPSBkb3duY2FzdDxC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0
cyA8PCAiY29udHJhc3QoIiA8PCBjb21wb25lbnRUcmFuc2ZlckZpbHRlci5hbW91bnQoKSA8PCAi
KSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxV
UjogeworICAgICAgICBjb25zdCBhdXRvJiBibHVyRmlsdGVyID0gZG93bmNhc3Q8Qmx1ckZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgImJsdXIoIiA8PCBibHVyRmlsdGVy
LnN0ZERldmlhdGlvbigpLnZhbHVlKCkgPDwgIikiOyAvLyBGSVhNRTogc2hvdWxkIGNhbGwgZmxv
YXRWYWx1ZUZvckxlbmd0aCgpIGJ1dCB0aGF0J3Mgb3V0aXNkZSBvZiBwbGF0Zm9ybS8uCisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6
IHsKKyAgICAgICAgY29uc3QgYXV0byYgZHJvcFNoYWRvd0ZpbHRlciA9IGRvd25jYXN0PERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7CisgICAgICAgIHRzIDw8ICJkcm9wLXNoYWRv
dygiIDw8IGRyb3BTaGFkb3dGaWx0ZXIueCgpIDw8ICIgIiA8PCBkcm9wU2hhZG93RmlsdGVyLnko
KSA8PCAiICIgPDwgZHJvcFNoYWRvd0ZpbHRlci5sb2NhdGlvbigpIDw8ICIgIjsKKyAgICAgICAg
dHMgPDwgZHJvcFNoYWRvd0ZpbHRlci5jb2xvcigpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAgICAgdHMg
PDwgInBhc3N0aHJvdWdoIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkRFRkFVTFQ6IHsKKyAgICAgICAgY29uc3QgYXV0byYgZGVmYXVsdEZpbHRlciA9IGRvd25j
YXN0PERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7CisgICAgICAgIHRzIDw8ICJkZWZh
dWx0IHR5cGU9IiA8PCAoaW50KWRlZmF1bHRGaWx0ZXIucmVwcmVzZW50ZWRUeXBlKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKKyAgICAg
ICAgdHMgPDwgIm5vbmUiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCAyMmQ4
NDBmM2Y2NzdlZTI1YjE4MDY4YzI3MmFmYWRmMDJjZTljZDgzLi5lMmVhNjM5ZjFjZGUwMDFkOTA4
YWVhODc2MDRhZjliZmE4NWVkMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTMzNiw2ICsz
MzYsOCBAQCBwcml2YXRlOgogICAgIENvbG9yIG1fY29sb3I7CiB9OwogCitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b24mKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRklMVEVST1BFUkFUSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmNwcAppbmRleCAwOTdjZDM4OTdkOWYyZGJlZmQ5NGI1ZGIwMDIx
MWIyNmQ5OTk3NzBiLi5lMWQwYTk3OWE0ZTkxOGEyY2M3M2I2ZTUxMTAzOWRmOWJlNDAwNzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJG
RUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMZW5ndGhG
dW5jdGlvbnMuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTUxLDQgKzE1MiwxOCBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRl
clRoYXRNb3Zlc1BpeGVscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsr
aSkgeworICAgICAgICBjb25zdCBhdXRvIGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7CisgICAgICAg
IGlmIChmaWx0ZXIpCisgICAgICAgICAgICB0cyA8PCAqZmlsdGVyOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0cyA8PCAiKG51bGwpIjsKKyAgICAgICAgaWYgKGkgPCBmaWx0ZXJzLnNpemUo
KSAtIDEpCisgICAgICAgICAgICB0cyA8PCAiICI7CisgICAgfQorICAgIHJldHVybiB0czsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAppbmRleCA3MWQz
ODczZjc5NjYwYTU0OWRjMWRkNzkwYjgzOTI1MjM3YjU1NTVjLi5jZjJjNWI5YjYyNWNiNjY5Yzhj
NzE0ZTdkM2ZiYTdjMDgzYTFkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaApAQCAtNzQsNiAr
NzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4gbV9v
cGVyYXRpb25zOwogfTsKIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBGaWx0ZXJPcGVyYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3Vy
Y2UuY3BwCmluZGV4IGI3MTdlMjA1Njg2ZWYxMzkwY2I3MGFhOTgwMzcwNmY4YTM4OGM1ZWQuLmQ1
MGJhMDRkZDc2ZWVjYTJlMmQxZDc2MzE2ZjNkMGQzOGM1YjZhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0
U291cmNlLmNwcApAQCAtNzEsMTIgKzcxLDYgQEAgYm9vbCBQb2ludExpZ2h0U291cmNlOjpzZXRa
KGZsb2F0IHopCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGbG9hdFBvaW50M0QmIHApCi17Ci0gICAgdHMg
PDwgIng9IiA8PCBwLngoKSA8PCAiIHk9IiA8PCBwLnkoKSA8PCAiIHo9IiA8PCBwLnooKTsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KIFRleHRTdHJlYW0mIFBvaW50TGlnaHRTb3VyY2U6OmV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgdHMgPDwgIlt0eXBl
PVBPSU5ULUxJR0hUXSAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCmluZGV4IGY5MzkwZWE5NzNl
YmIyMDQ5NWE5ZDM2MWYyMGFhMTk1N2YyMmRkZGMuLjMwYzRmNjFjNjQ0ODZjNGRiZWYwZmZjZmEy
OTQwYzJiZGVmZTU4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAKQEAgLTE3NSwxMiArMTc1
LDYgQEAgYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0IGxp
bWl0aW5nQ29uZUFuZ2xlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmxvYXRQb2ludDNEJiBwKQotewot
ICAgIHRzIDw8ICJ4PSIgPDwgcC54KCkgPDwgIiB5PSIgPDwgcC55KCkgPDwgIiB6PSIgPDwgcC56
KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBUZXh0U3RyZWFtJiBTcG90TGlnaHRTb3VyY2U6OmV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgdHMgPDwg
Ilt0eXBlPVNQT1QtTElHSFRdICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKaW5kZXgg
NTM2NDdkNDM0OGU2NjU0ZTAyYTE2ZTc3MzFmNjZlMjQxMjYxNGFhYy4uYWQ2Y2RlYjk4MTIzNTNm
NzFkNTcyYzk1ZTI0YTUwODBiYjg5YTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CkBAIC00MjUsNCArNDI2LDIwIEBAIHZvaWQgQWZmaW5lVHJhbnNmb3JtOjpyZWNv
bXBvc2UoY29uc3QgRGVjb21wb3NlZFR5cGUmIGRlY29tcCkKICAgICB0aGlzLT5zY2FsZShkZWNv
bXAuc2NhbGVYLCBkZWNvbXAuc2NhbGVZKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAg
aWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHRzIDw8ICJpZGVudGl0eSI7Cisg
ICAgZWxzZQorICAgICAgICB0cyA8PCAie209KCgiCisgICAgICAgIDw8IHRyYW5zZm9ybS5hKCkg
PDwgIiwiIDw8IHRyYW5zZm9ybS5iKCkKKyAgICAgICAgPDwgIikoIgorICAgICAgICA8PCB0cmFu
c2Zvcm0uYygpIDw8ICIsIiA8PCB0cmFuc2Zvcm0uZCgpCisgICAgICAgIDw8ICIpKSB0PSgiCisg
ICAgICAgIDw8IHRyYW5zZm9ybS5lKCkgPDwgIiwiIDw8IHRyYW5zZm9ybS5mKCkKKyAgICAgICAg
PDwgIil9IjsKKworICAgIHJldHVybiB0czsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3Jt
LmgKaW5kZXggZjNkZDQ3OTkxODVmYjQ0ZTBiMGYyOTAyZDg2Zjg4ODQ2MDUwMGIwOC4uZmFiNTYy
ZDkyZmIzMDE0ZGRhYTQwNDA1OTliZTg2ZDI3Y2Q1ODc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5z
Zm9ybS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEludFBvaW50
OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBUZXh0U3RyZWFtOwogY2xh
c3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybSB7CkBAIC0x
OTMsNiArMTk0LDggQEAgcHJpdmF0ZToKIAogQWZmaW5lVHJhbnNmb3JtIG1ha2VNYXBCZXR3ZWVu
UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCk7CiAK
K1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAppbmRleCAwNWIwMzg4NzBhNjk3NDY2Mzc1NGNmZTAzYWFlYjdhNGYx
NTZmMWJkLi5jY2Q2ZDI0N2FmYmZkYzViYzdmNGEwMTNjZWU3MTk4NmU1OTU4ZjNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCi0KKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xNzQyLDQgKzE3NDIs
MjAgQEAgYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNCYWNrRmFjZVZpc2libGUoKSBjb25z
dAogICAgIHJldHVybiB6Q29tcG9uZW50T2ZUcmFuc2Zvcm1lZE5vcm1hbCA8IDA7CiB9CiAKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgdHMgPDwgIlxuIjsKKyAgICB0cy5pbmNyZWFzZUlu
ZGVudCgpOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgIlsiIDw8IHRyYW5zZm9y
bS5tMTEoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0xMigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTEz
KCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMTQoKSA8PCAiXVxuIjsKKyAgICB0cy53cml0ZUluZGVu
dCgpOworICAgIHRzIDw8ICJbIiA8PCB0cmFuc2Zvcm0ubTIxKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tMjIoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0yMygpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTI0
KCkgPDwgIl1cbiI7CisgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8PCAiWyIgPDwgdHJh
bnNmb3JtLm0zMSgpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTMyKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tMzMoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0zNCgpIDw8ICJdXG4iOworICAgIHRzLndyaXRl
SW5kZW50KCk7CisgICAgdHMgPDwgIlsiIDw8IHRyYW5zZm9ybS5tNDEoKSA8PCAiICIgPDwgdHJh
bnNmb3JtLm00MigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTQzKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tNDQoKSA8PCAiXSI7CisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRleCAxOWQwYWRk
OWFiODNkMjUyZDQ5OGE1Yzc2MWE4ODc4OTM3MmRjNDE1Li40NDRhMjFjYzc3YzA4MzU4YzMxMTk3
MDUzZDllOTY5MmM3N2ViYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
CkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBMYXlvdXRSZWN0OwogY2xh
c3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRRdWFkOworY2xhc3MgVGV4dFN0cmVhbTsKIAogI2lm
IENQVShYODZfNjQpCiAjZGVmaW5lIFRSQU5TRk9STUFUSU9OX01BVFJJWF9VU0VfWDg2XzY0X1NT
RTIKQEAgLTQxMyw2ICs0MTQsOCBAQCBwcml2YXRlOgogICAgIE1hdHJpeDQgbV9tYXRyaXg7CiB9
OwogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBUcmFuc2Zvcm1hdGlvbk1hdHJpeF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0U3RyZWFtLmNwcAppbmRleCBjZDI0ZGJjMGY4YmQ1Y2FjNzMzOTBmMTgxZWY3
YzY2MDE0MjJiNzhmLi5lNWU0YzU4ODQ3M2U0MTAwMzcyNjVjY2UxZmVhOWY1ZjY1ZTgxYzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKQEAgLTEzOSw2
ICsxMzksMzQgQEAgU3RyaW5nIFRleHRTdHJlYW06OnJlbGVhc2UoKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKK3ZvaWQgVGV4dFN0cmVhbTo6c3RhcnRHcm91cCgpCit7CisgICAgVGV4dFN0cmVh
bSYgdHMgPSAqdGhpczsKKyAgICB0cyA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7Cisg
ICAgdHMgPDwgIigiOworICAgIHRzLmluY3JlYXNlSW5kZW50KCk7Cit9CisKK3ZvaWQgVGV4dFN0
cmVhbTo6ZW5kR3JvdXAoKQoreworICAgIFRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisgICAgdHMg
PDwgIikiOworICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7Cit9CisKK3ZvaWQgVGV4dFN0cmVhbTo6
bmV4dExpbmUoKQoreworICAgIFRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisgICAgdHMgPDwgIlxu
IjsKKyAgICB0cy53cml0ZUluZGVudCgpOworfQorCit2b2lkIFRleHRTdHJlYW06OndyaXRlSW5k
ZW50KCkKK3sKKyAgICBXZWJDb3JlOjp3cml0ZUluZGVudCgqdGhpcywgbV9pbmRlbnQpOworfQor
CiB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQogewogICAgIGZv
ciAoaW50IGkgPSAwOyBpICE9IGluZGVudDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRTdHJlYW0uaAppbmRleCBhNTM0NTU2Nzc0NWUyM2Y5NTE4ZDA5YWY4ZTE0ZjhkZWU5
ZDc5NGJiLi45YjFjNzg2NTI5NWQ5ZjZhNDA0ZWIyY2Q0NjE4YTc2YzIwMWQ4ZmM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaApAQCAtNDcsMjEgKzQ3LDIxIEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGJvb2wp
OwogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoaW50KTsKICAgICBX
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkKTsKLSAgICBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcpOwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwodW5z
aWduZWQgbG9uZyk7Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChsb25nIGxvbmcpOworICAg
IFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwobG9uZyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgbG9uZyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChMYXlvdXRVbml0KTsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBsb25nKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGZsb2F0KTsKICAgICBXRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGRvdWJsZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBjaGFyKik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB2b2lkKik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBTdHJpbmcmKTsKLSAgICBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyYpOwot
Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChMYXlvdXRVbml0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZvcm1hdE51bWJlclJlc3BlY3RpbmdJ
bnRlZ2VycyYpOwogCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLSAgICBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxJdGVtPiYgdmVjdG9yKQorICAgIFdFQkNPUkVfRVhQ
T1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgVmVjdG9yPEl0ZW0+JiB2ZWN0b3IpCiAg
ICAgewogICAgICAgICAqdGhpcyA8PCAiWyI7CiAKQEAgLTc1LDEwICs3NSw0NSBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAqdGhpcyA8PCAiXSI7CiAgICAgfQogCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGR1bXBQcm9wZXJ0eShjb25zdCBTdHJp
bmcmIG5hbWUsIGNvbnN0IFQmIHZhbHVlKQorICAgIHsKKyAgICAgICAgVGV4dFN0cmVhbSYgdHMg
PSAqdGhpczsKKyAgICAgICAgdHMuc3RhcnRHcm91cCgpOworICAgICAgICB0cyA8PCBuYW1lIDw8
ICIgIiA8PCB2YWx1ZTsKKyAgICAgICAgdHMuZW5kR3JvdXAoKTsKKyAgICB9CisKICAgICBXRUJD
T1JFX0VYUE9SVCBTdHJpbmcgcmVsZWFzZSgpOworICAgIAorICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgc3RhcnRHcm91cCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kR3JvdXAoKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5leHRMaW5lKCk7IC8vIE91dHB1dCBuZXdsaW5lIGFuZCBp
bmRlbnQuCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluY3JlYXNlSW5kZW50KCkgeyArK21f
aW5kZW50OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWNyZWFzZUluZGVudCgpIHsgLS1t
X2luZGVudDsgQVNTRVJUKG1faW5kZW50ID49IDApOyB9CisKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHdyaXRlSW5kZW50KCk7CisKKyAgICBjbGFzcyBHcm91cFNjb3BlIHsKKyAgICBwdWJsaWM6
CisgICAgICAgIEdyb3VwU2NvcGUoVGV4dFN0cmVhbSYgdHMpCisgICAgICAgICAgICA6IG1fc3Ry
ZWFtKHRzKQorICAgICAgICB7CisgICAgICAgICAgICBtX3N0cmVhbS5zdGFydEdyb3VwKCk7Cisg
ICAgICAgIH0KKyAgICAgICAgfkdyb3VwU2NvcGUoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X3N0cmVhbS5lbmRHcm91cCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBU
ZXh0U3RyZWFtJiBtX3N0cmVhbTsKKyAgICB9OwogCiBwcml2YXRlOgogICAgIFN0cmluZ0J1aWxk
ZXIgbV90ZXh0OworICAgIGludCBtX2luZGVudCB7IDAgfTsKIH07CiAKIHZvaWQgd3JpdGVJbmRl
bnQoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggMWNiNjk1NzQ2NmI1MjBm
M2UwNDI2YzRiMjIwYTgxNzcwNjUyNGZiYi4uYjZkZWUyNjFhNjFkOWY1ZDBkY2JhMDBiZmVjNzgw
ZTMwZTZmMGZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC0xMTgsMzYgKzExOCw2IEBAIHN0YXRpYyB2b2lkIHdy
aXRlSWZOb3REZWZhdWx0KFRleHRTdHJlYW0mIHRzLCBjb25zdCBjaGFyKiBuYW1lLCBWYWx1ZVR5
cGUgdmFsdWUsCiAgICAgICAgIHdyaXRlTmFtZVZhbHVlUGFpcih0cywgbmFtZSwgdmFsdWUpOwog
fQogCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSkKLXsKLSAgICBpZiAodHJhbnNmb3JtLmlzSWRlbnRpdHkoKSkK
LSAgICAgICAgdHMgPDwgImlkZW50aXR5IjsKLSAgICBlbHNlCi0gICAgICAgIHRzIDw8ICJ7bT0o
KCIKLSAgICAgICAgICAgPDwgdHJhbnNmb3JtLmEoKSA8PCAiLCIgPDwgdHJhbnNmb3JtLmIoKQot
ICAgICAgICAgICA8PCAiKSgiCi0gICAgICAgICAgIDw8IHRyYW5zZm9ybS5jKCkgPDwgIiwiIDw8
IHRyYW5zZm9ybS5kKCkKLSAgICAgICAgICAgPDwgIikpIHQ9KCIKLSAgICAgICAgICAgPDwgdHJh
bnNmb3JtLmUoKSA8PCAiLCIgPDwgdHJhbnNmb3JtLmYoKQotICAgICAgICAgICA8PCAiKX0iOwot
Ci0gICAgcmV0dXJuIHRzOwotfQotCi1zdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgV2luZFJ1bGUgcnVsZSkKLXsKLSAgICBzd2l0Y2ggKHJ1bGUpIHsK
LSAgICBjYXNlIFJVTEVfTk9OWkVSTzoKLSAgICAgICAgdHMgPDwgIk5PTi1aRVJPIjsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgY2FzZSBSVUxFX0VWRU5PREQ6Ci0gICAgICAgIHRzIDw8ICJFVkVOLU9E
RCI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHJldHVybiB0czsKLX0KLQogc3RhdGlj
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNWR1VuaXRUeXBl
czo6U1ZHVW5pdFR5cGUmIHVuaXRUeXBlKQogewogICAgIHRzIDw8IFNWR1Byb3BlcnR5VHJhaXRz
PFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGU+Ojp0b1N0cmluZyh1bml0VHlwZSk7CkBAIC0xNjAs
MTEgKzEzMCw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBTVkdNYXJrZXJVbml0c1R5cGUmIG1hcmtlclVuCiAgICAgcmV0dXJuIHRzOwogfQog
Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBDb2xvciYgYykK
LXsKLSAgICByZXR1cm4gdHMgPDwgYy5uYW1lRm9yUmVuZGVyVHJlZUFzVGV4dCgpOwotfQotCiAv
LyBGSVhNRTogTWF5YmUgdGhpcyBzaG91bGQgYmUgaW4gS0NhbnZhc1JlbmRlcmluZ1N0eWxlLmNw
cAogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERh
c2hBcnJheSYgYSkKIHsKQEAgLTE3OSw0MCArMTQ0LDYgQEAgc3RhdGljIFRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IERhc2hBcnJheSYgYSkKICAgICByZXR1cm4g
dHM7CiB9CiAKLS8vIEZJWE1FOiBNYXliZSB0aGlzIHNob3VsZCBiZSBpbiBHcmFwaGljc1R5cGVz
LmNwcAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIExpbmVD
YXAgc3R5bGUpCi17Ci0gICAgc3dpdGNoIChzdHlsZSkgewotICAgIGNhc2UgQnV0dENhcDoKLSAg
ICAgICAgdHMgPDwgIkJVVFQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFJvdW5kQ2FwOgot
ICAgICAgICB0cyA8PCAiUk9VTkQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNxdWFyZUNh
cDoKLSAgICAgICAgdHMgPDwgIlNRVUFSRSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBy
ZXR1cm4gdHM7Ci19Ci0KLS8vIEZJWE1FOiBNYXliZSB0aGlzIHNob3VsZCBiZSBpbiBHcmFwaGlj
c1R5cGVzLmNwcAotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMs
IExpbmVKb2luIHN0eWxlKQotewotICAgIHN3aXRjaCAoc3R5bGUpIHsKLSAgICBjYXNlIE1pdGVy
Sm9pbjoKLSAgICAgICAgdHMgPDwgIk1JVEVSIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBS
b3VuZEpvaW46Ci0gICAgICAgIHRzIDw8ICJST1VORCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgQmV2ZWxKb2luOgotICAgICAgICB0cyA8PCAiQkVWRUwiOwotICAgICAgICBicmVhazsKLSAg
ICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCiBzdGF0aWMgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgU1ZHU3ByZWFkTWV0aG9kVHlwZSYgdHlwZSkKIHsKICAgICB0
cyA8PCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdTcHJlYWRNZXRob2RUeXBlPjo6dG9TdHJpbmcodHlw
ZSkudXBwZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyVHJlZUFzVGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5k
ZXJUcmVlQXNUZXh0LmgKaW5kZXggZWJjMzkzMmY0OWQyMmU4NjlkNjE4OTkyY2I5OGZkNDBjMDdm
ZDcyMi4uNWYwNWRhYzFiYTlmYzNmNzczYmU0ZDJjZWI4YzI4NjlmMjAwNjc0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmgKQEAg
LTU4LDExICs1OCw2IEBAIHZvaWQgd3JpdGVTVkdJbmxpbmVUZXh0KFRleHRTdHJlYW0mLCBjb25z
dCBSZW5kZXJTVkdJbmxpbmVUZXh0JiwgaW50IGluZGVudCk7CiB2b2lkIHdyaXRlU1ZHVGV4dChU
ZXh0U3RyZWFtJiwgY29uc3QgUmVuZGVyU1ZHVGV4dCYsIGludCBpbmRlbnQpOwogdm9pZCB3cml0
ZVJlc291cmNlcyhUZXh0U3RyZWFtJiwgY29uc3QgUmVuZGVyT2JqZWN0JiwgaW50IGluZGVudCk7
CiAKLS8vIGhlbHBlciBvcGVyYXRvcnMgZGVmaW5lZCB1c2VkIGluIHZhcmlvdXMgY2xhc3NlcyB0
byBkdW1wIHRoZSByZW5kZXIgdHJlZS4KLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYpOwotVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVh
bSYsIGNvbnN0IEZsb2F0UmVjdCYpOwotCiAvLyBoZWxwZXIgb3BlcmF0b3JzIHNwZWNpZmljIHRv
IGR1bXBpbmcgdGhlIHJlbmRlciB0cmVlLiB0aGVzZSBhcmUgdXNlZCBpbiB2YXJpb3VzIGNsYXNz
ZXMgdG8gZHVtcCB0aGUgcmVuZGVyIHRyZWUKIC8vIHRoZXNlIGNvdWxkIGJlIGRlZmluZWQgaW4g
c2VwYXJhdGUgbmFtZXNwYWNlIHRvIGF2b2lkIG1hdGNoaW5nIHRoZXNlIGdlbmVyaWMgc2lnbmF0
dXJlcyB1bmludGVudGlvbmFsbHkuCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9y
VHJhbnNhY3Rpb24uY3BwCmluZGV4IDVhYjVjNjRhN2FkOTZhZWM4OTgzNDAzYjhmMmQ1Njg0MjJj
MTA3ZTcuLjZiMTY2OTM2YTFjYmEyN2IyNTg4YjM4MTc2OWFiZDViZDYzZDMzNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRp
bmF0b3JUcmFuc2FjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1Njcm9sbGlu
Zy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcApAQCAtMSw1ICsxLDUg
QEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC00NTQsMTY2ICs0NTQs
NDQgQEAgYm9vbCBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZWNvZGUo
SVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIKIAogI2lmICFkZWZpbmVkKE5ERUJVRykgfHwg
IUxPR19ESVNBQkxFRAogCi1jbGFzcyBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSA6IHB1
YmxpYyBUZXh0U3RyZWFtIHsKLXB1YmxpYzoKLSAgICB1c2luZyBUZXh0U3RyZWFtOjpvcGVyYXRv
cjw8OwotCi0gICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0oKQotICAgICAgICA6IG1f
aW5kZW50KDApCi0gICAgewotICAgIH0KLQotICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFNjcm9sbGluZ05vZGVUeXBlKTsKLQotICAgIFJlbW90ZVNjcm9sbGlu
Z1RyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENv
bnN0cmFpbnRzJik7Ci0gICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9y
PDwoY29uc3QgU3RpY2t5UG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJik7Ci0KLSAgICB2b2lk
IGR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVUcmVlJiwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09u
bHkgPSB0cnVlKTsKLQotICAgIHZvaWQgZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmLCBi
b29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSA9IHRydWUpOwotICAgIHZvaWQgZHVtcChjb25zdCBT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSA9
IHRydWUpOwotICAgIHZvaWQgZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5n
Tm9kZSYsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5ID0gdHJ1ZSk7Ci0gICAgdm9pZCBkdW1w
KGNvbnN0IFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJiwgYm9vbCBjaGFuZ2Vk
UHJvcGVydGllc09ubHkgPSB0cnVlKTsKLSAgICB2b2lkIGR1bXAoY29uc3QgU2Nyb2xsaW5nU3Rh
dGVGaXhlZE5vZGUmLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSA9IHRydWUpOwotICAgIHZv
aWQgZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUmLCBib29sIGNoYW5nZWRQcm9w
ZXJ0aWVzT25seSA9IHRydWUpOwotCi0gICAgdm9pZCBpbmNyZWFzZUluZGVudCgpIHsgKyttX2lu
ZGVudDsgfQotICAgIHZvaWQgZGVjcmVhc2VJbmRlbnQoKSB7IC0tbV9pbmRlbnQ7IEFTU0VSVCht
X2luZGVudCA+PSAwKTsgfQotCi0gICAgdm9pZCB3cml0ZUluZGVudCgpOwotCi1wcml2YXRlOgot
ICAgIHZvaWQgcmVjdXJzaXZlRHVtcE5vZGVzKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYsIGJv
b2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKLQotICAgIGludCBtX2luZGVudDsKLX07Ci0KLXZv
aWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OndyaXRlSW5kZW50KCkKLXsKLSAgICBm
b3IgKGludCBpID0gMDsgaSA8IG1faW5kZW50OyArK2kpCi0gICAgICAgICp0aGlzIDw8ICIgICI7
Ci19Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RhdGljIHZvaWQgZHVtcFByb3BlcnR5KFJlbW90
ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cywgU3RyaW5nIG5hbWUsIFQgdmFsdWUpCi17Ci0g
ICAgdHMgPDwgIlxuIjsKLSAgICB0cy5pbmNyZWFzZUluZGVudCgpOwotICAgIHRzLndyaXRlSW5k
ZW50KCk7Ci0gICAgdHMgPDwgIigiIDw8IG5hbWUgPDwgIiAiOwotICAgIHRzIDw8IHZhbHVlIDw8
ICIpIjsKLSAgICB0cy5kZWNyZWFzZUluZGVudCgpOwotfQotCi1SZW1vdGVTY3JvbGxpbmdUcmVl
VGV4dFN0cmVhbSYgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoU2Ny
b2xsaW5nTm9kZVR5cGUgbm9kZVR5cGUpCi17Ci0gICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRT
dHJlYW0mIHRzID0gKnRoaXM7Ci0KLSAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7Ci0gICAgY2FzZSBG
cmFtZVNjcm9sbGluZ05vZGU6IHRzIDw8ICJmcmFtZS1zY3JvbGxpbmciOyBicmVhazsKLSAgICBj
YXNlIE92ZXJmbG93U2Nyb2xsaW5nTm9kZTogdHMgPDwgIm92ZXJmbG93LXNjcm9sbGluZyI7IGJy
ZWFrOwotICAgIGNhc2UgRml4ZWROb2RlOiB0cyA8PCAiZml4ZWQiOyBicmVhazsKLSAgICBjYXNl
IFN0aWNreU5vZGU6IHRzIDw8ICJzdGlja3kiOyBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4g
dHM7Ci19Ci0KLVJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiBSZW1vdGVTY3JvbGxpbmdU
cmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25z
dHJhaW50cyYgY29uc3RyYWludHMpCi17Ci0gICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJl
YW0mIHRzID0gKnRoaXM7Ci0KLSAgICBkdW1wUHJvcGVydHkodHMsICJ2aWV3cG9ydC1yZWN0LWF0
LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMudmlld3BvcnRSZWN0QXRMYXN0TGF5b3V0KCkpOwot
ICAgIGR1bXBQcm9wZXJ0eSh0cywgImxheWVyLXBvc2l0aW9uLWF0LWxhc3QtbGF5b3V0IiwgY29u
c3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsKLQotICAgIHJldHVybiB0czsK
LX0KLQotUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0mIFJlbW90ZVNjcm9sbGluZ1RyZWVU
ZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFN0aWNreVBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50cyYgY29uc3RyYWludHMpCitzdGF0aWMgdm9pZCBkdW1wKFRleHRTdHJlYW0mIHRzLCBjb25z
dCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRp
ZXNPbmx5KQogewotICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlz
OwotCi0gICAgZHVtcFByb3BlcnR5KHRzLCAic3RpY2t5LXBvc2l0aW9uLWF0LWxhc3QtbGF5b3V0
IiwgY29uc3RyYWludHMuc3RpY2t5T2Zmc2V0QXRMYXN0TGF5b3V0KCkpOwotICAgIGR1bXBQcm9w
ZXJ0eSh0cywgImxheWVyLXBvc2l0aW9uLWF0LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMubGF5
ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsKLQotICAgIHJldHVybiB0czsKLX0KLQotdm9pZCBS
ZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZU5v
ZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQotewotICAgIFJlbW90ZVNjcm9s
bGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotCi0gICAgdHMgPDwgIihub2RlICIgPDwg
bm9kZS5zY3JvbGxpbmdOb2RlSUQoKTsKLQotICAgIGR1bXBQcm9wZXJ0eSh0cywgInR5cGUiLCBu
b2RlLm5vZGVUeXBlKCkpOwotCi0gICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVOb2RlOjpTY3JvbGxMYXllcikpCi0g
ICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXll
cjo6UGxhdGZvcm1MYXllcklEPihub2RlLmxheWVyKCkpKTsKLSAgICAKLSAgICBzd2l0Y2ggKG5v
ZGUubm9kZVR5cGUoKSkgewotICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOgotICAgICAgICBk
dW1wKGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlPihub2RlKSwgY2hh
bmdlZFByb3BlcnRpZXNPbmx5KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBPdmVyZmxvd1Nj
cm9sbGluZ05vZGU6Ci0gICAgICAgIGR1bXAoZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVPdmVyZmxv
d1Njcm9sbGluZ05vZGU+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIEZpeGVkTm9kZToKLSAgICAgICAgZHVtcChkb3duY2FzdDxTY3JvbGxp
bmdTdGF0ZUZpeGVkTm9kZT4obm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU3RpY2t5Tm9kZToKLSAgICAgICAgZHVtcChkb3duY2FzdDxTY3Jv
bGxpbmdTdGF0ZVN0aWNreU5vZGU+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci19Ci0gICAgCi12b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0
U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSYgbm9kZSwgYm9v
bCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCi17Ci0gICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRT
dHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkg
fHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpT
Y3JvbGxhYmxlQXJlYVNpemUpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJzY3JvbGxhYmxl
LWFyZWEtc2l6ZSIsIG5vZGUuc2Nyb2xsYWJsZUFyZWFTaXplKCkpOworICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInNjcm9sbGFibGUtYXJlYS1zaXplIiwgbm9kZS5zY3JvbGxhYmxlQXJlYVNpemUo
KSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQ
cm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlRvdGFsQ29udGVudHNTaXplKSkK
LSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAidG90YWwtY29udGVudHMtc2l6ZSIsIG5vZGUudG90
YWxDb250ZW50c1NpemUoKSk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidG90YWwtY29udGVu
dHMtc2l6ZSIsIG5vZGUudG90YWxDb250ZW50c1NpemUoKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OlJlYWNoYWJsZUNvbnRlbnRzU2l6ZSkpCi0gICAgICAgIGR1bXBQcm9wZXJ0
eSh0cywgInJlYWNoYWJsZS1jb250ZW50cy1zaXplIiwgbm9kZS5yZWFjaGFibGVDb250ZW50c1Np
emUoKSk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgicmVhY2hhYmxlLWNvbnRlbnRzLXNpemUi
LCBub2RlLnJlYWNoYWJsZUNvbnRlbnRzU2l6ZSgpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZTo6U2Nyb2xsUG9zaXRpb24pKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJzY3Jv
bGwtcG9zaXRpb24iLCBub2RlLnNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICB0cy5kdW1wUHJv
cGVydHkoInNjcm9sbC1wb3NpdGlvbiIsIG5vZGUuc2Nyb2xsUG9zaXRpb24oKSk7CiAKICAgICBp
ZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3Jv
bGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbE9yaWdpbikpCi0gICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgInNjcm9sbC1vcmlnaW4iLCBub2RlLnNjcm9sbE9yaWdpbigpKTsKKyAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJzY3JvbGwtb3JpZ2luIiwgbm9kZS5zY3JvbGxPcmlnaW4oKSk7CiAK
ICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uKSkg
ewotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJyZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uIiwg
bm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigpKTsKLSAgICAgICAgZHVtcFByb3BlcnR5KHRz
LCAicmVxdWVzdGVkLXNjcm9sbC1wb3NpdGlvbi1pcy1wcm9ncmFtYXRpYyIsIG5vZGUucmVxdWVz
dGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGljU2Nyb2xsKCkpOworICAgICAg
ICB0cy5kdW1wUHJvcGVydHkoInJlcXVlc3RlZC1zY3JvbGwtcG9zaXRpb24iLCBub2RlLnJlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uKCkpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlcXVlc3Rl
ZC1zY3JvbGwtcG9zaXRpb24taXMtcHJvZ3JhbWF0aWMiLCBub2RlLnJlcXVlc3RlZFNjcm9sbFBv
c2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKICAgICB9CiB9CiAgICAgCi12
b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkK
K3N0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlRnJh
bWVTY3JvbGxpbmdOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKIHsKLSAg
ICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLSAgICAKLSAgICBk
dW1wKHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUp
LCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOworICAgIGR1bXAodHMsIHN0YXRpY19jYXN0PGNvbnN0
IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09u
bHkpOwogICAgIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxl
RmFjdG9yKSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiZnJhbWUtc2NhbGUtZmFjdG9yIiwg
bm9kZS5mcmFtZVNjYWxlRmFjdG9yKCkpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZyYW1l
LXNjYWxlLWZhY3RvciIsIG5vZGUuZnJhbWVTY2FsZUZhY3RvcigpKTsKIAogICAgIGlmICghY2hh
bmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0
YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpOb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbikpIHsKLSAgICAg
ICAgdHMgPDwgIlxuIjsKLSAgICAgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLSAgICAgICAgdHMu
d3JpdGVJbmRlbnQoKTsKLSAgICAgICAgdHMgPDwgIihub24tZmFzdC1zY3JvbGxhYmxlLXJlZ2lv
biI7Ci0gICAgICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CisgICAgICAgIFRleHRTdHJlYW06Okdy
b3VwU2NvcGUgZ3JvdXAodHMpOworICAgICAgICB0cyA8PCAibm9uLWZhc3Qtc2Nyb2xsYWJsZS1y
ZWdpb24iOwogICAgICAgICBmb3IgKGF1dG8gcmVjdCA6IG5vZGUubm9uRmFzdFNjcm9sbGFibGVS
ZWdpb24oKS5yZWN0cygpKSB7CiAgICAgICAgICAgICB0cyA8PCAiXG4iOwogICAgICAgICAgICAg
dHMud3JpdGVJbmRlbnQoKTsKICAgICAgICAgICAgIHRzIDw8IHJlY3Q7CiAgICAgICAgIH0KLSAg
ICAgICAgdHMgPDwgIilcbiI7Ci0gICAgICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7Ci0gICAgICAg
IHRzLmRlY3JlYXNlSW5kZW50KCk7CiAgICAgfQogCiAgICAgLy8gRklYTUU6IGR1bXAgc3luY2hy
b25vdXNTY3JvbGxpbmdSZWFzb25zCkBAIC02MjEsMTIzICs0OTksMTIyIEBAIHZvaWQgUmVtb3Rl
U2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVGcmFtZVNj
cm9sbGluZ05vZGUmCiAgICAgLy8gRklYTUU6IGR1bXAgc2Nyb2xsQmVoYXZpb3JGb3JGaXhlZEVs
ZW1lbnRzCiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5n
ZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SGVhZGVySGVpZ2h0
KSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiaGVhZGVyLWhlaWdodCIsIG5vZGUuaGVhZGVy
SGVpZ2h0KCkpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImhlYWRlci1oZWlnaHQiLCBub2Rl
LmhlYWRlckhlaWdodCgpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpG
b290ZXJIZWlnaHQpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJmb290ZXItaGVpZ2h0Iiwg
bm9kZS5mb290ZXJIZWlnaHQoKSk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiZm9vdGVyLWhl
aWdodCIsIG5vZGUuZm9vdGVySGVpZ2h0KCkpOwogCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGll
c09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9s
bGluZ05vZGU6OlRvcENvbnRlbnRJbnNldCkpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInRv
cC1jb250ZW50LWluc2V0Iiwgbm9kZS50b3BDb250ZW50SW5zZXQoKSk7CisgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgidG9wLWNvbnRlbnQtaW5zZXQiLCBub2RlLnRvcENvbnRlbnRJbnNldCgpKTsK
IAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3Bl
cnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpGcmFtZVNjYWxlRmFjdG9yKSkK
LSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiZnJhbWUtc2NhbGUtZmFjdG9yIiwgbm9kZS5mcmFt
ZVNjYWxlRmFjdG9yKCkpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZyYW1lLXNjYWxlLWZh
Y3RvciIsIG5vZGUuZnJhbWVTY2FsZUZhY3RvcigpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3Bl
cnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVT
Y3JvbGxpbmdOb2RlOjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBkdW1wUHJvcGVy
dHkodHMsICJzY3JvbGxlZC1jb250ZW50cy1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOworICAg
ICAgICB0cy5kdW1wUHJvcGVydHkoInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nh
c3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNM
YXllcigpKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6SW5zZXRDbGlw
TGF5ZXIpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJjbGlwLWluc2V0LWxheWVyIiwgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmluc2V0Q2xpcExh
eWVyKCkpKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjbGlwLWluc2V0LWxheWVyIiwgc3Rh
dGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmluc2V0Q2xpcExh
eWVyKCkpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpDb250ZW50U2hh
ZG93TGF5ZXIpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJjb250ZW50LXNoYWRvdy1sYXll
ciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5jb250
ZW50U2hhZG93TGF5ZXIoKSkpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNvbnRlbnQtc2hh
ZG93LWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihu
b2RlLmNvbnRlbnRTaGFkb3dMYXllcigpKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVz
T25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xs
aW5nTm9kZTo6SGVhZGVyTGF5ZXIpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJoZWFkZXIt
bGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUu
aGVhZGVyTGF5ZXIoKSkpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImhlYWRlci1sYXllciIs
IHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5oZWFkZXJM
YXllcigpKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0No
YW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVyTGF5
ZXIpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJmb290ZXItbGF5ZXIiLCBzdGF0aWNfY2Fz
dDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuZm9vdGVyTGF5ZXIoKSkpOwor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZvb3Rlci1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBo
aWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5mb290ZXJMYXllcigpKSk7CiB9CiAgICAg
Ci12b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVz
T25seSkKK3N0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0
YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25s
eSkKIHsKLSAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLSAg
ICAKLSAgICBkdW1wKHN0YXRpY19jYXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZSY+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOworICAgIGR1bXAodHMsIHN0YXRpY19j
YXN0PGNvbnN0IFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSY+KG5vZGUpLCBjaGFuZ2VkUHJv
cGVydGllc09ubHkpOwogICAgIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5v
ZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2Rl
OjpTY3JvbGxlZENvbnRlbnRzTGF5ZXIpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJzY3Jv
bGxlZC1jb250ZW50cy1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3Jt
TGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOworICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInNjcm9sbGVkLWNvbnRlbnRzLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NM
YXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLnNjcm9sbGVkQ29udGVudHNMYXllcigpKSk7CiB9
CiAKLXZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xs
aW5nU3RhdGVGaXhlZE5vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQorc3Rh
dGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsaW5nU3RhdGVGaXhlZE5v
ZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQogewotICAgIFJlbW90ZVNjcm9s
bGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVy
dGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGaXhlZE5v
ZGU6OlZpZXdwb3J0Q29uc3RyYWludHMpKQogICAgICAgICB0cyA8PCBub2RlLnZpZXdwb3J0Q29u
c3RyYWludHMoKTsKIH0KIAotdm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVt
cChjb25zdCBTY3JvbGxpbmdTdGF0ZVN0aWNreU5vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3Bl
cnRpZXNPbmx5KQorc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKIHsK
LSAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLQogICAgIGlm
ICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFpbnRzKSkKICAgICAgICAgdHMgPDwg
bm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKLXZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJl
ZVRleHRTdHJlYW06OnJlY3Vyc2l2ZUR1bXBOb2Rlcyhjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUm
IG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQorc3RhdGljIHZvaWQgZHVtcChUZXh0
U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQ
cm9wZXJ0aWVzT25seSkKIHsKLSAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMg
PSAqdGhpczsKKyAgICB0cy5kdW1wUHJvcGVydHkoInR5cGUiLCBub2RlLm5vZGVUeXBlKCkpOwog
Ci0gICAgdHMgPDwgIlxuIjsKLSAgICB0cy5pbmNyZWFzZUluZGVudCgpOwotICAgIHRzLndyaXRl
SW5kZW50KCk7Ci0gICAgZHVtcChub2RlLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOworICAgIGlm
ICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5KFNjcm9s
bGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImxh
eWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmxh
eWVyKCkpKTsKKyAgICAKKyAgICBzd2l0Y2ggKG5vZGUubm9kZVR5cGUoKSkgeworICAgIGNhc2Ug
RnJhbWVTY3JvbGxpbmdOb2RlOgorICAgICAgICBkdW1wKHRzLCBkb3duY2FzdDxTY3JvbGxpbmdT
dGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOgorICAgICAgICBk
dW1wKHRzLCBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZT4obm9k
ZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRml4
ZWROb2RlOgorICAgICAgICBkdW1wKHRzLCBkb3duY2FzdDxTY3JvbGxpbmdTdGF0ZUZpeGVkTm9k
ZT4obm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgU3RpY2t5Tm9kZToKKyAgICAgICAgZHVtcCh0cywgZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVT
dGlja3lOb2RlPihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorfQorCitzdGF0aWMgdm9pZCByZWN1cnNpdmVEdW1wTm9kZXMoVGV4dFN0cmVhbSYg
dHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYgbm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGll
c09ubHkpCit7CisgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CisgICAgdHMg
PDwgIm5vZGUgIiA8PCBub2RlLnNjcm9sbGluZ05vZGVJRCgpOworICAgIGR1bXAodHMsIG5vZGUs
IGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7CiAKICAgICBpZiAobm9kZS5jaGlsZHJlbigpKSB7Ci0g
ICAgICAgIHRzIDw8ICJcbiI7Ci0gICAgICAgIHRzLmluY3JlYXNlSW5kZW50KCk7Ci0gICAgICAg
IHRzLndyaXRlSW5kZW50KCk7Ci0gICAgICAgIHRzIDw8ICIoY2hpbGRyZW4iOwotICAgICAgICB0
cy5pbmNyZWFzZUluZGVudCgpOworICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3Vw
KHRzKTsKKyAgICAgICAgdHMgPDwgImNoaWxkcmVuIjsKIAogICAgICAgICBmb3IgKGF1dG8mIGNo
aWxkTm9kZSA6ICpub2RlLmNoaWxkcmVuKCkpCi0gICAgICAgICAgICByZWN1cnNpdmVEdW1wTm9k
ZXMoKmNoaWxkTm9kZSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKLQotICAgICAgICB0cyA8PCAi
KSI7Ci0gICAgICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7Ci0gICAgICAgIHRzLmRlY3JlYXNlSW5k
ZW50KCk7CisgICAgICAgICAgICByZWN1cnNpdmVEdW1wTm9kZXModHMsICpjaGlsZE5vZGUsIGNo
YW5nZWRQcm9wZXJ0aWVzT25seSk7CiAgICAgfQotCi0gICAgdHMgPDwgIikiOwotICAgIHRzLmRl
Y3JlYXNlSW5kZW50KCk7CiB9CiAKLXZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06
OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRyZWUsIGJvb2wgY2hhbmdlZFBy
b3BlcnRpZXNPbmx5KQorc3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Ny
b2xsaW5nU3RhdGVUcmVlJiBzdGF0ZVRyZWUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQog
ewotICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotCi0gICAg
ZHVtcFByb3BlcnR5KHRzLCAiaGFzIGNoYW5nZWQgcHJvcGVydGllcyIsIHN0YXRlVHJlZS5oYXND
aGFuZ2VkUHJvcGVydGllcygpKTsKLSAgICBkdW1wUHJvcGVydHkodHMsICJoYXMgbmV3IHJvb3Qg
bm9kZSIsIHN0YXRlVHJlZS5oYXNOZXdSb290U3RhdGVOb2RlKCkpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiaGFzIGNoYW5nZWQgcHJvcGVydGllcyIsIHN0YXRlVHJlZS5oYXNDaGFuZ2VkUHJvcGVy
dGllcygpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImhhcyBuZXcgcm9vdCBub2RlIiwgc3RhdGVU
cmVlLmhhc05ld1Jvb3RTdGF0ZU5vZGUoKSk7CiAKICAgICBpZiAoc3RhdGVUcmVlLnJvb3RTdGF0
ZU5vZGUoKSkKLSAgICAgICAgcmVjdXJzaXZlRHVtcE5vZGVzKCpzdGF0ZVRyZWUucm9vdFN0YXRl
Tm9kZSgpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOworICAgICAgICByZWN1cnNpdmVEdW1wTm9k
ZXModHMsICpzdGF0ZVRyZWUucm9vdFN0YXRlTm9kZSgpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkp
OwogCiAgICAgaWYgKCFzdGF0ZVRyZWUucmVtb3ZlZE5vZGVzKCkuaXNFbXB0eSgpKSB7CiAgICAg
ICAgIFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+IHJlbW92ZWROb2RlczsKICAgICAgICAgY29weVRv
VmVjdG9yKHN0YXRlVHJlZS5yZW1vdmVkTm9kZXMoKSwgcmVtb3ZlZE5vZGVzKTsKLSAgICAgICAg
ZHVtcFByb3BlcnR5PFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+Pih0cywgInJlbW92ZWQtbm9kZXMi
LCByZW1vdmVkTm9kZXMpOworICAgICAgICB0cy5kdW1wUHJvcGVydHk8VmVjdG9yPFNjcm9sbGlu
Z05vZGVJRD4+KCJyZW1vdmVkLW5vZGVzIiwgcmVtb3ZlZE5vZGVzKTsKICAgICB9CiB9CiAKIFdU
Rjo6Q1N0cmluZyBSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpkZXNjcmlw
dGlvbigpIGNvbnN0CiB7Ci0gICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0gdHM7Cisg
ICAgVGV4dFN0cmVhbSB0czsKIAotICAgIHRzIDw8ICIoXG4iOwotICAgIHRzLmluY3JlYXNlSW5k
ZW50KCk7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiKHNjcm9sbGluZyBzdGF0
ZSB0cmVlIjsKKyAgICB0cy5zdGFydEdyb3VwKCk7CisgICAgdHMgPDwgInNjcm9sbGluZyBzdGF0
ZSB0cmVlIjsKIAogICAgIGlmIChtX3Njcm9sbGluZ1N0YXRlVHJlZSkgewogICAgICAgICBpZiAo
IW1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5oYXNDaGFuZ2VkUHJvcGVydGllcygpKQogICAgICAgICAg
ICAgdHMgPDwgIiAtIG5vIGNoYW5nZXMiOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cy5k
dW1wKCptX3Njcm9sbGluZ1N0YXRlVHJlZS5nZXQoKSk7CisgICAgICAgICAgICBXZWJLaXQ6OmR1
bXAodHMsICptX3Njcm9sbGluZ1N0YXRlVHJlZS5nZXQoKSwgdHJ1ZSk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHRzIDw8ICIgLSBub25lIjsKIAotICAgIHRzIDw8ICIpXG4iOwotICAgIHRzLmRlY3Jl
YXNlSW5kZW50KCk7CisgICAgdHMuZW5kR3JvdXAoKTsKIAogICAgIHJldHVybiB0cy5yZWxlYXNl
KCkudXRmOCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KaW5kZXggMGE3ZmY2MDJiN2U3M2NhOWVhNzA4OGRm
NWI1OTEyMGZhZDVlMTgxZi4uN2U3YzkzMmMyZjBlZDExZTg4OWMxNTdiYTc0YjQ5MjkzNDU0MWIw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uLm1tCkBAIC02NDcsNDMzICs2NDcsOCBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpzZXRMYXllcklEc1dpdGhOZXdseVVucmVhY2hhYmxlQmFja2luZ1N0
b3JlKFZlYwogCiAjaWYgIWRlZmluZWQoTkRFQlVHKSB8fCAhTE9HX0RJU0FCTEVECiAKLWNsYXNz
IFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0gOiBwdWJsaWMgVGV4dFN0cmVhbQorc3RhdGljIFRl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbW90ZUxheWVyQmFj
a2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCiB7Ci1wdWJsaWM6Ci0gICAgdXNpbmcgVGV4dFN0cmVh
bTo6b3BlcmF0b3I8PDsKLQotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0oKQotICAgICAg
ICA6IG1faW5kZW50KDApCi0gICAgewotICAgIH0KLQotICAgIFJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKTsKLSAgICBSZW1v
dGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFBsYXRmb3JtQ0FMYXllcjo6RmlsdGVy
VHlwZSk7Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBG
bG9hdFJvdW5kZWRSZWN0Jik7Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChGbG9hdFBvaW50M0QpOwotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoQ29sb3IpOwotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
Y29uc3QgVmVjdG9yPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4mKTsK
LSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZpbHRlck9w
ZXJhdGlvbiYpOwotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29u
c3QgRmlsdGVyT3BlcmF0aW9ucyYpOwotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6UHJvcGVydGllcyYpOwot
ICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUmKTsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UmKTsKLSAg
ICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KEJsZW5kTW9kZSk7Ci0gICAg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpBbmltYXRpb25UeXBlKTsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSk7Ci0gICAgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChQbGF0Zm9ybUNBQW5pbWF0aW9uOjpWYWx1ZUZ1bmN0
aW9uVHlwZSk7Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25z
dCBUaW1pbmdGdW5jdGlvbiYpOwotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoY29uc3QgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1ZSYpOwot
Ci0gICAgdm9pZCBpbmNyZWFzZUluZGVudCgpIHsgKyttX2luZGVudDsgfQotICAgIHZvaWQgZGVj
cmVhc2VJbmRlbnQoKSB7IC0tbV9pbmRlbnQ7IEFTU0VSVChtX2luZGVudCA+PSAwKTsgfQotCi0g
ICAgdm9pZCB3cml0ZUluZGVudCgpOwotCi1wcml2YXRlOgotICAgIGludCBtX2luZGVudDsKLX07
Ci0KLXRlbXBsYXRlIDxjbGFzcyBUPgotc3RhdGljIHZvaWQgZHVtcFByb3BlcnR5KFJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIHRzLCBTdHJpbmcgbmFtZSwgVCB2YWx1ZSkKLXsKLSAgICB0cyA8
PCAiXG4iOwotICAgIHRzLmluY3JlYXNlSW5kZW50KCk7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsK
LSAgICB0cyA8PCAiKCIgPDwgbmFtZSA8PCAiICI7Ci0gICAgdHMgPDwgdmFsdWUgPDwgIikiOwot
ICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7Ci19Ci0KLVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0m
IFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0
cyA9ICp0aGlzOwotICAgIHRzIDw8ICJcbiI7Ci0gICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLSAg
ICB0cy53cml0ZUluZGVudCgpOwotICAgIHRzIDw8ICJbIiA8PCB0cmFuc2Zvcm0ubTExKCkgPDwg
IiAiIDw8IHRyYW5zZm9ybS5tMTIoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0xMygpIDw8ICIgIiA8
PCB0cmFuc2Zvcm0ubTE0KCkgPDwgIl1cbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0
cyA8PCAiWyIgPDwgdHJhbnNmb3JtLm0yMSgpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTIyKCkgPDwg
IiAiIDw8IHRyYW5zZm9ybS5tMjMoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0yNCgpIDw8ICJdXG4i
OwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwgIlsiIDw8IHRyYW5zZm9ybS5tMzEo
KSA8PCAiICIgPDwgdHJhbnNmb3JtLm0zMigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTMzKCkgPDwg
IiAiIDw8IHRyYW5zZm9ybS5tMzQoKSA8PCAiXVxuIjsKLSAgICB0cy53cml0ZUluZGVudCgpOwot
ICAgIHRzIDw8ICJbIiA8PCB0cmFuc2Zvcm0ubTQxKCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tNDIo
KSA8PCAiICIgPDwgdHJhbnNmb3JtLm00MygpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTQ0KCkgPDwg
Il0iOwotICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1v
dGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRv
cjw8KGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmIHJvdW5kZWRSZWN0KQotewotICAgIFJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgdHMgPDwgcm91bmRlZFJlY3QucmVj
dCgpLngoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QucmVjdCgpLnkoKSA8PCAiICIgPDwgcm91bmRl
ZFJlY3QucmVjdCgpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LnJlY3QoKS5oZWlnaHQo
KSA8PCAiXG4iOwotCi0gICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLSAgICB0cy53cml0ZUluZGVu
dCgpOwotICAgIHRzIDw8ICJ0b3BMZWZ0PSIgPDwgcm91bmRlZFJlY3QudG9wTGVmdENvcm5lcigp
LndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LnRvcExlZnRDb3JuZXIoKS5oZWlnaHQoKSA8
PCAiXG4iOwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwgInRvcFJpZ2h0PSIgPDwg
cm91bmRlZFJlY3QudG9wUmlnaHRDb3JuZXIoKS53aWR0aCgpIDw8ICIgIiA8PCByb3VuZGVkUmVj
dC50b3BSaWdodENvcm5lcigpLmhlaWdodCgpIDw8ICJcbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQo
KTsKLSAgICB0cyA8PCAiYm90dG9tTGVmdD0iIDw8IHJvdW5kZWRSZWN0LmJvdHRvbUxlZnRDb3Ju
ZXIoKS53aWR0aCgpIDw8ICIgIiA8PCByb3VuZGVkUmVjdC5ib3R0b21MZWZ0Q29ybmVyKCkuaGVp
Z2h0KCkgPDwgIlxuIjsKLSAgICB0cy53cml0ZUluZGVudCgpOwotICAgIHRzIDw8ICJib3R0b21S
aWdodD0iIDw8IHJvdW5kZWRSZWN0LmJvdHRvbVJpZ2h0Q29ybmVyKCkud2lkdGgoKSA8PCAiICIg
PDwgcm91bmRlZFJlY3QuYm90dG9tUmlnaHRDb3JuZXIoKS5oZWlnaHQoKTsKLSAgICB0cy5kZWNy
ZWFzZUluZGVudCgpOwotCi0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1vdGVMYXllclRyZWVUZXh0
U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KFBsYXRmb3JtQ0FM
YXllcjo6RmlsdGVyVHlwZSBmaWx0ZXJUeXBlKQotewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgc3dpdGNoIChmaWx0ZXJUeXBlKSB7Ci0gICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxpbmVhcjoKLSAgICAgICAgdHMgPDwgImxpbmVhciI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpOZWFyZXN0OgotICAgICAgICB0cyA8
PCAibmVhcmVzdCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpU
cmlsaW5lYXI6Ci0gICAgICAgIHRzIDw8ICJ0cmlsaW5lYXIiOwotICAgICAgICBicmVhazsKLSAg
ICBkZWZhdWx0OgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGaWx0ZXJPcGVyYXRp
b25zJiBmaWx0ZXJzKQotewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRo
aXM7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmaWx0ZXJzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGNvbnN0IGF1dG8gZmlsdGVyID0gZmlsdGVycy5hdChpKTsKLSAgICAgICAgaWYgKGZp
bHRlcikKLSAgICAgICAgICAgIHRzIDw8ICpmaWx0ZXI7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHRzIDw8ICIobnVsbCkiOwotICAgICAgICBpZiAoaSA8IGZpbHRlcnMuc2l6ZSgpIC0gMSkK
LSAgICAgICAgICAgIHRzIDw8ICIgIjsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotICAgIAot
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PChjb25zdCBGaWx0ZXJPcGVyYXRpb24mIGZpbHRlcikKLXsKLSAgICBSZW1vdGVMYXll
clRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotICAgIHN3aXRjaCAoZmlsdGVyLnR5cGUoKSkg
ewotICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpSRUZFUkVOQ0U6Ci0gICAgICAgIHRzIDw8ICJy
ZWZlcmVuY2UiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JB
WVNDQUxFOiB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNvbG9yTWF0cml4RmlsdGVyID0gZG93bmNh
c3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKLSAgICAgICAgdHMg
PDwgImdyYXlzY2FsZSgiIDw8IGNvbG9yTWF0cml4RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTRVBJQTogewot
ICAgICAgICBjb25zdCBhdXRvJiBjb2xvck1hdHJpeEZpbHRlciA9IGRvd25jYXN0PEJhc2ljQ29s
b3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJzZXBpYSgi
IDw8IGNvbG9yTWF0cml4RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpTQVRVUkFURTogewotICAgICAgICBjb25z
dCBhdXRvJiBjb2xvck1hdHJpeEZpbHRlciA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJzYXR1cmF0ZSgiIDw8IGNvbG9y
TWF0cml4RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFOiB7Ci0gICAgICAgIGNvbnN0IGF1dG8m
IGNvbG9yTWF0cml4RmlsdGVyID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbj4oZmlsdGVyKTsKLSAgICAgICAgdHMgPDwgImh1ZS1yb3RhdGUoIiA8PCBjb2xvck1hdHJp
eEZpbHRlci5hbW91bnQoKSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOiB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyID0gZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbj4oZmlsdGVyKTsKLSAgICAgICAgdHMgPDwgImludmVydCgiIDw8IGNvbXBvbmVudFRy
YW5zZmVyRmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGNv
bXBvbmVudFRyYW5zZmVyRmlsdGVyID0gZG93bmNhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZp
bHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKLSAgICAgICAgdHMgPDwgIm9wYWNpdHkoIiA8PCBjb21w
b25lbnRUcmFuc2ZlckZpbHRlci5hbW91bnQoKSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzogewotICAgICAgICBjb25z
dCBhdXRvJiBjb21wb25lbnRUcmFuc2ZlckZpbHRlciA9IGRvd25jYXN0PEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJicmlnaHRu
ZXNzKCIgPDwgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIuYW1vdW50KCkgPDwgIikiOwotICAgICAg
ICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUOiB7Ci0g
ICAgICAgIGNvbnN0IGF1dG8mIGNvbXBvbmVudFRyYW5zZmVyRmlsdGVyID0gZG93bmNhc3Q8QmFz
aWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKLSAgICAgICAgdHMg
PDwgImNvbnRyYXN0KCIgPDwgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIuYW1vdW50KCkgPDwgIiki
OwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJMVVI6
IHsKLSAgICAgICAgY29uc3QgYXV0byYgYmx1ckZpbHRlciA9IGRvd25jYXN0PEJsdXJGaWx0ZXJP
cGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJibHVyKCIgPDwgZmxvYXRWYWx1ZUZv
ckxlbmd0aChibHVyRmlsdGVyLnN0ZERldmlhdGlvbigpLCAwKSA8PCAiKSI7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6IHsKLSAg
ICAgICAgY29uc3QgYXV0byYgZHJvcFNoYWRvd0ZpbHRlciA9IGRvd25jYXN0PERyb3BTaGFkb3dG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJkcm9wLXNoYWRvdygiIDw8
IGRyb3BTaGFkb3dGaWx0ZXIueCgpIDw8ICIgIiA8PCBkcm9wU2hhZG93RmlsdGVyLnkoKSA8PCAi
ICIgPDwgZHJvcFNoYWRvd0ZpbHRlci5sb2NhdGlvbigpIDw8ICIgIjsKLSAgICAgICAgdHMgPDwg
ZHJvcFNoYWRvd0ZpbHRlci5jb2xvcigpIDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKLSAgICAgICAgdHMgPDwgInBh
c3N0aHJvdWdoIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRF
RkFVTFQ6IHsKLSAgICAgICAgY29uc3QgYXV0byYgZGVmYXVsdEZpbHRlciA9IGRvd25jYXN0PERl
ZmF1bHRGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJkZWZhdWx0IHR5
cGU9IiA8PCAoaW50KWRlZmF1bHRGaWx0ZXIucmVwcmVzZW50ZWRUeXBlKCk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIH0KLSAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKLSAgICAgICAgdHMg
PDwgIm5vbmUiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1S
ZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVy
YXRvcjw8KGNvbnN0IFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2UmIGN1
c3RvbUFwcGVhcmFuY2UpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAq
dGhpczsKLSAgICBzd2l0Y2ggKGN1c3RvbUFwcGVhcmFuY2UpIHsKLSAgICBjYXNlIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6Ok5vQ3VzdG9tQXBwZWFyYW5jZTogdHMg
PDwgIm5vbmUiOyBicmVhazsKLSAgICBjYXNlIFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI6OkN1c3Rv
bUFwcGVhcmFuY2U6OlNjcm9sbGluZ092ZXJoYW5nOiB0cyA8PCAic2Nyb2xsaW5nLW92ZXJoYW5n
IjsgYnJlYWs7Ci0gICAgY2FzZSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJh
bmNlOjpTY3JvbGxpbmdTaGFkb3c6IHRzIDw8ICJzY3JvbGxpbmctc2hhZG93IjsgYnJlYWs7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpMaWdodEJh
Y2tkcm9wQXBwZWFyYW5jZTogdHMgPDwgImxpZ2h0LWJhY2tkcm9wIjsgYnJlYWs7Ci0gICAgY2Fz
ZSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpEYXJrQmFja2Ryb3BB
cHBlYXJhbmNlOiB0cyA8PCAiZGFyay1iYWNrZHJvcCI7IGJyZWFrOwotICAgIH0KLSAgICByZXR1
cm4gdHM7Ci19Ci0KLVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRl
eHRTdHJlYW06Om9wZXJhdG9yPDwoQmxlbmRNb2RlIGJsZW5kTW9kZSkKLXsKLSAgICBSZW1vdGVM
YXllclRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotICAgIHN3aXRjaCAoYmxlbmRNb2RlKSB7
Ci0gICAgY2FzZSBCbGVuZE1vZGVOb3JtYWw6IHRzIDw8ICJub3JtYWwiOyBicmVhazsKLSAgICBj
YXNlIEJsZW5kTW9kZU11bHRpcGx5OiB0cyA8PCAibXVsdGlwbHkiOyBicmVhazsKLSAgICBjYXNl
IEJsZW5kTW9kZVNjcmVlbjogdHMgPDwgInNjcmVlbiI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRN
b2RlT3ZlcmxheTogdHMgPDwgIm92ZXJsYXkiOyBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZURh
cmtlbjogdHMgPDwgImRhcmtlbiI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlTGlnaHRlbjog
dHMgPDwgImxpZ2h0ZW4iOyBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUNvbG9yRG9kZ2U6IHRz
IDw8ICJjb2xvci1kb2RnZSI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlQ29sb3JCdXJuOiB0
cyA8PCAiY29sb3ItYnVybiI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlSGFyZExpZ2h0OiB0
cyA8PCAiaGFyZC1saWdodCI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlU29mdExpZ2h0OiB0
cyA8PCAic29mdC1saWdodCI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlRGlmZmVyZW5jZTog
dHMgPDwgImRpZmZlcmVuY2UiOyBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUV4Y2x1c2lvbjog
dHMgPDwgImV4Y2x1c2lvbiI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlSHVlOiB0cyA8PCAi
aHVlIjsgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVTYXR1cmF0aW9uOiB0cyA8PCAic2F0dXJh
dGlvbiI7IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlQ29sb3I6IHRzIDw8ICJjb2xvciI7IGJy
ZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlTHVtaW5vc2l0eTogdHMgPDwgImx1bWlub3NpdHkiOyBi
cmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVBsdXNEYXJrZXI6IHRzIDw8ICJwbHVzLWRhcmtlciI7
IGJyZWFrOwotICAgIGNhc2UgQmxlbmRNb2RlUGx1c0xpZ2h0ZXI6IHRzIDw8ICJwbHVzLWxpZ2h0
ZXIiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1vdGVMYXllclRyZWVU
ZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KFBsYXRmb3Jt
Q0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUgdHlwZSkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVU
ZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotICAgIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6QmFzaWM6IHRzIDw8ICJiYXNpYyI7IGJyZWFrOwotICAgIGNhc2Ug
UGxhdGZvcm1DQUFuaW1hdGlvbjo6S2V5ZnJhbWU6IHRzIDw8ICJrZXlmcmFtZSI7IGJyZWFrOwot
ICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJl
bW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoUGxhdGZvcm1DQUFuaW1hdGlvbjo6
RmlsbE1vZGVUeXBlIHR5cGUpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMg
PSAqdGhpczsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRp
b246Ok5vRmlsbE1vZGU6IHRzIDw8ICJub25lIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpGb3J3YXJkczogdHMgPDwgImZvcndhcmRzIjsgYnJlYWs7Ci0gICAgY2FzZSBQ
bGF0Zm9ybUNBQW5pbWF0aW9uOjpCYWNrd2FyZHM6IHRzIDw8ICJiYWNrd2FyZHMiOyBicmVhazsK
LSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg6IHRzIDw8ICJib3RoIjsgYnJlYWs7
Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpWYWx1ZUZ1bmN0aW9uVHlwZSB0eXBlKQotewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIHRzID0gKnRoaXM7Ci0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpOb1ZhbHVlRnVuY3Rpb246IHRzIDw8ICJub25lIjsgYnJlYWs7Ci0gICAgY2Fz
ZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVYOiB0cyA8PCAicm90YXRlWCI7IGJyZWFrOwot
ICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWTogdHMgPDwgInJvdGF0ZVkiOyBi
cmVhazsKLSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJvdGF0ZVo6IHRzIDw8ICJyb3Rh
dGVYIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVg6IHRzIDw8
ICJzY2FsZVgiOyBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWTog
dHMgPDwgInNjYWxlWSI7IGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2Nh
bGVaOiB0cyA8PCAic2NhbGVYIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
OjpTY2FsZTogdHMgPDwgInNjYWxlIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpUcmFuc2xhdGVYOiB0cyA8PCAidHJhbnNsYXRlWCI7IGJyZWFrOwotICAgIGNhc2UgUGxh
dGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWTogdHMgPDwgInRyYW5zbGF0ZVkiOyBicmVhazsK
LSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVo6IHRzIDw8ICJ0cmFuc2xh
dGVaIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpUcmFuc2xhdGU6IHRz
IDw8ICJ0cmFuc2xhdGUiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1v
dGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRv
cjw8KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWUmIHZhbHVl
KQotewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0KLSAgICBz
d2l0Y2ggKHZhbHVlLmtleWZyYW1lVHlwZSgpKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpOdW1iZXJLZXlUeXBlOgotICAgICAgICB0cyA8PCAi
bnVtYmVyPSIgPDwgdmFsdWUubnVtYmVyVmFsdWUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2Fz
ZSBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpDb2xvcktleVR5cGU6
Ci0gICAgICAgIHRzIDw8ICJjb2xvcj0iOwotICAgICAgICB0cyA8PCB2YWx1ZS5jb2xvclZhbHVl
KCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6
S2V5ZnJhbWVWYWx1ZTo6UG9pbnRLZXlUeXBlOgotICAgICAgICB0cyA8PCAicG9pbnQ9IjsKLSAg
ICAgICAgdHMgPDwgdmFsdWUucG9pbnRWYWx1ZSgpOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWU6OlRyYW5zZm9ybUtleVR5
cGU6Ci0gICAgICAgIHRzIDw8ICJ0cmFuc2Zvcm09IjsKLSAgICAgICAgdHMgPDwgdmFsdWUudHJh
bnNmb3JtVmFsdWUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpGaWx0ZXJLZXlUeXBlOgotICAgICAgICB0cyA8PCAi
ZmlsdGVyPSI7Ci0gICAgICAgIGlmICh2YWx1ZS5maWx0ZXJWYWx1ZSgpKQotICAgICAgICAgICAg
dHMgPDwgKnZhbHVlLmZpbHRlclZhbHVlKCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRz
IDw8ICJudWxsIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQot
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3Bl
cmF0b3I8PChjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCi17Ci0gICAgUmVt
b3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLSAgICBzd2l0Y2ggKHRpbWluZ0Z1
bmN0aW9uLnR5cGUoKSkgewotICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9u
OgotICAgICAgICB0cyA8PCAibGluZWFyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBUaW1p
bmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjogewotICAgICAgICBjb25zdCBDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uJiBjdWJpY0JlemllckZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29u
c3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKLSAgICAgICAg
dHMgPDwgImN1YmljLWJlemllcigiIDw8IGN1YmljQmV6aWVyRnVuY3Rpb24ueDEoKSA8PCAiLCAi
IDw8IGN1YmljQmV6aWVyRnVuY3Rpb24ueTEoKSA8PCAiLCAiIDw8ICBjdWJpY0JlemllckZ1bmN0
aW9uLngyKCkgPDwgIiwgIiA8PCBjdWJpY0JlemllckZ1bmN0aW9uLnkyKCkgPDwgIikiOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlv
bjogewotICAgICAgICBjb25zdCBTdGVwc1RpbWluZ0Z1bmN0aW9uJiBzdGVwc0Z1bmN0aW9uID0g
c3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdGdW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsK
LSAgICAgICAgdHMgPDwgInN0ZXBzKCIgPDwgc3RlcHNGdW5jdGlvbi5udW1iZXJPZlN0ZXBzKCkg
PDwgIiwgIiA8PCAoc3RlcHNGdW5jdGlvbi5zdGVwQXRTdGFydCgpID8gInN0YXJ0IiA6ICJlbmQi
KSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHRzOwot
fQotCi1SZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFt
OjpvcGVyYXRvcjw8KGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXMm
IGFuaW1hdGlvbikKLXsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlz
OwotCi0gICAgdHMgPDwgInR5cGU9IjsKLSAgICB0cyA8PCBhbmltYXRpb24uYW5pbWF0aW9uVHlw
ZTsKLSAgICB0cyA8PCAiIGtleVBhdGg9IjsKLSAgICB0cyA8PCBhbmltYXRpb24ua2V5UGF0aDsK
LQotICAgIGlmIChhbmltYXRpb24uYmVnaW5UaW1lKQotICAgICAgICBkdW1wUHJvcGVydHkodHMs
ICJiZWdpblRpbWUiLCBhbmltYXRpb24uYmVnaW5UaW1lKTsKLQotICAgIGlmIChhbmltYXRpb24u
ZHVyYXRpb24pCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImR1cmF0aW9uIiwgYW5pbWF0aW9u
LmR1cmF0aW9uKTsKLQotICAgIGlmIChhbmltYXRpb24udGltZU9mZnNldCkKLSAgICAgICAgZHVt
cFByb3BlcnR5KHRzLCAidGltZU9mZnNldCIsIGFuaW1hdGlvbi50aW1lT2Zmc2V0KTsKLQotICAg
IGR1bXBQcm9wZXJ0eSh0cywgInJlcGVhdENvdW50IiwgYW5pbWF0aW9uLnJlcGVhdENvdW50KTsK
LQotICAgIGlmIChhbmltYXRpb24uc3BlZWQgIT0gMSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRz
LCAic3BlZWQiLCBhbmltYXRpb24uc3BlZWQpOwotCi0gICAgZHVtcFByb3BlcnR5KHRzLCAiZmls
bE1vZGUiLCBhbmltYXRpb24uZmlsbE1vZGUpOwotICAgIGR1bXBQcm9wZXJ0eSh0cywgInZhbHVl
RnVuY3Rpb24iLCBhbmltYXRpb24udmFsdWVGdW5jdGlvbik7Ci0KLSAgICBpZiAoYW5pbWF0aW9u
LmF1dG9SZXZlcnNlcykKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYXV0b1JldmVyc2VzIiwg
YW5pbWF0aW9uLmF1dG9SZXZlcnNlcyk7Ci0KLSAgICBpZiAoIWFuaW1hdGlvbi5yZW1vdmVkT25D
b21wbGV0aW9uKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJyZW1vdmVkT25Db21wbGV0aW9u
IiwgYW5pbWF0aW9uLnJlbW92ZWRPbkNvbXBsZXRpb24pOwotCi0gICAgaWYgKGFuaW1hdGlvbi5h
ZGRpdGl2ZSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYWRkaXRpdmUiLCBhbmltYXRpb24u
YWRkaXRpdmUpOwotCi0gICAgaWYgKGFuaW1hdGlvbi5yZXZlcnNlVGltaW5nRnVuY3Rpb25zKQot
ICAgICAgICBkdW1wUHJvcGVydHkodHMsICJyZXZlcnNlVGltaW5nRnVuY3Rpb25zIiwgYW5pbWF0
aW9uLnJldmVyc2VUaW1pbmdGdW5jdGlvbnMpOwotCi0gICAgaWYgKGFuaW1hdGlvbi5oYXNFeHBs
aWNpdEJlZ2luVGltZSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiaGFzRXhwbGljaXRCZWdp
blRpbWUiLCBhbmltYXRpb24uaGFzRXhwbGljaXRCZWdpblRpbWUpOwotCi0gICAgdHMgPDwgIlxu
IjsKLSAgICB0cy5pbmNyZWFzZUluZGVudCgpOwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAg
dHMgPDwgIigiIDw8ICJrZXlmcmFtZXMiOwotICAgIHRzLmluY3JlYXNlSW5kZW50KCk7Ci0KLSAg
ICBzaXplX3QgbWF4RnJhbWVzID0gc3RkOjptYXgoYW5pbWF0aW9uLmtleVZhbHVlcy5zaXplKCks
IGFuaW1hdGlvbi5rZXlUaW1lcy5zaXplKCkpOwotICAgIG1heEZyYW1lcyA9IHN0ZDo6bWF4KG1h
eEZyYW1lcywgYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9ucy5zaXplKCkpOwotCi0gICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBtYXhGcmFtZXM7ICsraSkgewotICAgICAgICB0cyA8PCAiXG4iOwot
ICAgICAgICB0cy53cml0ZUluZGVudCgpOwotICAgICAgICB0cyA8PCAiKGtleWZyYW1lICIgPDwg
dW5zaWduZWQoaSk7Ci0gICAgICAgIGlmIChpIDwgYW5pbWF0aW9uLmtleVRpbWVzLnNpemUoKSkK
LSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInRpbWUiLCBhbmltYXRpb24ua2V5VGltZXNb
aV0pOwotCi0gICAgICAgIGlmIChpIDwgYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9ucy5zaXplKCkg
JiYgYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uc1tpXSkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0
eTxjb25zdCBUaW1pbmdGdW5jdGlvbiY+KHRzLCAidGltaW5nIGZ1bmN0aW9uIiwgKmFuaW1hdGlv
bi50aW1pbmdGdW5jdGlvbnNbaV0pOwotCi0gICAgICAgIGlmIChpIDwgYW5pbWF0aW9uLmtleVZh
bHVlcy5zaXplKCkpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJ2YWx1ZSIsIGFuaW1h
dGlvbi5rZXlWYWx1ZXNbaV0pOwotCi0gICAgICAgIHRzIDw8ICIpIjsKLSAgICB9Ci0KLSAgICB0
cy5kZWNyZWFzZUluZGVudCgpOwotICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7Ci0KLSAgICByZXR1
cm4gdHM7Ci19Ci0KLVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRl
eHRTdHJlYW06Om9wZXJhdG9yPDwoRmxvYXRQb2ludDNEIHBvaW50KQotewotICAgIFJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgdHMgPDwgcG9pbnQueCgpIDw8ICIg
IiA8PCBwb2ludC55KCkgPDwgIiAiIDw8IHBvaW50LnooKTsKLSAgICByZXR1cm4gdHM7Ci19Ci0K
LVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9w
ZXJhdG9yPDwoQ29sb3IgY29sb3IpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
dHMgPSAqdGhpczsKLSAgICB0cyA8PCBjb2xvci5zZXJpYWxpemVkKCk7Ci0gICAgcmV0dXJuIHRz
OwotfQotCi1SZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVy
SUQ+JiBsYXllcnMpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhp
czsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsgKytpKSB7Ci0g
ICAgICAgIGlmIChpKQotICAgICAgICAgICAgdHMgPDwgIiAiOwotICAgICAgICB0cyA8PCBsYXll
cnNbaV07Ci0gICAgfQotCi0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1vdGVMYXllclRyZWVUZXh0
U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFJlbW90
ZUxheWVyQmFja2luZ1N0b3JlJiBiYWNraW5nU3RvcmUpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKICAgICB0cyA8PCBiYWNraW5nU3RvcmUuc2l6ZSgpOwog
ICAgIHRzIDw8ICIgc2NhbGU9IiA8PCBiYWNraW5nU3RvcmUuc2NhbGUoKTsKICAgICBpZiAoYmFj
a2luZ1N0b3JlLmlzT3BhcXVlKCkpCkBAIC0xMDgzLDIwICs2NTgsMTMgQEAgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25z
dCBSZW1vdGVMYXkKICAgICByZXR1cm4gdHM7CiB9CiAKLXZvaWQgUmVtb3RlTGF5ZXJUcmVlVGV4
dFN0cmVhbTo6d3JpdGVJbmRlbnQoKQotewotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9pbmRl
bnQ7ICsraSkKLSAgICAgICAgKnRoaXMgPDwgIiAgIjsKLX0KLQotc3RhdGljIHZvaWQgZHVtcENo
YW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXNNYXAmIGNoYW5nZWRMYXllclByb3Bl
cnRpZXMpCitzdGF0aWMgdm9pZCBkdW1wQ2hhbmdlZExheWVycyhUZXh0U3RyZWFtJiB0cywgY29u
c3QgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkxheWVyUHJvcGVydGllc01hcCYgY2hhbmdl
ZExheWVyUHJvcGVydGllcykKIHsKICAgICBpZiAoY2hhbmdlZExheWVyUHJvcGVydGllcy5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIHRzIDw8ICJcbiI7Ci0gICAgdHMud3JpdGVJ
bmRlbnQoKTsKLSAgICB0cyA8PCAiKGNoYW5nZWQtbGF5ZXJzIjsKKyAgICBUZXh0U3RyZWFtOjpH
cm91cFNjb3BlIGdyb3VwKHRzKTsKKyAgICB0cyA8PCAiY2hhbmdlZC1sYXllcnMiOwogCiAgICAg
Ly8gRHVtcCB0aGUgbGF5ZXIgcHJvcGVydGllcyBzb3J0ZWQgYnkgbGF5ZXIgSUQuCiAgICAgVmVj
dG9yPEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4gbGF5ZXJJRHM7CkBAIC0xMTA2LDEy
NSArNjc0LDExNyBAQCBzdGF0aWMgdm9pZCBkdW1wQ2hhbmdlZExheWVycyhSZW1vdGVMYXllclRy
ZWVUZXh0U3RyZWFtJiB0cywgY29uc3QgUmVtb3RlTGF5ZXJUcgogICAgIGZvciAoYXV0byYgbGF5
ZXJJRCA6IGxheWVySURzKSB7CiAgICAgICAgIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpMYXllclByb3BlcnRpZXMmIGxheWVyUHJvcGVydGllcyA9ICpjaGFuZ2VkTGF5ZXJQcm9w
ZXJ0aWVzLmdldChsYXllcklEKTsKIAotICAgICAgICB0cyA8PCAiXG4iOwotICAgICAgICB0cy5p
bmNyZWFzZUluZGVudCgpOwotICAgICAgICB0cy53cml0ZUluZGVudCgpOwotICAgICAgICB0cyA8
PCAiKGxheWVyICIgPDwgbGF5ZXJJRDsKKyAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBn
cm91cCh0cyk7CisgICAgICAgIHRzIDw8ICJsYXllciAiIDw8IGxheWVySUQ7CiAKICAgICAgICAg
aWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpOYW1lQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgIm5h
bWUiLCBsYXllclByb3BlcnRpZXMubmFtZSk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHko
Im5hbWUiLCBsYXllclByb3BlcnRpZXMubmFtZSk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVy
dGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDaGls
ZHJlbkNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHk8VmVjdG9yPEdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRD4+KHRzLCAiY2hpbGRyZW4iLCBsYXllclByb3BlcnRpZXMuY2hp
bGRyZW4pOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5PFZlY3RvcjxHcmFwaGljc0xheWVy
OjpQbGF0Zm9ybUxheWVySUQ+PigiY2hpbGRyZW4iLCBsYXllclByb3BlcnRpZXMuY2hpbGRyZW4p
OwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6UG9zaXRpb25DaGFuZ2VkKQotICAgICAgICAgICAgZHVt
cFByb3BlcnR5KHRzLCAicG9zaXRpb24iLCBsYXllclByb3BlcnRpZXMucG9zaXRpb24pOworICAg
ICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJwb3NpdGlvbiIsIGxheWVyUHJvcGVydGllcy5wb3Np
dGlvbik7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAm
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3VuZHNDaGFuZ2VkKQotICAgICAgICAgICAg
ZHVtcFByb3BlcnR5KHRzLCAiYm91bmRzIiwgbGF5ZXJQcm9wZXJ0aWVzLmJvdW5kcyk7CisgICAg
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJvdW5kcyIsIGxheWVyUHJvcGVydGllcy5ib3VuZHMp
OwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QW5jaG9yUG9pbnRDaGFuZ2VkKQotICAgICAgICAgICAg
ZHVtcFByb3BlcnR5KHRzLCAiYW5jaG9yUG9pbnQiLCBsYXllclByb3BlcnRpZXMuYW5jaG9yUG9p
bnQpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmNob3JQb2ludCIsIGxheWVyUHJv
cGVydGllcy5hbmNob3JQb2ludCk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFu
Z2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCYWNrZ3JvdW5kQ29s
b3JDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYmFja2dyb3VuZENvbG9y
IiwgbGF5ZXJQcm9wZXJ0aWVzLmJhY2tncm91bmRDb2xvcik7CisgICAgICAgICAgICB0cy5kdW1w
UHJvcGVydHkoImJhY2tncm91bmRDb2xvciIsIGxheWVyUHJvcGVydGllcy5iYWNrZ3JvdW5kQ29s
b3IpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Qm9yZGVyQ29sb3JDaGFuZ2VkKQotICAgICAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAiYm9yZGVyQ29sb3IiLCBsYXllclByb3BlcnRpZXMuYm9yZGVy
Q29sb3IpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJib3JkZXJDb2xvciIsIGxheWVy
UHJvcGVydGllcy5ib3JkZXJDb2xvcik7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpCb3JkZXJXaWR0
aENoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJib3JkZXJXaWR0aCIsIGxh
eWVyUHJvcGVydGllcy5ib3JkZXJXaWR0aCk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHko
ImJvcmRlcldpZHRoIiwgbGF5ZXJQcm9wZXJ0aWVzLmJvcmRlcldpZHRoKTsKIAogICAgICAgICBp
ZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246Ok9wYWNpdHlDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAi
b3BhY2l0eSIsIGxheWVyUHJvcGVydGllcy5vcGFjaXR5KTsKKyAgICAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgib3BhY2l0eSIsIGxheWVyUHJvcGVydGllcy5vcGFjaXR5KTsKIAogICAgICAgICBp
ZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJh
bnNhY3Rpb246OlRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMs
ICJ0cmFuc2Zvcm0iLCBsYXllclByb3BlcnRpZXMudHJhbnNmb3JtID8gKmxheWVyUHJvcGVydGll
cy50cmFuc2Zvcm0gOiBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgidHJhbnNmb3JtIiwgbGF5ZXJQcm9wZXJ0aWVzLnRyYW5zZm9ybSA/ICpsYXll
clByb3BlcnRpZXMudHJhbnNmb3JtIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICAg
ICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJl
ZVRyYW5zYWN0aW9uOjpTdWJsYXllclRyYW5zZm9ybUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1w
UHJvcGVydHkodHMsICJzdWJsYXllclRyYW5zZm9ybSIsIGxheWVyUHJvcGVydGllcy5zdWJsYXll
clRyYW5zZm9ybSA/ICpsYXllclByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gOiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpKTsKKyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic3VibGF5ZXJU
cmFuc2Zvcm0iLCBsYXllclByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPyAqbGF5ZXJQcm9w
ZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpIaWRkZW5DaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAiaGlkZGVuIiwgbGF5ZXJQcm9wZXJ0aWVzLmhpZGRlbik7CisgICAgICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImhpZGRlbiIsIGxheWVyUHJvcGVydGllcy5oaWRkZW4pOwogCiAgICAgICAg
IGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6R2VvbWV0cnlGbGlwcGVkQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgImdlb21ldHJ5RmxpcHBlZCIsIGxheWVyUHJvcGVydGllcy5nZW9tZXRyeUZsaXBw
ZWQpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJnZW9tZXRyeUZsaXBwZWQiLCBsYXll
clByb3BlcnRpZXMuZ2VvbWV0cnlGbGlwcGVkKTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0
aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkRvdWJs
ZVNpZGVkQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImRvdWJsZVNpZGVk
IiwgbGF5ZXJQcm9wZXJ0aWVzLmRvdWJsZVNpZGVkKTsKKyAgICAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiZG91YmxlU2lkZWQiLCBsYXllclByb3BlcnRpZXMuZG91YmxlU2lkZWQpOwogCiAgICAg
ICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6TWFza3NUb0JvdW5kc0NoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJv
cGVydHkodHMsICJtYXNrc1RvQm91bmRzIiwgbGF5ZXJQcm9wZXJ0aWVzLm1hc2tzVG9Cb3VuZHMp
OworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJtYXNrc1RvQm91bmRzIiwgbGF5ZXJQcm9w
ZXJ0aWVzLm1hc2tzVG9Cb3VuZHMpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hh
bmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6T3BhcXVlQ2hhbmdl
ZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgIm9wYXF1ZSIsIGxheWVyUHJvcGVydGll
cy5vcGFxdWUpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJvcGFxdWUiLCBsYXllclBy
b3BlcnRpZXMub3BhcXVlKTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQ
cm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tMYXllckNoYW5nZWQp
Ci0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJtYXNrTGF5ZXIiLCBsYXllclByb3BlcnRp
ZXMubWFza0xheWVySUQpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJtYXNrTGF5ZXIi
LCBsYXllclByb3BlcnRpZXMubWFza0xheWVySUQpOwogCiAgICAgICAgIGlmIChsYXllclByb3Bl
cnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q2xv
bmVkQ29udGVudHNDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY2xvbmVk
TGF5ZXIiLCBsYXllclByb3BlcnRpZXMuY2xvbmVkTGF5ZXJJRCk7CisgICAgICAgICAgICB0cy5k
dW1wUHJvcGVydHkoImNsb25lZExheWVyIiwgbGF5ZXJQcm9wZXJ0aWVzLmNsb25lZExheWVySUQp
OwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q29udGVudHNSZWN0Q2hhbmdlZCkKLSAgICAgICAgICAg
IGR1bXBQcm9wZXJ0eSh0cywgImNvbnRlbnRzUmVjdCIsIGxheWVyUHJvcGVydGllcy5jb250ZW50
c1JlY3QpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjb250ZW50c1JlY3QiLCBsYXll
clByb3BlcnRpZXMuY29udGVudHNSZWN0KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVz
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNvbnRlbnRz
U2NhbGVDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY29udGVudHNTY2Fs
ZSIsIGxheWVyUHJvcGVydGllcy5jb250ZW50c1NjYWxlKTsKKyAgICAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgiY29udGVudHNTY2FsZSIsIGxheWVyUHJvcGVydGllcy5jb250ZW50c1NjYWxlKTsK
IAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNvcm5lclJhZGl1c0NoYW5nZWQpCi0gICAgICAgICAgICBk
dW1wUHJvcGVydHkodHMsICJjb3JuZXJSYWRpdXMiLCBsYXllclByb3BlcnRpZXMuY29ybmVyUmFk
aXVzKTsKKyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29ybmVyUmFkaXVzIiwgbGF5ZXJQ
cm9wZXJ0aWVzLmNvcm5lclJhZGl1cyk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTaGFwZVJvdW5k
ZWRSZWN0Q2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInNoYXBlUmVjdCIs
IGxheWVyUHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID8gKmxheWVyUHJvcGVydGllcy5zaGFw
ZVJvdW5kZWRSZWN0IDogRmxvYXRSb3VuZGVkUmVjdCgpKTsKKyAgICAgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgic2hhcGVSZWN0IiwgbGF5ZXJQcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgPyAq
bGF5ZXJQcm9wZXJ0aWVzLnNoYXBlUm91bmRlZFJlY3QgOiBGbG9hdFJvdW5kZWRSZWN0KCkpOwog
CiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVM
YXllclRyZWVUcmFuc2FjdGlvbjo6TWluaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCkKLSAgICAgICAg
ICAgIGR1bXBQcm9wZXJ0eSh0cywgIm1pbmlmaWNhdGlvbkZpbHRlciIsIGxheWVyUHJvcGVydGll
cy5taW5pZmljYXRpb25GaWx0ZXIpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJtaW5p
ZmljYXRpb25GaWx0ZXIiLCBsYXllclByb3BlcnRpZXMubWluaWZpY2F0aW9uRmlsdGVyKTsKIAog
ICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5
ZXJUcmVlVHJhbnNhY3Rpb246Ok1hZ25pZmljYXRpb25GaWx0ZXJDaGFuZ2VkKQotICAgICAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAibWFnbmlmaWNhdGlvbkZpbHRlciIsIGxheWVyUHJvcGVydGll
cy5tYWduaWZpY2F0aW9uRmlsdGVyKTsKKyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibWFn
bmlmaWNhdGlvbkZpbHRlciIsIGxheWVyUHJvcGVydGllcy5tYWduaWZpY2F0aW9uRmlsdGVyKTsK
IAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJsZW5kTW9kZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1w
UHJvcGVydHkodHMsICJibGVuZE1vZGUiLCBsYXllclByb3BlcnRpZXMuYmxlbmRNb2RlKTsKKyAg
ICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiYmxlbmRNb2RlIiwgbGF5ZXJQcm9wZXJ0aWVzLmJs
ZW5kTW9kZSk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGll
cyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpTcGVlZENoYW5nZWQpCi0gICAgICAgICAg
ICBkdW1wUHJvcGVydHkodHMsICJzcGVlZCIsIGxheWVyUHJvcGVydGllcy5zcGVlZCk7CisgICAg
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNwZWVkIiwgbGF5ZXJQcm9wZXJ0aWVzLnNwZWVkKTsK
IAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3Rl
TGF5ZXJUcmVlVHJhbnNhY3Rpb246OlRpbWVPZmZzZXRDaGFuZ2VkKQotICAgICAgICAgICAgZHVt
cFByb3BlcnR5KHRzLCAidGltZU9mZnNldCIsIGxheWVyUHJvcGVydGllcy50aW1lT2Zmc2V0KTsK
KyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgidGltZU9mZnNldCIsIGxheWVyUHJvcGVydGll
cy50aW1lT2Zmc2V0KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9w
ZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tpbmdTdG9yZUNoYW5nZWQp
IHsKICAgICAgICAgICAgIGlmIChjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSogYmFja2lu
Z1N0b3JlID0gbGF5ZXJQcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZS5nZXQoKSkKLSAgICAgICAgICAg
ICAgICBkdW1wUHJvcGVydHk8Y29uc3QgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUmPih0cywgImJh
Y2tpbmdTdG9yZSIsICpiYWNraW5nU3RvcmUpOworICAgICAgICAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eTxjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSY+KCJiYWNraW5nU3RvcmUiLCAqYmFj
a2luZ1N0b3JlKTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkdW1wUHJvcGVy
dHkodHMsICJiYWNraW5nU3RvcmUiLCAicmVtb3ZlZCIpOworICAgICAgICAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgiYmFja2luZ1N0b3JlIiwgInJlbW92ZWQiKTsKICAgICAgICAgfQogCiAgICAg
ICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRy
ZWVUcmFuc2FjdGlvbjo6QmFja2luZ1N0b3JlQXR0YWNobWVudENoYW5nZWQpCi0gICAgICAgICAg
ICBkdW1wUHJvcGVydHkodHMsICJiYWNraW5nU3RvcmVBdHRhY2hlZCIsIGxheWVyUHJvcGVydGll
cy5iYWNraW5nU3RvcmVBdHRhY2hlZCk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJh
Y2tpbmdTdG9yZUF0dGFjaGVkIiwgbGF5ZXJQcm9wZXJ0aWVzLmJhY2tpbmdTdG9yZUF0dGFjaGVk
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkZpbHRlcnNDaGFuZ2VkKQotICAgICAgICAgICAgZHVt
cFByb3BlcnR5KHRzLCAiZmlsdGVycyIsIGxheWVyUHJvcGVydGllcy5maWx0ZXJzID8gKmxheWVy
UHJvcGVydGllcy5maWx0ZXJzIDogRmlsdGVyT3BlcmF0aW9ucygpKTsKKyAgICAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZmlsdGVycyIsIGxheWVyUHJvcGVydGllcy5maWx0ZXJzID8gKmxheWVy
UHJvcGVydGllcy5maWx0ZXJzIDogRmlsdGVyT3BlcmF0aW9ucygpKTsKIAogICAgICAgICBpZiAo
bGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkFuaW1hdGlvbnNDaGFuZ2VkKSB7CiAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGtleUFuaW1hdGlvblBhaXIgOiBsYXllclByb3BlcnRpZXMuYWRkZWRBbmltYXRpb25zKQotICAg
ICAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImFuaW1hdGlvbiAiICsgIGtleUFuaW1hdGlv
blBhaXIuZmlyc3QsIGtleUFuaW1hdGlvblBhaXIuc2Vjb25kKTsKKyAgICAgICAgICAgICAgICB0
cy5kdW1wUHJvcGVydHkoImFuaW1hdGlvbiAiICsgIGtleUFuaW1hdGlvblBhaXIuZmlyc3QsIGtl
eUFuaW1hdGlvblBhaXIuc2Vjb25kKTsKIAogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBu
YW1lIDogbGF5ZXJQcm9wZXJ0aWVzLmtleVBhdGhzT2ZBbmltYXRpb25zVG9SZW1vdmUpCi0gICAg
ICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAicmVtb3ZlZCBhbmltYXRpb24iLCBuYW1lKTsK
KyAgICAgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJlbW92ZWQgYW5pbWF0aW9uIiwgbmFt
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9w
ZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkVkZ2VBbnRpYWxpYXNpbmdNYXNr
Q2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImVkZ2VBbnRpYWxpYXNpbmdN
YXNrIiwgbGF5ZXJQcm9wZXJ0aWVzLmVkZ2VBbnRpYWxpYXNpbmdNYXNrKTsKKyAgICAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiZWRnZUFudGlhbGlhc2luZ01hc2siLCBsYXllclByb3BlcnRpZXMu
ZWRnZUFudGlhbGlhc2luZ01hc2spOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hh
bmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q3VzdG9tQXBwZWFy
YW5jZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJjdXN0b21BcHBlYXJh
bmNlIiwgbGF5ZXJQcm9wZXJ0aWVzLmN1c3RvbUFwcGVhcmFuY2UpOwotCi0gICAgICAgIHRzIDw8
ICIpIjsKLQotICAgICAgICB0cy5kZWNyZWFzZUluZGVudCgpOworICAgICAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJjdXN0b21BcHBlYXJhbmNlIiwgbGF5ZXJQcm9wZXJ0aWVzLmN1c3RvbUFwcGVh
cmFuY2UpOwogICAgIH0KLQotICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7CiB9CiAKIHZvaWQgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmR1bXAoKSBjb25zdApAQCAtMTIzNCw5MiArNzk0LDQ5
IEBAIHZvaWQgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OmR1bXAoKSBjb25zdAogCiBDU3Ry
aW5nIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0g
ICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSB0czsKKyAgICBUZXh0U3RyZWFtIHRzOwogCi0g
ICAgdHMgPDwgIigiOwotICAgIGR1bXBQcm9wZXJ0eSh0cywgInRyYW5zYWN0aW9uSUQiLCBtX3Ry
YW5zYWN0aW9uSUQpOwotICAgIGR1bXBQcm9wZXJ0eSh0cywgImNvbnRlbnRzU2l6ZSIsIG1fY29u
dGVudHNTaXplKTsKKyAgICB0cy5zdGFydEdyb3VwKCk7CisgICAgdHMgPDwgImxheWVyIHRyZWUi
OworCisgICAgdHMuZHVtcFByb3BlcnR5KCJ0cmFuc2FjdGlvbklEIiwgbV90cmFuc2FjdGlvbklE
KTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImNvbnRlbnRzU2l6ZSIsIG1fY29udGVudHNTaXplKTsK
ICAgICBpZiAobV9zY3JvbGxPcmlnaW4gIT0gSW50UG9pbnQ6Onplcm8oKSkKLSAgICAgICAgZHVt
cFByb3BlcnR5KHRzLCAic2Nyb2xsT3JpZ2luIiwgbV9zY3JvbGxPcmlnaW4pOworICAgICAgICB0
cy5kdW1wUHJvcGVydHkoInNjcm9sbE9yaWdpbiIsIG1fc2Nyb2xsT3JpZ2luKTsKIAogICAgIGlm
IChtX3BhZ2VTY2FsZUZhY3RvciAhPSAxKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJwYWdl
U2NhbGVGYWN0b3IiLCBtX3BhZ2VTY2FsZUZhY3Rvcik7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgicGFnZVNjYWxlRmFjdG9yIiwgbV9wYWdlU2NhbGVGYWN0b3IpOwogCi0gICAgdHMgPDwgIihc
biI7Ci0gICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLSAgICB0cy53cml0ZUluZGVudCgpOwotICAg
IHRzIDw8ICIocm9vdC1sYXllciAiIDw8IG1fcm9vdExheWVySUQgPDwgIikiOworICAgIHRzIDw8
ICJyb290LWxheWVyICIgPDwgbV9yb290TGF5ZXJJRCA8PCAiKSI7CiAKICAgICBpZiAoIW1fY3Jl
YXRlZExheWVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgdHMgPDwgIlxuIjsKLSAgICAgICAgdHMu
d3JpdGVJbmRlbnQoKTsKLSAgICAgICAgdHMgPDwgIihjcmVhdGVkLWxheWVycyI7Ci0gICAgICAg
IHRzLmluY3JlYXNlSW5kZW50KCk7CisgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3Jv
dXAodHMpOworICAgICAgICB0cyA8PCAiY3JlYXRlZC1sYXllcnMiOwogICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNyZWF0ZWRMYXllciA6IG1fY3JlYXRlZExheWVycykgewotICAgICAgICAgICAg
dHMgPDwgIlxuIjsKLSAgICAgICAgICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgICAgICAgICB0
cyA8PCAiKCI7CisgICAgICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsK
KyAgICAgICAgICAgIHRzIDw8IGNyZWF0ZWRMYXllci50eXBlIDw8IiAiIDw8IGNyZWF0ZWRMYXll
ci5sYXllcklEOwogICAgICAgICAgICAgc3dpdGNoIChjcmVhdGVkTGF5ZXIudHlwZSkgewotICAg
ICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxheWVyOgotICAgICAgICAg
ICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkxheWVyOgotICAgICAgICAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxheWVyOgotICAgICAgICAgICAg
ICAgIHRzIDw8ICJsYXllciI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6Ci0gICAgICAgICAg
ICAgICAgdHMgPDwgInRyYW5zZm9ybS1sYXllciI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcjoK
LSAgICAgICAgICAgICAgICB0cyA8PCAidGlsZWQtbGF5ZXIiOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFj
a2luZ0xheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICJ0aWxlZC1iYWNraW5nLWxheWVyIjsK
LSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVQYWdlVGlsZWRCYWNraW5nTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwg
InBhZ2UtdGlsZWQtYmFja2luZy1sYXllciI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRCYWNraW5nVGlsZUxh
eWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICJ0aWxlZC1iYWNraW5nLXRpbGUiOwotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVy
VHlwZVJvb3RMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8PCAicm9vdC1sYXllciI7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQmFja2Ryb3BMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8PCAiYmFja2Ryb3AtbGF5
ZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNB
TGF5ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgImF2
LXBsYXllci1sYXllciAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4
dElEIDw8ICIpIjsKKyAgICAgICAgICAgICAgICB0cyA8PCAiIChjb250ZXh0LWlkICIgPDwgY3Jl
YXRlZExheWVyLmhvc3RpbmdDb250ZXh0SUQgPDwgIikiOwogICAgICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYkdMTGF5ZXI6
Ci0gICAgICAgICAgICAgICAgdHMgPDwgIndlYi1nbC1sYXllciAoY29udGV4dC1pZCAiIDw8IGNy
ZWF0ZWRMYXllci5ob3N0aW5nQ29udGV4dElEIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVy
OgotICAgICAgICAgICAgICAgIHRzIDw8ICJzaGFwZS1sYXllciI7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2Nyb2xs
aW5nTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgInNjcm9sbGluZy1sYXllciI7CisgICAg
ICAgICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5n
Q29udGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVDdXN0b206Ci0gICAgICAgICAgICAgICAgdHMg
PDwgImN1c3RvbS1sYXllciAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29u
dGV4dElEIDw8ICIpIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVMaWdodFN5c3RlbUJhY2tkcm9wTGF5ZXI6Ci0gICAg
ICAgICAgICAgICAgdHMgPDwgImxpZ2h0LXN5c3RlbS1iYWNrZHJvcC1sYXllciI7CisgICAgICAg
ICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29u
dGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lzdGVtQmFja2Ryb3BMYXllcjoKLSAgICAg
ICAgICAgICAgICB0cyA8PCAiZGFyay1zeXN0ZW0tYmFja2Ryb3AtbGF5ZXIiOworICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHRzIDw8ICIgIiA8PCBjcmVhdGVkTGF5ZXIubGF5ZXJJRCA8PCAiKSI7CiAgICAgICAg
IH0KLSAgICAgICAgdHMgPDwgIikiOwotICAgICAgICB0cy5kZWNyZWFzZUluZGVudCgpOwogICAg
IH0KIAogICAgIGR1bXBDaGFuZ2VkTGF5ZXJzKHRzLCBtX2NoYW5nZWRMYXllclByb3BlcnRpZXMp
OwogCiAgICAgaWYgKCFtX2Rlc3Ryb3llZExheWVySURzLmlzRW1wdHkoKSkKLSAgICAgICAgZHVt
cFByb3BlcnR5PFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+Pih0cywgImRl
c3Ryb3llZC1sYXllcnMiLCBtX2Rlc3Ryb3llZExheWVySURzKTsKKyAgICAgICAgdHMuZHVtcFBy
b3BlcnR5PFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+PigiZGVzdHJveWVk
LWxheWVycyIsIG1fZGVzdHJveWVkTGF5ZXJJRHMpOwogCi0gICAgdHMgPDwgIilcbiI7CisgICAg
dHMuZW5kR3JvdXAoKTsKIAogICAgIHJldHVybiB0cy5yZWxlYXNlKCkudXRmOCgpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFj
L1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaAppbmRleCA5NmEzZmJiNTAxYWU5YTQ0Mjk2Zjk2
Yjg4YjQ0MTNiZDFmMDc2Mzg2Li4zMTc5YjZjYWU0MWI0OWQxOWNkOGFlMjJhMWQ2MGVmZWY3OTgw
NmUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1Bs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUuaApAQCAtMzUsNiArMzUsMTAg
QEAgY2xhc3MgQXJndW1lbnRFbmNvZGVyOwogY2xhc3MgQXJndW1lbnREZWNvZGVyOwogfTsKIAor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgVGV4dFN0cmVhbTsKK307CisKIE9CSkNfQ0xBU1Mg
Q0FMYXllcjsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0yOTcsNiArMzAxLDkgQEAgcHJpdmF0
ZToKICAgICBQcm9wZXJ0aWVzIG1fcHJvcGVydGllczsKIH07CiAKK1dlYkNvcmU6OlRleHRTdHJl
YW0mIG9wZXJhdG9yPDwoV2ViQ29yZTo6VGV4dFN0cmVhbSYsIGNvbnN0IFBsYXRmb3JtQ0FBbmlt
YXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWUmKTsKK1dlYkNvcmU6OlRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoV2ViQ29yZTo6VGV4dFN0cmVhbSYsIGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1v
dGU6OlByb3BlcnRpZXMmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKIFNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQ0FBTklNQVRJT04oV2ViS2l0OjpQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3Rl
LCBpc1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZS5tbQppbmRleCBhOWM5NGZiZDc0YzJlOTlhYWVkYzIwOGVmYjNkMThhZDVkY2UwMTk4
Li45ZDk4YzcwZjg3OGM3OTFjMGM0ZTM3MGRlOTg4MDA4ODZkNDAzNTVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25S
ZW1vdGUubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0IDxXZWJD
b3JlL0dyYXBoaWNzTGF5ZXIuaD4KICNpbXBvcnQgPFdlYkNvcmUvUGxhdGZvcm1DQUFuaW1hdGlv
bkNvY29hLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FGaWx0ZXJzLmg+CisjaW1wb3J0
IDxXZWJDb3JlL1RleHRTdHJlYW0uaD4KICNpbXBvcnQgPFdlYkNvcmUvVGltaW5nRnVuY3Rpb24u
aD4KICNpbXBvcnQgPHd0Zi9DdXJyZW50VGltZS5oPgogI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgpAQCAtNzk4LDQgKzc5OSwxMDMgQEAgdm9pZCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjp1
cGRhdGVMYXllckFuaW1hdGlvbnMoQ0FMYXllciAqbGF5ZXIsIFJlbW90ZUxheWUKICAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRT
dHJlYW0mdHMsIGNvbnN0IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWUm
IHZhbHVlKQoreworICAgIHN3aXRjaCAodmFsdWUua2V5ZnJhbWVUeXBlKCkpIHsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWU6Ok51bWJlcktleVR5cGU6
CisgICAgICAgIHRzIDw8ICJudW1iZXI9IiA8PCB2YWx1ZS5udW1iZXJWYWx1ZSgpOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFs
dWU6OkNvbG9yS2V5VHlwZToKKyAgICAgICAgdHMgPDwgImNvbG9yPSI7CisgICAgICAgIHRzIDw8
IHZhbHVlLmNvbG9yVmFsdWUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpQb2ludEtleVR5cGU6CisgICAgICAgIHRz
IDw8ICJwb2ludD0iOworICAgICAgICB0cyA8PCB2YWx1ZS5wb2ludFZhbHVlKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVWYWx1
ZTo6VHJhbnNmb3JtS2V5VHlwZToKKyAgICAgICAgdHMgPDwgInRyYW5zZm9ybT0iOworICAgICAg
ICB0cyA8PCB2YWx1ZS50cmFuc2Zvcm1WYWx1ZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWU6OkZpbHRlcktleVR5cGU6
CisgICAgICAgIHRzIDw8ICJmaWx0ZXI9IjsKKyAgICAgICAgaWYgKHZhbHVlLmZpbHRlclZhbHVl
KCkpCisgICAgICAgICAgICB0cyA8PCAqdmFsdWUuZmlsdGVyVmFsdWUoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgdHMgPDwgIm51bGwiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAg
cmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBj
b25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzJiBhbmltYXRpb24pCit7
CisgICAgdHMgPDwgInR5cGU9IjsKKyAgICB0cyA8PCBhbmltYXRpb24uYW5pbWF0aW9uVHlwZTsK
KyAgICB0cyA8PCAiIGtleVBhdGg9IjsKKyAgICB0cyA8PCBhbmltYXRpb24ua2V5UGF0aDsKKwor
ICAgIGlmIChhbmltYXRpb24uYmVnaW5UaW1lKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJl
Z2luVGltZSIsIGFuaW1hdGlvbi5iZWdpblRpbWUpOworCisgICAgaWYgKGFuaW1hdGlvbi5kdXJh
dGlvbikKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJkdXJhdGlvbiIsIGFuaW1hdGlvbi5kdXJh
dGlvbik7CisKKyAgICBpZiAoYW5pbWF0aW9uLnRpbWVPZmZzZXQpCisgICAgICAgIHRzLmR1bXBQ
cm9wZXJ0eSgidGltZU9mZnNldCIsIGFuaW1hdGlvbi50aW1lT2Zmc2V0KTsKKworICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmVwZWF0Q291bnQiLCBhbmltYXRpb24ucmVwZWF0Q291bnQpOworCisgICAg
aWYgKGFuaW1hdGlvbi5zcGVlZCAhPSAxKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNwZWVk
IiwgYW5pbWF0aW9uLnNwZWVkKTsKKworICAgIHRzLmR1bXBQcm9wZXJ0eSgiZmlsbE1vZGUiLCBh
bmltYXRpb24uZmlsbE1vZGUpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgidmFsdWVGdW5jdGlvbiIs
IGFuaW1hdGlvbi52YWx1ZUZ1bmN0aW9uKTsKKworICAgIGlmIChhbmltYXRpb24uYXV0b1JldmVy
c2VzKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoImF1dG9SZXZlcnNlcyIsIGFuaW1hdGlvbi5h
dXRvUmV2ZXJzZXMpOworCisgICAgaWYgKCFhbmltYXRpb24ucmVtb3ZlZE9uQ29tcGxldGlvbikK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyZW1vdmVkT25Db21wbGV0aW9uIiwgYW5pbWF0aW9u
LnJlbW92ZWRPbkNvbXBsZXRpb24pOworCisgICAgaWYgKGFuaW1hdGlvbi5hZGRpdGl2ZSkKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJhZGRpdGl2ZSIsIGFuaW1hdGlvbi5hZGRpdGl2ZSk7CisK
KyAgICBpZiAoYW5pbWF0aW9uLnJldmVyc2VUaW1pbmdGdW5jdGlvbnMpCisgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgicmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyIsIGFuaW1hdGlvbi5yZXZlcnNlVGlt
aW5nRnVuY3Rpb25zKTsKKworICAgIGlmIChhbmltYXRpb24uaGFzRXhwbGljaXRCZWdpblRpbWUp
CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiaGFzRXhwbGljaXRCZWdpblRpbWUiLCBhbmltYXRp
b24uaGFzRXhwbGljaXRCZWdpblRpbWUpOworCisgICAgdHMgPDwgIlxuIjsKKyAgICB0cy5pbmNy
ZWFzZUluZGVudCgpOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgIigiIDw8ICJr
ZXlmcmFtZXMiOworICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CisKKyAgICBzaXplX3QgbWF4RnJh
bWVzID0gc3RkOjptYXgoYW5pbWF0aW9uLmtleVZhbHVlcy5zaXplKCksIGFuaW1hdGlvbi5rZXlU
aW1lcy5zaXplKCkpOworICAgIG1heEZyYW1lcyA9IHN0ZDo6bWF4KG1heEZyYW1lcywgYW5pbWF0
aW9uLnRpbWluZ0Z1bmN0aW9ucy5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBtYXhGcmFtZXM7ICsraSkgeworICAgICAgICB0cyA8PCAiXG4iOworICAgICAgICB0cy53cml0
ZUluZGVudCgpOworICAgICAgICB0cyA8PCAiKGtleWZyYW1lICIgPDwgdW5zaWduZWQoaSk7Cisg
ICAgICAgIGlmIChpIDwgYW5pbWF0aW9uLmtleVRpbWVzLnNpemUoKSkKKyAgICAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgidGltZSIsIGFuaW1hdGlvbi5rZXlUaW1lc1tpXSk7CisKKyAgICAgICAg
aWYgKGkgPCBhbmltYXRpb24udGltaW5nRnVuY3Rpb25zLnNpemUoKSAmJiBhbmltYXRpb24udGlt
aW5nRnVuY3Rpb25zW2ldKQorICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5PGNvbnN0IFRpbWlu
Z0Z1bmN0aW9uJj4oInRpbWluZyBmdW5jdGlvbiIsICphbmltYXRpb24udGltaW5nRnVuY3Rpb25z
W2ldKTsKKworICAgICAgICBpZiAoaSA8IGFuaW1hdGlvbi5rZXlWYWx1ZXMuc2l6ZSgpKQorICAg
ICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJ2YWx1ZSIsIGFuaW1hdGlvbi5rZXlWYWx1ZXNbaV0p
OworCisgICAgICAgIHRzIDw8ICIpIjsKKyAgICB9CisKKyAgICB0cy5kZWNyZWFzZUluZGVudCgp
OworICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7CisKKyAgICByZXR1cm4gdHM7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>263361</attachid>
            <date>2015-10-16 23:10:14 -0700</date>
            <delta_ts>2015-10-17 11:20:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-150269-20151016230933.patch</filename>
            <type>text/plain</type>
            <size>129957</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkxMjMzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmI2YmMxY2MyNjkxOTFm
NzUyMzY3ZmI2ODFiMDBkODRmYjc3ZjAzNy4uYWNiOTE2YjM5OWExNjM3Nzc3ODgzNmEwNjdiMzll
Yjg5OTk0ZGQwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDE1LTEwLTE2ICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEVuaGFuY2UgVGV4
dFN0cmVhbSBmb3IgbG9nZ2luZywgcmVtb3ZlIHN1YmNsYXNzZXMsIGxvZyBtb3JlIHRoaW5ncwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwMjY5CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIHRo
ZSB2YXJpb3VzIFRleHRTdHJlYW0gc3ViY2xhc3NlcyB0aGF0IG9ubHkgZXhpc3RlZCB0byBzdXBw
b3J0IGluZGVudGluZywKKyAgICAgICAgYW5kIG91dHB1dCBhZGRpdGlvbmFsIHR5cGVzLiBBZGQg
b3V0cHV0IGZvciBtb3JlIFdlYkNvcmUgYW5kIFdlYktpdDIgdHlwZXMsIGFuZAorICAgICAgICBq
dXN0IHVzZSBUZXh0U3RyZWFtIGV2ZXJ5d2hlcmUuCisgICAgICAgIAorICAgICAgICBUZXh0U3Ry
ZWFtIGlzIGVuaGFuY2UgdG8gc3VwcG9ydCBncm91cGluZyAob3BlbiBwYXJlbiBhbmQgaW50ZW50
KSwgd2l0aCBhIAorICAgICAgICBzdGFjay1iYXNlZCBjbGFzcyB0byBvcGVuL2VuZCBhIGdyb3Vw
LgorICAgICAgICAKKyAgICAgICAgUmVtb3ZlIHNvbWUgU1ZHLXNwZWNpZmljIGR1cGxpY2F0ZSBv
dXRwdXQgZnVuY3Rpb25zLgorICAgICAgICAKKyAgICAgICAgT3V0ZGVudCBuYW1lc3BhY2UgY29u
dGVudHMgb2YgR3JhcGhpY3NUeXBlcy5oLgorICAgICAgICAKKyAgICAgICAgKiBDTWFrZUxpc3Rz
LnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIGRvbS9WaWV3cG9ydEFyZ3VtZW50cy5oOgorICAgICAgICAqIHBh
Z2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9y
PDwpOgorICAgICAgICAoV2ViQ29yZTo6Vmlld3BvcnRDb25maWd1cmF0aW9uOjpkZXNjcmlwdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtOjpW
aWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW06OmluY3JlYXNlSW5kZW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW06
OmRlY3JlYXNlSW5kZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmR1bXBQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0
U3RyZWFtOjp3cml0ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpWaWV3cG9y
dENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4KKyAgICAgICAg
KiBwYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0NvbnN0cmFpbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmg6CisgICAg
ICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
Q29vcmRpbmF0b3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAq
IHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0NvbG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRQb2ludDNELmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5oOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVj
dC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NMYXllci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlw
ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6Om9w
ZXJhdG9yPDwpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmlt
YXRpb24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0
b3I8PCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRp
b24uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlv
bnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwp
OiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5l
VHJhbnNmb3JtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmg6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpvcGVyYXRvcjw8KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZv
cm0vdGV4dC9UZXh0U3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRTdHJlYW06OnN0
YXJ0R3JvdXApOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6ZW5kR3JvdXApOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6bmV4dExpbmUpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFN0cmVhbTo6d3JpdGVJbmRlbnQpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dFN0
cmVhbS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0U3RyZWFtOjpkdW1wUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFN0cmVhbTo6aW5jcmVhc2VJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0
cmVhbTo6ZGVjcmVhc2VJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFN0cmVhbTo6R3Jv
dXBTY29wZTo6R3JvdXBTY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0U3RyZWFtOjpHcm91
cFNjb3BlOjp+R3JvdXBTY29wZSk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPDwpOiBEZWxldGVkLgor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oOgorCiAyMDE1LTEw
LTE2ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQXZvaWQg
dG8gaW5zZXJ0IFRBQiBiZWZvcmUgSFRNTCBlbGVtZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGEwN2VkOTgy
MDg5MWQ3N2QwNDM2YmFlMmQ4MDZlYjU1YTJlYjQ2ODYuLjFjNDdlMmZmZTkyM2JlZGJkYTI3Yzll
OTg4NGI1YjBmYTVlZGJiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NyBAQAorMjAxNS0xMC0x
NiAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KKworICAgICAgICBFbmhh
bmNlIFRleHRTdHJlYW0gZm9yIGxvZ2dpbmcsIHJlbW92ZSBzdWJjbGFzc2VzLCBsb2cgbW9yZSB0
aGluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1
MDI2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJl
bW92ZSB0aGUgdmFyaW91cyBUZXh0U3RyZWFtIHN1YmNsYXNzZXMgdGhhdCBvbmx5IGV4aXN0ZWQg
dG8gc3VwcG9ydCBpbmRlbnRpbmcsCisgICAgICAgIGFuZCBvdXRwdXQgYWRkaXRpb25hbCB0eXBl
cy4gQWRkIG91dHB1dCBmb3IgbW9yZSBXZWJDb3JlIGFuZCBXZWJLaXQyIHR5cGVzLCBhbmQKKyAg
ICAgICAganVzdCB1c2UgVGV4dFN0cmVhbSBldmVyeXdoZXJlLgorICAgICAgICAKKyAgICAgICAg
VGV4dFN0cmVhbSBpcyBlbmhhbmNlIHRvIHN1cHBvcnQgZ3JvdXBpbmcgKG9wZW4gcGFyZW4gYW5k
IGludGVudCksIHdpdGggYSAKKyAgICAgICAgc3RhY2stYmFzZWQgY2xhc3MgdG8gb3Blbi9lbmQg
YSBncm91cC4KKyAgICAgICAgCisgICAgICAgIFJlbW92ZSBzb21lIFNWRy1zcGVjaWZpYyBkdXBs
aWNhdGUgb3V0cHV0IGZ1bmN0aW9ucy4KKyAgICAgICAgCisgICAgICAgIE91dGRlbnQgbmFtZXNw
YWNlIGNvbnRlbnRzIG9mIEdyYXBoaWNzVHlwZXMuaC4KKworICAgICAgICAqIFNoYXJlZC9TY3Jv
bGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OmR1bXApOgorICAgICAgICAoV2ViS2l0OjpyZWN1cnNpdmVEdW1wTm9kZXMpOgor
ICAgICAgICAoV2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uOjpk
ZXNjcmlwdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3Ry
ZWFtOjpSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjppbmNyZWFzZUluZGVudCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpk
ZWNyZWFzZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z1RyZWVUZXh0U3RyZWFtOjp3cml0ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6
OmR1bXBQcm9wZXJ0eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZVNjcm9sbGlu
Z1RyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6
UmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXApOiBEZWxldGVkLgorICAgICAgICAo
V2ViS2l0OjpSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6cmVjdXJzaXZlRHVtcE5vZGVz
KTogRGVsZXRlZC4KKyAgICAgICAgKiBTaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tOgorICAgICAgICAoV2ViS2l0OjpvcGVyYXRvcjw8KToKKyAgICAgICAgKFdlYktpdDo6
ZHVtcENoYW5nZWRMYXllcnMpOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6ZGVzY3JpcHRpb24pOgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVU
ZXh0U3RyZWFtOjpSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6aW5jcmVhc2VJbmRlbnQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpkZWNyZWFz
ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OmR1bXBQcm9wZXJ0eSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJLaXQ6OlJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9y
PDwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFt
Ojp3cml0ZUluZGVudCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21h
Yy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQ
YWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tOgorICAgICAgICAoV2ViS2l0Ojpv
cGVyYXRvcjw8KToKKwogMjAxNS0xMC0xNiAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBXS1dlYlZpZXcgaW5wdXQgZGVsZWdhdGUgU1BJCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L0NNYWtlTGlzdHMudHh0CmluZGV4IDhkOTMyMDFjZTZjYzgzNDM4ZjY1MDQ1YWE1NTc3YzU5NGVh
ODA2M2EuLmQ2ZjVmMWEwOTBjYzYzZjFjMzgxNDcxNGUyZDM5MTRkZmNjZWUxMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0yMTM5LDYgKzIxMzksNyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAK
ICAgICBwbGF0Zm9ybS9hbmltYXRpb24vQW5pbWF0aW9uLmNwcAogICAgIHBsYXRmb3JtL2FuaW1h
dGlvbi9BbmltYXRpb25MaXN0LmNwcAorICAgIHBsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5j
dGlvbi5jcHAKIAogICAgIHBsYXRmb3JtL2F1ZGlvL0F1ZGlvQnVzLmNwcAogICAgIHBsYXRmb3Jt
L2F1ZGlvL0F1ZGlvQ2hhbm5lbC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBhMDU5ZjM3ZDhhNzBlZDIzYTU5YzQyMTdkNmZi
MjQwM2E5OTAwZmE3Li45N2Y4YWNhOTE3Y2E2ZDRkNGY4MWYwZDY2MzZkYWI1MThlNmY4NmUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00ODAsOCArNDgwLDggQEAKIAkJMEYxNUVENUMxQjdFQzdDNTAwRURERkVCIC8qIFdpbGxD
aGFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSAwRjE1RUQ1QTFCN0VDN0M1MDBFRERGRUIgLyogV2lsbENoYW5nZURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjE3NzQ4MDEzNzhCNzcy
MDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMTc3NDdFMTM3OEI3NzEwMDlEQTc2QSAvKiBTY3JvbGxB
bmltYXRvcklPUy5oICovOyB9OwogCQkwRjE3NzQ4MTEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xs
QW5pbWF0b3JJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjE3NzQ3RjEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MubW0gKi87
IH07Ci0JCTBGMzZFNzM3MUJEMTgzN0EwMDJEQjg5MSAvKiBMYXlvdXRQb2ludC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjM2RTczNjFCRDE4MzdB
MDAyREI4OTEgLyogTGF5b3V0UG9pbnQuY3BwICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0g
KCk7IH07IH07Ci0JCTBGMzZFNzM5MUJEMTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNwcCBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMzZFNzM4MUJE
MTg0QjkwMDJEQjg5MSAvKiBMYXlvdXRTaXplLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFH
UyA9ICgpOyB9OyB9OworCQkwRjM2RTczNzFCRDE4MzdBMDAyREI4OTEgLyogTGF5b3V0UG9pbnQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNkU3
MzYxQkQxODM3QTAwMkRCODkxIC8qIExheW91dFBvaW50LmNwcCAqLzsgfTsKKwkJMEYzNkU3Mzkx
QkQxODRCOTAwMkRCODkxIC8qIExheW91dFNpemUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzNkU3MzgxQkQxODRCOTAwMkRCODkxIC8qIExheW91
dFNpemUuY3BwICovOyB9OwogCQkwRjNDNzI1RTE5NzQ4NzRCMDBBRUREMEMgLyogSW1hZ2VTb3Vy
Y2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
QzcyNUQxOTc0ODc0QjAwQUVERDBDIC8qIEltYWdlU291cmNlLmNwcCAqLzsgfTsKIAkJMEYzREQ0
NEYxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYzREQ0NEQxMkY1RUExQjAwMEQ5MTkwIC8qIFNo
YWRvd0JsdXIuY3BwICovOyB9OwogCQkwRjNERDQ1MDEyRjVFQTFCMDAwRDkxOTAgLyogU2hhZG93
Qmx1ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYz
REQ0NEUxMkY1RUExQjAwMEQ5MTkwIC8qIFNoYWRvd0JsdXIuaCAqLzsgfTsKQEAgLTU2Niw2ICs1
NjYsOCBAQAogCQkwRkRBN0MyMzE4ODMzMEE5MDBDOTU0QjUgLyogRHJhZ0ltYWdlSU9TLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMjIxODgz
MzBBOTAwQzk1NEI1IC8qIERyYWdJbWFnZUlPUy5tbSAqLzsgfTsKIAkJMEZEQTdDMjYxODgzMzMz
MjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRBN0MyNDE4
ODMzMzMyMDBDOTU0QjUgLyogSlNXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50
LmNwcCAqLzsgfTsKIAkJMEZEQTdDMjcxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJh
Y2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEZEQTdDMjUxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxh
eWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5oICovOyB9OworCQkwRkRGNDVBNzFCRDFDNkZE
MDBFNEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkRGNDVBNjFCRDFDNkZEMDBFNEZBOEMgLyogUGxh
dGZvcm1DQUFuaW1hdGlvbi5jcHAgKi87IH07CisJCTBGREY0NUE5MUJEMUM4MjUwMEU0RkE4QyAv
KiBUaW1pbmdGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwRkRGNDVBODFCRDFDODI1MDBFNEZBOEMgLyogVGltaW5nRnVuY3Rpb24uY3Bw
ICovOyB9OwogCQkwRkU1ODA2MzE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1ODA2
MTE5MzI3QTYyMDBERTMyRUIgLyogU2Nyb2xsaW5nVHJlZU1hYy5jcHAgKi87IH07CiAJCTBGRTU4
MDY0MTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRkU1ODA2MjE5MzI3QTYyMDBERTMyRUIg
LyogU2Nyb2xsaW5nVHJlZU1hYy5oICovOyB9OwogCQkwRkU3MTQwNTE0MjE3MEI4MDBEQjMzQkEg
LyogU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDBGRTcxNDAzMTQyMTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVt
ZU1vY2suY3BwICovOyB9OwpAQCAtNTI4NSwxMCArNTI4NywxMCBAQAogCQlCQzEyOEIwMTEzN0M4
RDQ2MDBDQUM4NDUgLyogUmVuZGVyR3JpZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzEyOEIwMDEzN0M4RDQ2MDBDQUM4NDUgLyogUmVuZGVyR3Jp
ZC5jcHAgKi87IH07CiAJCUJDMTQwMjhBMEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVt
ZUNvbXBvc2l0ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzE0MDI4ODBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVDb21wb3NpdGUu
Y3BwICovOyB9OwogCQlCQzE0MDI4QjBFODM2ODA4MDAzMTk3MTcgLyogU2Nyb2xsYmFyVGhlbWVD
b21wb3NpdGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDMTQwMjg5MEU4MzY4MDgwMDMxOTcxNyAvKiBTY3JvbGxiYXJUaGVtZUNvbXBvc2l0ZS5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUJDMTc5MEJC
MUJCNUFCM0YwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURlcGVuZGVudFZhbHVlLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3OTBCQTFCQjVBQjNGMDAw
NkQxM0UgLyogQ1NTVmFyaWFibGVEZXBlbmRlbnRWYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBU1NF
VF9UQUdTID0gKCk7IH07IH07Ci0JCUJDMTc5MEJEMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NWYXJp
YWJsZURlcGVuZGVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMTc5MEJDMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURlcGVu
ZGVudFZhbHVlLmNwcCAqLzsgc2V0dGluZ3MgPSB7QVNTRVRfVEFHUyA9ICgpOyB9OyB9OwotCQlC
QzE3OTBDMDFCQkYyQzQzMDAwNkQxM0UgLyogQ1NTVmFyaWFibGVWYWx1ZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzE3OTBCRTFCQkYyQzQzMDAw
NkQxM0UgLyogQ1NTVmFyaWFibGVWYWx1ZS5jcHAgKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1Mg
PSAoKTsgfTsgfTsKLQkJQkMxNzkwQzExQkJGMkM0MzAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlVmFs
dWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDMTc5
MEJGMUJCRjJDNDMwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZVZhbHVlLmggKi87IHNldHRpbmdzID0g
e0FTU0VUX1RBR1MgPSAoKTsgfTsgfTsKKwkJQkMxNzkwQkIxQkI1QUIzRjAwMDZEMTNFIC8qIENT
U1ZhcmlhYmxlRGVwZW5kZW50VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMTc5MEJBMUJCNUFCM0YwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURl
cGVuZGVudFZhbHVlLmggKi87IH07CisJCUJDMTc5MEJEMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NW
YXJpYWJsZURlcGVuZGVudFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDMTc5MEJDMUJCQjM2QTgwMDA2RDEzRSAvKiBDU1NWYXJpYWJsZURl
cGVuZGVudFZhbHVlLmNwcCAqLzsgfTsKKwkJQkMxNzkwQzAxQkJGMkM0MzAwMDZEMTNFIC8qIENT
U1ZhcmlhYmxlVmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMxNzkwQkUxQkJGMkM0MzAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlVmFsdWUuY3Bw
ICovOyB9OworCQlCQzE3OTBDMTFCQkYyQzQzMDAwNkQxM0UgLyogQ1NTVmFyaWFibGVWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxNzkwQkYx
QkJGMkM0MzAwMDZEMTNFIC8qIENTU1ZhcmlhYmxlVmFsdWUuaCAqLzsgfTsKIAkJQkMxN0Y5NjYw
QjY0RUJCODAwNEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMxN0Y5NjUwQjY0RUJCODAw
NEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwICovOyB9OwogCQlCQzFBMzdB
RDA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzFBMzc5NzA5N0M3MTVGMDAxOUYzRDggLyogRE9NLmggKi87IHNl
dHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQkMxQTM3QUUwOTdD
NzE1RjAwMTlGM0Q4IC8qIERPTS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEJDMUEzNzk4MDk3QzcxNUYwMDE5RjNEOCAvKiBET00ubW0gKi87IH07CkBA
IC01NDg5LDggKzU0OTEsOCBAQAogCQlCQzc3MkUxNjEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGlu
ZUJveENvbnRhaW5WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBCQzc3MkUxNTEzMzE2MkMyMDAxRUM5Q0UgLyogQ1NTTGluZUJveENvbnRhaW5W
YWx1ZS5jcHAgKi87IH07CiAJCUJDNzc5RTE0MUJCMjE1QkIwMENBQThCRiAvKiBDU1NDdXN0b21Q
cm9wZXJ0eVZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzc3OUUxMzFCQjIxNUJCMDBDQUE4QkYgLyogQ1NTQ3VzdG9tUHJvcGVydHlWYWx1ZS5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUJDNzc5
RTE3MUJCMjI3Q0EwMENBQThCRiAvKiBTdHlsZUN1c3RvbVByb3BlcnR5RGF0YS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3NzlFMTUxQkIyMjZBMjAw
Q0FBOEJGIC8qIFN0eWxlQ3VzdG9tUHJvcGVydHlEYXRhLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQkM3RDhGRUYxQkQwM0I2NDAwRkZFNTQwIC8q
IENTU1Vuc2V0VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkM3RDhGRUQxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vuc2V0VmFsdWUuY3BwICov
OyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07Ci0JCUJDN0Q4RkYwMUJEMDNCNjQw
MEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzdEOEZFRTFCRDAzQjY0MDBGRkU1NDAgLyogQ1NTVW5zZXRWYWx1
ZS5oICovOyBzZXR0aW5ncyA9IHtBU1NFVF9UQUdTID0gKCk7IH07IH07CisJCUJDN0Q4RkVGMUJE
MDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0Q4RkVEMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NV
bnNldFZhbHVlLmNwcCAqLzsgfTsKKwkJQkM3RDhGRjAxQkQwM0I2NDAwRkZFNTQwIC8qIENTU1Vu
c2V0VmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEJDN0Q4RkVFMUJEMDNCNjQwMEZGRTU0MCAvKiBDU1NVbnNldFZhbHVlLmggKi87IH07CiAJCUJD
N0Y0NEE4MEI5RTMyNEUwMEE5RDA4MSAvKiBJbWFnZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzdGNDRBNzBCOUUzMjRFMDBBOUQwODEg
LyogSW1hZ2VPYnNlcnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUJDN0ZBNjIwMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM3RkE2MUUw
RDFGMENCRDAwREIyMkE5IC8qIExpdmVOb2RlTGlzdC5jcHAgKi87IH07CiAJCUJDN0ZBNjIxMEQx
RjBDQkQwMERCMjJBOSAvKiBMaXZlTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDN0ZBNjFGMEQxRjBDQkQwMERCMjJBOSAvKiBMaXZlTm9k
ZUxpc3QuaCAqLzsgfTsKQEAgLTY0NzcsNyArNjQ3OSw3IEBACiAJCUU0QjY1QTVBMTMyRkFBRjkw
MDcwRTdCRSAvKiBMZWdhY3lUaWxlR3JpZC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEU0QjY1QTU5MTMyRkFBRjkwMDcwRTdCRSAvKiBMZWdhY3lUaWxl
R3JpZC5tbSAqLzsgfTsKIAkJRTRCNjVBNUMxMzJGQUNCMDAwNzBFN0JFIC8qIExlZ2FjeVRpbGVM
YXllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRC
NjVBNUIxMzJGQUNCMDAwNzBFN0JFIC8qIExlZ2FjeVRpbGVMYXllci5oICovOyB9OwogCQlFNEI2
NUE1RTEzMkZBREI2MDA3MEU3QkUgLyogTGVnYWN5VGlsZUxheWVyLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTRCNjVBNUQxMzJGQURCNjAwNzBFN0JF
IC8qIExlZ2FjeVRpbGVMYXllci5tbSAqLzsgfTsKLQkJRTRCQTUwOTAxQkNGQkQ5NTAwRTM0RUY3
IC8qIENvbXBvc2VkVHJlZUFuY2VzdG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QkE1MDhGMUJDRkJEOTUwMEUzNEVGNyAvKiBDb21w
b3NlZFRyZWVBbmNlc3Rvckl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FTU0VUX1RBR1MgPSAo
KTsgfTsgfTsKKwkJRTRCQTUwOTAxQkNGQkQ5NTAwRTM0RUY3IC8qIENvbXBvc2VkVHJlZUFuY2Vz
dG9ySXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEU0QkE1MDhGMUJDRkJEOTUwMEUzNEVGNyAvKiBDb21wb3NlZFRyZWVBbmNlc3Rvckl0ZXJh
dG9yLmggKi87IH07CiAJCUU0QkJFRDBFMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0eVNldENT
U1N0eWxlRGVjbGFyYXRpb24uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTRCQkVEMEMxNEY0MDI1RDAwM0YwQjk4IC8qIFByb3BlcnR5U2V0Q1NTU3R5
bGVEZWNsYXJhdGlvbi5jcHAgKi87IH07CiAJCUU0QkJFRDBGMTRGNDAyNUQwMDNGMEI5OCAvKiBQ
cm9wZXJ0eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QkJFRDBEMTRGNDAyNUQwMDNGMEI5OCAvKiBQcm9wZXJ0
eVNldENTU1N0eWxlRGVjbGFyYXRpb24uaCAqLzsgfTsKIAkJRTRCQkVENEMxNEZDREJBMTAwM0Yw
Qjk4IC8qIFN0eWxlUnVsZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBFNEJCRUQ0QTE0RkNEQkExMDAzRjBCOTggLyogU3R5bGVSdWxlLmNwcCAqLzsg
fTsKQEAgLTc3OTcsNiArNzc5OSw4IEBACiAJCTBGREE3QzIyMTg4MzMwQTkwMEM5NTRCNSAvKiBE
cmFnSW1hZ2VJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBE
cmFnSW1hZ2VJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGREE3QzI0MTg4
MzMzMzIwMEM5NTRCNSAvKiBKU1dlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNXZWJLaXRQbGF5YmFj
a1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJMEZEQTdDMjUxODgzMzMzMjAwQzk1NEI1IC8qIEpTV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFp
bGFiaWxpdHlFdmVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1dlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMEZERjQ1QTYxQkQxQzZGRDAwRTRGQThDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGxhdGZvcm1DQUFuaW1h
dGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTBGREY0NUE4MUJEMUM4MjUw
MEU0RkE4QyAvKiBUaW1pbmdGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBUaW1pbmdGdW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGRTU4MDYxMTkzMjdBNjIwMERFMzJFQiAvKiBTY3JvbGxpbmdUcmVlTWFjLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcm9sbGluZ1RyZWVNYWMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRkU1ODA2MjE5MzI3QTYyMDBERTMyRUIgLyog
U2Nyb2xsaW5nVHJlZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3Jv
bGxpbmdUcmVlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGRTcxNDAzMTQy
MTcwQjgwMERCMzNCQSAvKiBTY3JvbGxiYXJUaGVtZU1vY2suY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2Nyb2xsYmFyVGhlbWVNb2NrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTE2NjQzLDYgKzE2NjQ3LDcgQEAKIAkJCQkyOTE3QjU2MDE0NzM0
OTZDMDA1MkM5RDAgLyogTGF5ZXJGbHVzaFNjaGVkdWxlckNsaWVudC5oICovLAogCQkJCTdBQTNB
NjlEMTk0QjU5QjYwMDFDQkQyNCAvKiBMYXllclBvb2wuY3BwICovLAogCQkJCTdBQTNBNjlFMTk0
QjU5QjYwMDFDQkQyNCAvKiBMYXllclBvb2wuaCAqLywKKwkJCQkwRkRGNDVBNjFCRDFDNkZEMDBF
NEZBOEMgLyogUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAgKi8sCiAJCQkJNDk5QjNFREMxMjhEQjUw
MTAwRTcyNkMyIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uaCAqLywKIAkJCQkwRjEzMTYzRDE2RUQw
Q0M4MDAzNUNDMDQgLyogUGxhdGZvcm1DQUZpbHRlcnMuaCAqLywKIAkJCQkyRDcwQkExNDE4MDc0
Rjg1MDAwMTkwOEEgLyogUGxhdGZvcm1DQUxheWVyLmNwcCAqLywKQEAgLTE2Njk5LDYgKzE2NzA0
LDcgQEAKIAkJCQk0OUU5MTJBODBFRkFDOTA2MDA5RDBDQUYgLyogQW5pbWF0aW9uTGlzdC5oICov
LAogCQkJCTMxRENEMjlDMUFCNEZCREUwMDcyRTgxNyAvKiBBbmltYXRpb25UcmlnZ2VyLmggKi8s
CiAJCQkJMEY1ODBGQUUxNDk4MDBENDAwRkI1QkQ4IC8qIEFuaW1hdGlvblV0aWxpdGllcy5oICov
LAorCQkJCTBGREY0NUE4MUJEMUM4MjUwMEU0RkE4QyAvKiBUaW1pbmdGdW5jdGlvbi5jcHAgKi8s
CiAJCQkJNDlFOTEyQTkwRUZBQzkwNjAwOUQwQ0FGIC8qIFRpbWluZ0Z1bmN0aW9uLmggKi8sCiAJ
CQkpOwogCQkJcGF0aCA9IGFuaW1hdGlvbjsKQEAgLTI4Njc0LDYgKzI4NjgwLDcgQEAKIAkJCQlC
Q0QwRkJEMDBEQkQ2MjVFMDBCMkY2MzAgLyogRE9NQWJzdHJhY3RWaWV3Lm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJMzE5ODQ4MDkxQTFFNkNCRjAwQTEzMzE4IC8qIERPTUFuaW1hdGlvbkV2ZW50Lm1t
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUE4RjZCQzIwREI1NUNEQzAwMURCNzk0IC8qIERPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJMEZERjQ1QTcxQkQxQzZGRDAwRTRG
QThDIC8qIFBsYXRmb3JtQ0FBbmltYXRpb24uY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJODVEMzg5
QjMwQTk5MUE3RjAwMjgyMTQ1IC8qIERPTUF0dHIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3NkZC
OUZFQzE5QTcyODRCMDA0MjA1NjIgLyogRE9NQXV0b2NvbXBsZXRlRXJyb3JFdmVudC5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUJDOTQ2RUYwMTA3RkRCQUMwMDg1NzE5MyAvKiBET01CZWZvcmVMb2Fk
RXZlbnQubW0gaW4gU291cmNlcyAqLywKQEAgLTI5NTMzLDYgKzI5NTQwLDcgQEAKIAkJCQlCQzZE
NDRCRTBDMDdFRkI2MDA3MkQyQzkgLyogSlNIVE1MRW1iZWRFbGVtZW50Q3VzdG9tLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBRTJBQTI2MEExQ0RBQjQwMEI0MkIyNSAvKiBKU0hUTUxGaWVsZFNl
dEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFFMkFBMjgwQTFDREFCNDAwQjQyQjI1
IC8qIEpTSFRNTEZvbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGREY0NUE5MUJE
MUM4MjUwMEU0RkE4QyAvKiBUaW1pbmdGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk5
QkY5QTg4MDE2NDhERDJGMDAxQzZCMjMgLyogSlNIVE1MRm9ybUNvbnRyb2xzQ29sbGVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk5QjFBQjA3QzE2NDhDN0M0MDA1MUYzRjIgLyogSlNIVE1M
Rm9ybUNvbnRyb2xzQ29sbGVjdGlvbkN1c3RvbS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEQw
NjRGQjBBMjNDMENDMDA1RTcyMDMgLyogSlNIVE1MRm9ybUVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmNwcAppbmRleCBjYzg0MTY0
OGJmZDBmYWY1NGE2ZTM5YzU2Nzc4MTY0ZmE4NTllMDVmLi42NzZjYmE2MDVhMDI4ZWVhMmM5MzQ1
Y2M1ODgxMjU5NGU2ZGY1MjczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3Bv
cnRBcmd1bWVudHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9WaWV3cG9ydEFyZ3VtZW50
cy5jcHAKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJbnRTaXplLmgiCiAjaW5jbHVkZSAi
UGFnZS5oIgogI2luY2x1ZGUgIlNjcmlwdGFibGVEb2N1bWVudFBhcnNlci5oIgorI2luY2x1ZGUg
IlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00NTAsNCArNDUxLDI0
IEBAIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiBkb2N1bWVudCwgVmlld3Bv
cnRFcnJvckNvZGUgZXJyb3JDb2RlLCBjb25zCiAgICAgZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNz
YWdlKE1lc3NhZ2VTb3VyY2U6OlJlbmRlcmluZywgdmlld3BvcnRFcnJvck1lc3NhZ2VMZXZlbChl
cnJvckNvZGUpLCBtZXNzYWdlKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiB0cywgY29uc3QgVmlld3BvcnRBcmd1bWVudHMmIHZpZXdwb3J0QXJndW1lbnRzKQorewor
ICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CisKKyAgICB0cyA8PCAiXG4iOworICAgIHRzLndyaXRl
SW5kZW50KCk7CisgICAgdHMgPDwgIih3aWR0aCAiIDw8IHZpZXdwb3J0QXJndW1lbnRzLndpZHRo
IDw8ICIsIG1pbldpZHRoICIgPDwgdmlld3BvcnRBcmd1bWVudHMubWluV2lkdGggPDwgIiwgbWF4
V2lkdGggIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5tYXhXaWR0aCA8PCAiKSI7CisKKyAgICB0cyA8
PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgIihoZWlnaHQgIiA8PCB2
aWV3cG9ydEFyZ3VtZW50cy5oZWlnaHQgPDwgIiwgbWluSGVpZ2h0ICIgPDwgdmlld3BvcnRBcmd1
bWVudHMubWluSGVpZ2h0IDw8ICIsIG1heEhlaWdodCAiIDw8IHZpZXdwb3J0QXJndW1lbnRzLm1h
eEhlaWdodCA8PCAiKSI7CisKKyAgICB0cyA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7
CisgICAgdHMgPDwgIih6b29tICIgPDwgdmlld3BvcnRBcmd1bWVudHMuem9vbSA8PCAiLCBtaW5a
b29tICIgPDwgdmlld3BvcnRBcmd1bWVudHMubWluWm9vbSA8PCAiLCBtYXhab29tICIgPDwgdmll
d3BvcnRBcmd1bWVudHMubWF4Wm9vbSA8PCAiKSI7CisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsK
KworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL1ZpZXdwb3J0QXJndW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAppbmRleCAxZDY0MWQzOTNlNDkzMzZkNTBmYzJjY2I2
N2I4MTI0YWFkOTVmZGMwLi40ZGY1MmRkNmU4NDgwY2NkNzg5YTMxNWVjYzE5OGNmNjdjMjVmNTY4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vVmlld3BvcnRBcmd1bWVudHMuaApAQCAtMTM1LDYgKzEzNSw4
IEBAIGZsb2F0IGNvbXB1dGVNaW5pbXVtU2NhbGVGYWN0b3JGb3JDb250ZW50Q29udGFpbmVkKGNv
bnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgcmVzCiB2b2lkIHNldFZpZXdwb3J0RmVhdHVyZShjb25z
dCBTdHJpbmcmIGtleVN0cmluZywgY29uc3QgU3RyaW5nJiB2YWx1ZVN0cmluZywgRG9jdW1lbnQq
LCB2b2lkKiBkYXRhKTsKIHZvaWQgcmVwb3J0Vmlld3BvcnRXYXJuaW5nKERvY3VtZW50KiwgVmll
d3BvcnRFcnJvckNvZGUsIGNvbnN0IFN0cmluZyYgcmVwbGFjZW1lbnQxLCBjb25zdCBTdHJpbmcm
IHJlcGxhY2VtZW50Mik7CiAKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNv
bnN0IFZpZXdwb3J0QXJndW1lbnRzJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIFZpZXdwb3J0QXJndW1lbnRzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvVmlld3BvcnRDb25maWd1cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3Bv
cnRDb25maWd1cmF0aW9uLmNwcAppbmRleCAwYzQxMWI0ZDdlNjVmZTExYjE5NDIzMjdmYjAyMDkw
OGY1OGM4Y2Q2Li45MjQ3OTBkOTNhNmM0NDE1MGM2MGI2YWVmYjQ0MTlmMjMzODFhOTllIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uY3BwCkBAIC0zOTks
NDggKzM5OSw5IEBAIGludCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OmxheW91dEhlaWdodCgpIGNv
bnN0CiB9CiAKICNpZm5kZWYgTkRFQlVHCi1jbGFzcyBWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0
U3RyZWFtIDogcHVibGljIFRleHRTdHJlYW0gewotcHVibGljOgotICAgIFZpZXdwb3J0Q29uZmln
dXJhdGlvblRleHRTdHJlYW0oKQotICAgICAgICA6IG1faW5kZW50KDApCi0gICAgewotICAgIH0K
LQotICAgIHVzaW5nIFRleHRTdHJlYW06Om9wZXJhdG9yPDw7Ci0KLSAgICBWaWV3cG9ydENvbmZp
Z3VyYXRpb25UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFZpZXdwb3J0Q29uZmlndXJhdGlv
bjo6UGFyYW1ldGVycyYpOwotICAgIFZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW0mIG9w
ZXJhdG9yPDwoY29uc3QgVmlld3BvcnRBcmd1bWVudHMmKTsKLQotICAgIHZvaWQgaW5jcmVhc2VJ
bmRlbnQoKSB7ICsrbV9pbmRlbnQ7IH0KLSAgICB2b2lkIGRlY3JlYXNlSW5kZW50KCkgeyAtLW1f
aW5kZW50OyBBU1NFUlQobV9pbmRlbnQgPj0gMCk7IH0KLQotICAgIHZvaWQgd3JpdGVJbmRlbnQo
KTsKIAotcHJpdmF0ZToKLSAgICBpbnQgbV9pbmRlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8dHlwZW5h
bWUgVD4KLXN0YXRpYyB2b2lkIGR1bXBQcm9wZXJ0eShWaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0
U3RyZWFtJiB0cywgU3RyaW5nIG5hbWUsIFQgdmFsdWUpCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBWaWV3cG9ydENvbmZpZ3VyYXRpb246OlBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpCiB7Ci0gICAgdHMgPDwgIlxuIjsKLSAgICB0cy5pbmNyZWFzZUluZGVudCgp
OwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwgIigiIDw8IG5hbWUgPDwgIiAiOwot
ICAgIHRzIDw8IHZhbHVlIDw8ICIpIjsKLSAgICB0cy5kZWNyZWFzZUluZGVudCgpOwotfQotCi12
b2lkIFZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW06OndyaXRlSW5kZW50KCkKLXsKLSAg
ICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5kZW50OyArK2kpCi0gICAgICAgICp0aGlzIDw8ICIg
ICI7Ci19Ci0KLVZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW0mIFZpZXdwb3J0Q29uZmln
dXJhdGlvblRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgVmlld3BvcnRDb25maWd1cmF0aW9u
OjpQYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKQotewotICAgIFZpZXdwb3J0Q29uZmlndXJhdGlvblRl
eHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0KICAgICB0cy5pbmNyZWFzZUluZGVudCgpOwogICAgIHRz
IDw8ICJcbiI7CiAgICAgdHMud3JpdGVJbmRlbnQoKTsKQEAgLTQ1NSwzOSArNDE2LDE3IEBAIFZp
ZXdwb3J0Q29uZmlndXJhdGlvblRleHRTdHJlYW0mIFZpZXdwb3J0Q29uZmlndXJhdGlvblRleHRT
dHJlYW06Om9wZXJhdG9yPDwoY29uCiAgICAgdHMgPDwgIihpbml0aWFsU2NhbGUgIiA8PCBwYXJh
bWV0ZXJzLmluaXRpYWxTY2FsZSA8PCAiLCBzZXQ6ICIgPDwgKHBhcmFtZXRlcnMuaW5pdGlhbFNj
YWxlSXNTZXQgPyAidHJ1ZSIgOiAiZmFsc2UiKSA8PCAiKSI7CiAgICAgdHMuZGVjcmVhc2VJbmRl
bnQoKTsKIAotICAgIGR1bXBQcm9wZXJ0eSh0cywgIm1pbmltdW1TY2FsZSIsIHBhcmFtZXRlcnMu
bWluaW11bVNjYWxlKTsKLSAgICBkdW1wUHJvcGVydHkodHMsICJtYXhpbXVtU2NhbGUiLCBwYXJh
bWV0ZXJzLm1heGltdW1TY2FsZSk7Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAiYWxsb3dzVXNlclNj
YWxpbmciLCBwYXJhbWV0ZXJzLmFsbG93c1VzZXJTY2FsaW5nKTsKLSAgICBkdW1wUHJvcGVydHko
dHMsICJhbGxvd3NTaHJpbmtUb0ZpdCIsIHBhcmFtZXRlcnMuYWxsb3dzU2hyaW5rVG9GaXQpOwot
Ci0gICAgcmV0dXJuIHRzOwotfQotCi1WaWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtJiBW
aWV3cG9ydENvbmZpZ3VyYXRpb25UZXh0U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFZpZXdwb3J0
QXJndW1lbnRzJiB2aWV3cG9ydEFyZ3VtZW50cykKLXsKLSAgICBWaWV3cG9ydENvbmZpZ3VyYXRp
b25UZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotCi0gICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLQot
ICAgIHRzIDw8ICJcbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiKHdpZHRo
ICIgPDwgdmlld3BvcnRBcmd1bWVudHMud2lkdGggPDwgIiwgbWluV2lkdGggIiA8PCB2aWV3cG9y
dEFyZ3VtZW50cy5taW5XaWR0aCA8PCAiLCBtYXhXaWR0aCAiIDw8IHZpZXdwb3J0QXJndW1lbnRz
Lm1heFdpZHRoIDw8ICIpIjsKLQotICAgIHRzIDw8ICJcbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQo
KTsKLSAgICB0cyA8PCAiKGhlaWdodCAiIDw8IHZpZXdwb3J0QXJndW1lbnRzLmhlaWdodCA8PCAi
LCBtaW5IZWlnaHQgIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5taW5IZWlnaHQgPDwgIiwgbWF4SGVp
Z2h0ICIgPDwgdmlld3BvcnRBcmd1bWVudHMubWF4SGVpZ2h0IDw8ICIpIjsKLQotICAgIHRzIDw8
ICJcbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiKHpvb20gIiA8PCB2aWV3
cG9ydEFyZ3VtZW50cy56b29tIDw8ICIsIG1pblpvb20gIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5t
aW5ab29tIDw8ICIsIG1heFpvb20gIiA8PCB2aWV3cG9ydEFyZ3VtZW50cy5tYXhab29tIDw8ICIp
IjsKLSAgICB0cy5kZWNyZWFzZUluZGVudCgpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgibWluaW11
bVNjYWxlIiwgcGFyYW1ldGVycy5taW5pbXVtU2NhbGUpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgi
bWF4aW11bVNjYWxlIiwgcGFyYW1ldGVycy5tYXhpbXVtU2NhbGUpOworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgiYWxsb3dzVXNlclNjYWxpbmciLCBwYXJhbWV0ZXJzLmFsbG93c1VzZXJTY2FsaW5nKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoImFsbG93c1Nocmlua1RvRml0IiwgcGFyYW1ldGVycy5hbGxv
d3NTaHJpbmtUb0ZpdCk7CiAKICAgICByZXR1cm4gdHM7CiB9CiAKIENTdHJpbmcgVmlld3BvcnRD
b25maWd1cmF0aW9uOjpkZXNjcmlwdGlvbigpIGNvbnN0CiB7Ci0gICAgVmlld3BvcnRDb25maWd1
cmF0aW9uVGV4dFN0cmVhbSB0czsKKyAgICBUZXh0U3RyZWFtIHRzOwogCiAgICAgdHMgPDwgIih2
aWV3cG9ydC1jb25maWd1cmF0aW9uICIgPDwgKHZvaWQqKXRoaXM7CiAgICAgdHMgPDwgIlxuIjsK
QEAgLTUxNCw4ICs0NTMsOCBAQCBDU3RyaW5nIFZpZXdwb3J0Q29uZmlndXJhdGlvbjo6ZGVzY3Jp
cHRpb24oKSBjb25zdAogICAgIHRzIDw8ICIpIjsKICAgICB0cy5kZWNyZWFzZUluZGVudCgpOwog
Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAiY29udGVudFNpemUiLCBtX2NvbnRlbnRTaXplKTsKLSAg
ICBkdW1wUHJvcGVydHkodHMsICJtaW5pbXVtTGF5b3V0U2l6ZSIsIG1fbWluaW11bUxheW91dFNp
emUpOworICAgIHRzLmR1bXBQcm9wZXJ0eSgiY29udGVudFNpemUiLCBtX2NvbnRlbnRTaXplKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoIm1pbmltdW1MYXlvdXRTaXplIiwgbV9taW5pbXVtTGF5b3V0
U2l6ZSk7CiAKICAgICB0cyA8PCAiXG4iOwogICAgIHRzLmluY3JlYXNlSW5kZW50KCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0Q29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9WaWV3cG9ydENvbmZpZ3VyYXRpb24uaAppbmRleCBmNTAzODliODA5
ZWI1OGNjZWM4ZTY4YTM4NWNlNWU5MDk5MTQzNzg3Li5kYzI5ODM0MWMwYTExMDJhYWM2YzI1YTQ3
MWE2NWYzYzU0MDk2YjZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ZpZXdwb3J0
Q29uZmlndXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVmlld3BvcnRDb25maWd1
cmF0aW9uLmgKQEAgLTMzLDYgKzMzLDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFz
cyBUZXh0U3RyZWFtOworCiBjbGFzcyBWaWV3cG9ydENvbmZpZ3VyYXRpb24gewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFZpZXdwb3J0Q29uZmlndXJhdGlvbik7IFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtMTIyLDYgKzEyNCw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X2ZvcmNlQWx3YXlzVXNlclNjYWxhYmxlOwogfTsKIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgVmlld3BvcnRDb25maWd1cmF0aW9uOjpQYXJhbWV0ZXJzJik7CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFZpZXdwb3J0Q29uZmlndXJhdGlv
bl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b25zdHJhaW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b25zdHJhaW50cy5jcHAKaW5kZXggNGIzZjRkNjhjMTNhZmVlOTk3MjFkYWFiYmU2NzhkMzNiMmIw
OWIyMS4uMDBmMTAxYTM0ZTYxZDI0ODMxMWEyMmQ1OTkyMDYyMjcxM2IwZDYxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRz
LmNwcApAQCAtMjYsNiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIlNj
cm9sbGluZ0NvbnN0cmFpbnRzLmgiCiAKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCisKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRmxvYXRQb2ludCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJh
aW50czo6bGF5ZXJQb3NpdGlvbkZvclZpZXdwb3J0UmVjdChjb25zdCBGbG9hdFJlY3QmIHZpZXdw
b3J0UmVjdCkgY29uc3QKQEAgLTk4LDQgKzEwMCwyMCBAQCBGbG9hdFBvaW50IFN0aWNreVBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50czo6bGF5ZXJQb3NpdGlvbkZvckNvbnN0cmFpbmluZ1JlY3Qo
YwogICAgIHJldHVybiBtX2xheWVyUG9zaXRpb25BdExhc3RMYXlvdXQgKyBvZmZzZXQgLSBtX3N0
aWNreU9mZnNldEF0TGFzdExheW91dDsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0
U3RyZWFtJiB0cywgY29uc3QgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmIGNvbnN0
cmFpbnRzKQoreworICAgIHRzLmR1bXBQcm9wZXJ0eSgidmlld3BvcnQtcmVjdC1hdC1sYXN0LWxh
eW91dCIsIGNvbnN0cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpKTsKKyAgICB0cy5k
dW1wUHJvcGVydHkoImxheWVyLXBvc2l0aW9uLWF0LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMu
bGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsKKworICAgIHJldHVybiB0czsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU3RpY2t5UG9zaXRpb25W
aWV3cG9ydENvbnN0cmFpbnRzJiBjb25zdHJhaW50cykKK3sKKyAgICB0cy5kdW1wUHJvcGVydHko
InN0aWNreS1wb3NpdGlvbi1hdC1sYXN0LWxheW91dCIsIGNvbnN0cmFpbnRzLnN0aWNreU9mZnNl
dEF0TGFzdExheW91dCgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImxheWVyLXBvc2l0aW9uLWF0
LWxhc3QtbGF5b3V0IiwgY29uc3RyYWludHMubGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dCgpKTsK
KworICAgIHJldHVybiB0czsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0NvbnN0cmFpbnRzLmgKaW5k
ZXggMzIzYjU2NDJiYjczNWE1Mzg5OTcwZTU5YjI0MzgzNWQ4NGZjZjM0MS4uMjNiMDViOGFiZjg3
MTU2NzdmZDliOWJiOTZkNTZiOWU5YWRmZTVlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29uc3RyYWludHMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb25zdHJhaW50cy5oCkBAIC0xOTYsNiArMTk2LDkg
QEAgcHJpdmF0ZToKICAgICBGbG9hdFBvaW50IG1fbGF5ZXJQb3NpdGlvbkF0TGFzdExheW91dDsK
IH07CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IGNvbnN0IEZpeGVkUG9zaXRpb25WaWV3cG9ydENvbnN0cmFpbnRzJik7CitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBTdGlja3lQb3NpdGlv
blZpZXdwb3J0Q29uc3RyYWludHMmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gU2Nyb2xsaW5nQ29uc3RyYWludHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDVjNTJiYTBkNjM0
ZDI1YWQ0MDEzNjE5ZWRiYjE1MmIxZGVmMDViMjcuLmI3YWY3OWE2NjBiZGJiMDExMzgyNzMxNDJl
MDU2Yzk4N2M5OWM5N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5n
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9s
bGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRl
ICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiU2Nyb2xsQW5pbWF0b3IuaCIKICNpbmNsdWRlICJT
ZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvTWFpblRo
cmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4KIApAQCAtNDIxLDQg
KzQyMiwyMyBAQCBTdHJpbmcgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29uc0FzVGV4dCgpIGNvbnN0CiAgICAgcmV0dXJuIFN0cmluZygpOwogfQogCitUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBTY3JvbGxpbmdOb2RlVHlwZSBub2Rl
VHlwZSkKK3sKKyAgICBzd2l0Y2ggKG5vZGVUeXBlKSB7CisgICAgY2FzZSBGcmFtZVNjcm9sbGlu
Z05vZGU6CisgICAgICAgIHRzIDw8ICJmcmFtZS1zY3JvbGxpbmciOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIE92ZXJmbG93U2Nyb2xsaW5nTm9kZToKKyAgICAgICAgdHMgPDwgIm92ZXJmbG93
LXNjcm9sbGluZyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRml4ZWROb2RlOgorICAgICAg
ICB0cyA8PCAiZml4ZWQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0aWNreU5vZGU6Cisg
ICAgICAgIHRzIDw8ICJzdGlja3kiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJu
IHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAppbmRleCAxMzEwY2I0ZWYz
YWIxMTc0YmFkZWMwMDY3YzRiNGFiODJlZmJiMWExLi5jOTFjMzJjZDI4Yjc2YTA3YmNhMjAyNjQz
OThhMDc3ZDk0MGRiMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdDb29yZGluYXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgKQEAgLTYyLDYgKzYyLDcgQEAgY2xhc3MgR3JhcGhp
Y3NMYXllcjsKIGNsYXNzIFBhZ2U7CiBjbGFzcyBSZWdpb247CiBjbGFzcyBTY3JvbGxhYmxlQXJl
YTsKK2NsYXNzIFRleHRTdHJlYW07CiBjbGFzcyBWaWV3cG9ydENvbnN0cmFpbnRzOwogCiAjaWYg
RU5BQkxFKEFTWU5DX1NDUk9MTElORykKQEAgLTIzMyw2ICsyMzQsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgbV9mb3JjZVN5bmNocm9ub3VzU2Nyb2xsTGF5ZXJQb3NpdGlvblVwZGF0ZXMgeyBmYWxz
ZSB9OwogfTsKIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3Ry
ZWFtJiwgU2Nyb2xsaW5nTm9kZVR5cGUpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNk
ZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19TQ1JPTExJTkdfQ09PUkRJTkFUT1IoVG9WYWx1
ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ZThhNjZmYjI2OGU5
MjdiZTc0ODgxN2YwNzhlOGQxNTJjOGViZDEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsNTMg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUaW1pbmdGdW5jdGlvbi5oIgorCisjaW5jbHVkZSAi
VGV4dFN0cmVhbS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRpbWluZ0Z1bmN0aW9uJiB0aW1pbmdGdW5jdGlv
bikKK3sKKyAgICBzd2l0Y2ggKHRpbWluZ0Z1bmN0aW9uLnR5cGUoKSkgeworICAgIGNhc2UgVGlt
aW5nRnVuY3Rpb246OkxpbmVhckZ1bmN0aW9uOgorICAgICAgICB0cyA8PCAibGluZWFyIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBUaW1pbmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlv
bjogeworICAgICAgICBjb25zdCBDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uJiBjdWJpY0Jlemll
ckZ1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiY+
KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgdHMgPDwgImN1YmljLWJlemllcigiIDw8IGN1Ymlj
QmV6aWVyRnVuY3Rpb24ueDEoKSA8PCAiLCAiIDw8IGN1YmljQmV6aWVyRnVuY3Rpb24ueTEoKSA8
PCAiLCAiIDw8ICBjdWJpY0JlemllckZ1bmN0aW9uLngyKCkgPDwgIiwgIiA8PCBjdWJpY0Jlemll
ckZ1bmN0aW9uLnkyKCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBU
aW1pbmdGdW5jdGlvbjo6U3RlcHNGdW5jdGlvbjogeworICAgICAgICBjb25zdCBTdGVwc1RpbWlu
Z0Z1bmN0aW9uJiBzdGVwc0Z1bmN0aW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgU3RlcHNUaW1pbmdG
dW5jdGlvbiY+KHRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgdHMgPDwgInN0ZXBzKCIgPDwgc3Rl
cHNGdW5jdGlvbi5udW1iZXJPZlN0ZXBzKCkgPDwgIiwgIiA8PCAoc3RlcHNGdW5jdGlvbi5zdGVw
QXRTdGFydCgpID8gInN0YXJ0IiA6ICJlbmQiKSA8PCAiKSI7CisgICAgICAgIGJyZWFrOworICAg
IH0KKyAgICB9CisgICAgcmV0dXJuIHRzOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hbmltYXRpb24vVGltaW5nRnVuY3Rp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5o
CmluZGV4IDg4NzYyNmFlOTlhZTQwOTFjMDYzNTk2ZGMzMWYyZTBhMDNlZTRkODEuLjI0ODZhOTM3
NTZlNmQyZTM0YTMzMjFmYjUzMzI2NDFmNjA0OGFiNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2FuaW1hdGlvbi9UaW1pbmdGdW5jdGlvbi5oCkBAIC0yNSw2ICsyNSw3IEBA
CiAjaWZuZGVmIFRpbWluZ0Z1bmN0aW9uX2gKICNkZWZpbmUgVGltaW5nRnVuY3Rpb25faAogCisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgog
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0yMzAsNiArMjMxLDkgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fc3RlcEF0U3RhcnQ7CiB9OwogCitjbGFzcyBUZXh0U3RyZWFtOworV0VCQ09SRV9FWFBP
UlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgY29uc3QgVGltaW5nRnVuY3Rp
b24mKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gVGltaW5nRnVuY3Rp
b25faApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuY3BwCmluZGV4IDAy
MDM2N2FkN2RiMGYwZjdhNTAwYzQ2OWI0NjAyZjMzZWNmMDM0ZGYuLmYwMDZjNjc0N2Q1MDg2OWEx
MWFmYTc4YTAzZDAxMzYxYjg3YzkwMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0NvbG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9Db2xvci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvblV0
aWxpdGllcy5oIgogI2luY2x1ZGUgIkhhc2hUb29scy5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0u
aCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi9EZWNpbWFsTnVt
YmVyLmg+CiAjaW5jbHVkZSA8d3RmL0hleE51bWJlci5oPgpAQCAtNDg4LDUgKzQ4OSw5IEBAIENv
bG9yIGJsZW5kKGNvbnN0IENvbG9yJiBmcm9tLCBjb25zdCBDb2xvciYgdG8sIGRvdWJsZSBwcm9n
cmVzcywgYm9vbCBibGVuZFByZW11CiAgICAgICAgIGJsZW5kKGZyb20uYWxwaGEoKSwgdG8uYWxw
aGEoKSwgcHJvZ3Jlc3MpKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgQ29sb3ImIGNvbG9yKQoreworICAgIHJldHVybiB0cyA8PCBjb2xvci5uYW1l
Rm9yUmVuZGVyVHJlZUFzVGV4dCgpOworfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9Db2xvci5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvQ29sb3IuaAppbmRleCA2Yzc5YzYzYmNmYTgxMmZh
YzQ2OGZlODg2ZDcwNDVjODk4Mjg0NDMzLi5kMWQ0ZTcyNzcwMGQ5ZTI4YzBjZmRiMzU0ZWJiOWM5
Y2FmOWQxODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9D
b2xvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0NvbG9yLmgKQEAg
LTQ2LDYgKzQ2LDggQEAgdHlwZWRlZiBzdHJ1Y3QgX0dka1JHQkEgR2RrUkdCQTsKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCitjbGFzcyBUZXh0U3RyZWFtOworCiB0eXBlZGVmIHVuc2lnbmVkIFJH
QkEzMjsgLy8gRGVwcmVjYXRlZDogVHlwZSBmb3IgYW4gUkdCQSBxdWFkcnVwbGV0LiBVc2UgUkdC
QSBjbGFzcyBpbnN0ZWFkLgogCiBXRUJDT1JFX0VYUE9SVCBSR0JBMzIgbWFrZVJHQihpbnQgciwg
aW50IGcsIGludCBiKTsKQEAgLTI5Miw2ICsyOTQsOCBAQCBpbmxpbmUgdWludDE2X3QgZmFzdERp
dmlkZUJ5MjU1KHVpbnQxNl90IHZhbHVlKQogICAgIHJldHVybiBhcHByb3hpbWF0aW9uICsgKHJl
bWFpbmRlciA+PiA4KTsKIH0KIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiwgY29uc3QgQ29sb3ImKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gQ29sb3JfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRQb2ludDNELmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0Zsb2F0UG9pbnQzRC5jcHAKaW5kZXggZWQxODE2YmRkN2E4YzYyMjQxMDk1ZDQ4MzVhZTli
OTExMGY2NmI2ZC4uYzZmYmRhYjcyMzNlMDBlOTdkYzI3OWFmYjJhNjI2ZmMzMTFjNDk5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRQb2ludDNELmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuY3Bw
CkBAIC0yMCw5ICsyMCw5IEBACiAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRl
ICJGbG9hdFBvaW50M0QuaCIKIAorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDxt
YXRoLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDUgKzM4LDEwIEBAIHZvaWQgRmxv
YXRQb2ludDNEOjpub3JtYWxpemUoKQogICAgIH0KIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmxvYXRQb2ludDNEJiBwb2ludCkKK3sKKyAgICByZXR1
cm4gdHMgPDwgcG9pbnQueCgpIDw8ICIgIiA8PCBwb2ludC55KCkgPDwgIiAiIDw8IHBvaW50Lnoo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFBvaW50M0QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9pbnQzRC5oCmluZGV4IGJhMGVlOWQ5NDcxZGY1ZTk3NjZh
NTAzMjJiNWY1YzRjYjQwOGM4ZWMuLjNjNmUyYTc3Y2VjMzZiYmI1Yzc5OWQ5ZTA5NDQ4MzMzOTgw
NTYyZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0
UG9pbnQzRC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0UG9p
bnQzRC5oCkBAIC0xODIsNiArMTgyLDggQEAgaW5saW5lIGZsb2F0IEZsb2F0UG9pbnQzRDo6ZGlz
dGFuY2VUbyhjb25zdCBGbG9hdFBvaW50M0QmIGEpIGNvbnN0CiAgICAgcmV0dXJuICgqdGhpcyAt
IGEpLmxlbmd0aCgpOwogfQogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mLCBjb25zdCBGbG9hdFBvaW50M0QmKTsKKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRmxvYXRQb2ludDNEX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91bmRlZFJlY3QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKaW5kZXggZDM0ZWMyYWUx
ZmEwMjc3MjY4ZGQxZmZmOGVmMDgzNzk1NDY1MTA4Ny4uZDk4NTZiODAzZDNiMTc3MDZiNmQ1NDZh
ZjVlOGZiOWM3NTViMDBhMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5jcHAKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGbG9hdFJvdW5kZWRSZWN0LmgiCiAKKyNpbmNsdWRlICJU
ZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8YWxnb3JpdGhtPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CkBAIC0xOTYsNSArMTk3LDI0IEBAIHZvaWQgRmxvYXRSb3VuZGVkUmVjdDo6YWRqdXN0UmFkaWko
KQogICAgIG1fcmFkaWkuc2NhbGUod2lkdGhSYXRpbyA8IGhlaWdodFJhdGlvID8gd2lkdGhSYXRp
byA6IGhlaWdodFJhdGlvKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFt
JiB0cywgY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYgcm91bmRlZFJlY3QpCit7CisgICAgdHMgPDwg
cm91bmRlZFJlY3QucmVjdCgpLngoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QucmVjdCgpLnkoKSA8
PCAiICIgPDwgcm91bmRlZFJlY3QucmVjdCgpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0
LnJlY3QoKS5oZWlnaHQoKSA8PCAiXG4iOworCisgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKKyAg
ICB0cy53cml0ZUluZGVudCgpOworICAgIHRzIDw8ICJ0b3BMZWZ0PSIgPDwgcm91bmRlZFJlY3Qu
dG9wTGVmdENvcm5lcigpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LnRvcExlZnRDb3Ju
ZXIoKS5oZWlnaHQoKSA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwg
InRvcFJpZ2h0PSIgPDwgcm91bmRlZFJlY3QudG9wUmlnaHRDb3JuZXIoKS53aWR0aCgpIDw8ICIg
IiA8PCByb3VuZGVkUmVjdC50b3BSaWdodENvcm5lcigpLmhlaWdodCgpIDw8ICJcbiI7CisgICAg
dHMud3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8PCAiYm90dG9tTGVmdD0iIDw8IHJvdW5kZWRSZWN0
LmJvdHRvbUxlZnRDb3JuZXIoKS53aWR0aCgpIDw8ICIgIiA8PCByb3VuZGVkUmVjdC5ib3R0b21M
ZWZ0Q29ybmVyKCkuaGVpZ2h0KCkgPDwgIlxuIjsKKyAgICB0cy53cml0ZUluZGVudCgpOworICAg
IHRzIDw8ICJib3R0b21SaWdodD0iIDw8IHJvdW5kZWRSZWN0LmJvdHRvbVJpZ2h0Q29ybmVyKCku
d2lkdGgoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QuYm90dG9tUmlnaHRDb3JuZXIoKS5oZWlnaHQo
KTsKKyAgICB0cy5kZWNyZWFzZUluZGVudCgpOworCisgICAgcmV0dXJuIHRzOworfQorCisKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvRmxvYXRSb3VuZGVkUmVjdC5oCmluZGV4IGZkMmZjMWJhYWQ3MGIwYjI3MTVlNzA3
ZWE2MThlMmQ1NDg4YTU4ZmMuLjkzMzg4NThiMzlkMGJkNzIxNTZkMTYxZTExNmM2YzFjNzhmZTNm
OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0Zsb2F0Um91
bmRlZFJlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9GbG9hdFJv
dW5kZWRSZWN0LmgKQEAgLTE3OCw2ICsxNzgsOCBAQCBpbmxpbmUgZmxvYXQgY2FsY0JvcmRlclJh
ZGlpQ29uc3RyYWludFNjYWxlRm9yKGNvbnN0IEZsb2F0UmVjdCYgcmVjdCwgY29uc3QgRmxvYQog
ICAgIHJldHVybiBmYWN0b3I7CiB9CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IEZsb2F0Um91bmRlZFJlY3QmKTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRmxvYXRSb3VuZGVkUmVjdF9oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0xheWVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCmluZGV4IDA2
MTZjZDhmY2Q0MmE1Yzk0ZDQ5NDg2YmFjMmZhM2JlZTY0ODhjODguLjI5NGNiNmJhYTgzOWRkN2Zh
MTgwNDdiZmQ3MjRmNmM4YjAzZWQwYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuY3BwCkBAIC04NzUsNiArODc1LDI5IEBAIHZvaWQg
R3JhcGhpY3NMYXllcjo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQs
IExheWVyVHJlZUFzVGV4dEJlCiAgICAgfQogfQogCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklE
PiYgbGF5ZXJzKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGF5ZXJzLnNpemUoKTsg
KytpKSB7CisgICAgICAgIGlmIChpKQorICAgICAgICAgICAgdHMgPDwgIiAiOworICAgICAgICB0
cyA8PCBsYXllcnNbaV07CisgICAgfQorCisgICAgcmV0dXJuIHRzOworfQorCitUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBXZWJDb3JlOjpHcmFwaGljc0xheWVy
OjpDdXN0b21BcHBlYXJhbmNlJiBjdXN0b21BcHBlYXJhbmNlKQoreworICAgIHN3aXRjaCAoY3Vz
dG9tQXBwZWFyYW5jZSkgeworICAgIGNhc2UgR3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5j
ZTo6Tm9DdXN0b21BcHBlYXJhbmNlOiB0cyA8PCAibm9uZSI7IGJyZWFrOworICAgIGNhc2UgR3Jh
cGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6U2Nyb2xsaW5nT3Zlcmhhbmc6IHRzIDw8ICJz
Y3JvbGxpbmctb3ZlcmhhbmciOyBicmVhazsKKyAgICBjYXNlIEdyYXBoaWNzTGF5ZXI6OkN1c3Rv
bUFwcGVhcmFuY2U6OlNjcm9sbGluZ1NoYWRvdzogdHMgPDwgInNjcm9sbGluZy1zaGFkb3ciOyBi
cmVhazsKKyAgICBjYXNlIEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkxpZ2h0QmFj
a2Ryb3BBcHBlYXJhbmNlOiB0cyA8PCAibGlnaHQtYmFja2Ryb3AiOyBicmVhazsKKyAgICBjYXNl
IEdyYXBoaWNzTGF5ZXI6OkN1c3RvbUFwcGVhcmFuY2U6OkRhcmtCYWNrZHJvcEFwcGVhcmFuY2U6
IHRzIDw8ICJkYXJrLWJhY2tkcm9wIjsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30K
KwogU3RyaW5nIEdyYXBoaWNzTGF5ZXI6OmxheWVyVHJlZUFzVGV4dChMYXllclRyZWVBc1RleHRC
ZWhhdmlvciBiZWhhdmlvcikgY29uc3QKIHsKICAgICBUZXh0U3RyZWFtIHRzOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NMYXllci5oCmluZGV4IDU3NmU3
MmY2NThkMWI3NWNlZjZjNTE5N2Q5ZTczOTlmOTlkNTQ0OTMuLjBiNzY2ODE2ZTMyOTcxOTY3ZTUy
MGYzMzA2ZGMxMzM5MTljMDQ2NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0xheWVyLmgKQEAgLTY0MCw2ICs2NDAsOSBAQCBwcm90ZWN0ZWQ6CiAj
ZW5kaWYKIH07CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIGNvbnN0IFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+Jik7CitX
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBH
cmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2RlZmluZSBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0dSQVBISUNTTEFZRVIoVG9WYWx1
ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5jcHAKaW5kZXggYzcyNjUyNzNmODljZjIyY2RjYWM0YmQw
NGRmMTM3NDZjOTRiZTRkZS4uZDUyMzA4YzdjYzUzNDk1MTYzMmU4ZTAwZDZlYjJkYTU4NjI0Yjcy
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NU
eXBlcy5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJHcmFwaGljc1R5cGVzLmgiCiAKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAt
MjM2LDQgKzIzNyw3NiBAQCBib29sIHBhcnNlVGV4dEJhc2VsaW5lKGNvbnN0IFN0cmluZyYgcywg
VGV4dEJhc2VsaW5lJiBiYXNlbGluZSkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK1RleHRTdHJl
YW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIEJsZW5kTW9kZSBibGVuZE1vZGUpCit7Cisg
ICAgc3dpdGNoIChibGVuZE1vZGUpIHsKKyAgICBjYXNlIEJsZW5kTW9kZU5vcm1hbDogdHMgPDwg
Im5vcm1hbCI7IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlTXVsdGlwbHk6IHRzIDw8ICJtdWx0
aXBseSI7IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlU2NyZWVuOiB0cyA8PCAic2NyZWVuIjsg
YnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVPdmVybGF5OiB0cyA8PCAib3ZlcmxheSI7IGJyZWFr
OworICAgIGNhc2UgQmxlbmRNb2RlRGFya2VuOiB0cyA8PCAiZGFya2VuIjsgYnJlYWs7CisgICAg
Y2FzZSBCbGVuZE1vZGVMaWdodGVuOiB0cyA8PCAibGlnaHRlbiI7IGJyZWFrOworICAgIGNhc2Ug
QmxlbmRNb2RlQ29sb3JEb2RnZTogdHMgPDwgImNvbG9yLWRvZGdlIjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVDb2xvckJ1cm46IHRzIDw8ICJjb2xvci1idXJuIjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVIYXJkTGlnaHQ6IHRzIDw8ICJoYXJkLWxpZ2h0IjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVTb2Z0TGlnaHQ6IHRzIDw8ICJzb2Z0LWxpZ2h0IjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVEaWZmZXJlbmNlOiB0cyA8PCAiZGlmZmVyZW5jZSI7IGJyZWFrOworICAgIGNh
c2UgQmxlbmRNb2RlRXhjbHVzaW9uOiB0cyA8PCAiZXhjbHVzaW9uIjsgYnJlYWs7CisgICAgY2Fz
ZSBCbGVuZE1vZGVIdWU6IHRzIDw8ICJodWUiOyBicmVhazsKKyAgICBjYXNlIEJsZW5kTW9kZVNh
dHVyYXRpb246IHRzIDw8ICJzYXR1cmF0aW9uIjsgYnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVD
b2xvcjogdHMgPDwgImNvbG9yIjsgYnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVMdW1pbm9zaXR5
OiB0cyA8PCAibHVtaW5vc2l0eSI7IGJyZWFrOworICAgIGNhc2UgQmxlbmRNb2RlUGx1c0Rhcmtl
cjogdHMgPDwgInBsdXMtZGFya2VyIjsgYnJlYWs7CisgICAgY2FzZSBCbGVuZE1vZGVQbHVzTGln
aHRlcjogdHMgPDwgInBsdXMtbGlnaHRlciI7IGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7
Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFdpbmRSdWxlIHJ1
bGUpCit7CisgICAgc3dpdGNoIChydWxlKSB7CisgICAgY2FzZSBSVUxFX05PTlpFUk86CisgICAg
ICAgIHRzIDw8ICJOT04tWkVSTyI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUlVMRV9FVkVO
T0REOgorICAgICAgICB0cyA8PCAiRVZFTi1PREQiOworICAgICAgICBicmVhazsKKyAgICB9CisK
KyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYg
dHMsIExpbmVDYXAgY2FwU3R5bGUpCit7CisgICAgc3dpdGNoIChjYXBTdHlsZSkgeworICAgIGNh
c2UgQnV0dENhcDoKKyAgICAgICAgdHMgPDwgIkJVVFQiOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIFJvdW5kQ2FwOgorICAgICAgICB0cyA8PCAiUk9VTkQiOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFNxdWFyZUNhcDoKKyAgICAgICAgdHMgPDwgIlNRVUFSRSI7CisgICAgICAgIGJyZWFr
OworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKK1RleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4
dFN0cmVhbSYgdHMsIExpbmVKb2luIGpvaW5TdHlsZSkKK3sKKyAgICBzd2l0Y2ggKGpvaW5TdHls
ZSkgeworICAgIGNhc2UgTWl0ZXJKb2luOgorICAgICAgICB0cyA8PCAiTUlURVIiOworICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFJvdW5kSm9pbjoKKyAgICAgICAgdHMgPDwgIlJPVU5EIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBCZXZlbEpvaW46CisgICAgICAgIHRzIDw8ICJCRVZFTCI7
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gdHM7Cit9CisKKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NUeXBlcy5oCmluZGV4IDAw
NTIxYjZhZjRjOWE4NmM5MWE0ZTRkODE4NGYzZTA0ZjA4Y2E3YzQuLjExZGZmZTY3ZGY4NjkyNjNi
ZDA2ODQ4MDM0MmRkYmM2MjAxY2IyMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0dyYXBoaWNzVHlwZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9HcmFwaGljc1R5cGVzLmgKQEAgLTI2LDg1ICsyNiw5MiBAQAogI2lmbmRlZiBH
cmFwaGljc1R5cGVzX2gKICNkZWZpbmUgR3JhcGhpY3NUeXBlc19oCiAKKyNpbmNsdWRlICJXaW5k
UnVsZS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotICAgIGVudW0gQ29tcG9zaXRlT3BlcmF0b3IgewotICAgICAgICBDb21wb3NpdGVDbGVhciwK
LSAgICAgICAgQ29tcG9zaXRlQ29weSwKLSAgICAgICAgQ29tcG9zaXRlU291cmNlT3ZlciwKLSAg
ICAgICAgQ29tcG9zaXRlU291cmNlSW4sCi0gICAgICAgIENvbXBvc2l0ZVNvdXJjZU91dCwKLSAg
ICAgICAgQ29tcG9zaXRlU291cmNlQXRvcCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25P
dmVyLAotICAgICAgICBDb21wb3NpdGVEZXN0aW5hdGlvbkluLAotICAgICAgICBDb21wb3NpdGVE
ZXN0aW5hdGlvbk91dCwKLSAgICAgICAgQ29tcG9zaXRlRGVzdGluYXRpb25BdG9wLAotICAgICAg
ICBDb21wb3NpdGVYT1IsCi0gICAgICAgIENvbXBvc2l0ZVBsdXNEYXJrZXIsCi0gICAgICAgIENv
bXBvc2l0ZVBsdXNMaWdodGVyLAotICAgICAgICBDb21wb3NpdGVEaWZmZXJlbmNlCi0gICAgfTsK
LQotICAgIGVudW0gQmxlbmRNb2RlIHsKLSAgICAgICAgQmxlbmRNb2RlTm9ybWFsID0gMSwgLy8g
U3RhcnQgd2l0aCAxIHRvIG1hdGNoIFNWRydzIGJsZW5kbW9kZSBlbnVtZXJhdGlvbi4KLSAgICAg
ICAgQmxlbmRNb2RlTXVsdGlwbHksCi0gICAgICAgIEJsZW5kTW9kZVNjcmVlbiwKLSAgICAgICAg
QmxlbmRNb2RlRGFya2VuLAotICAgICAgICBCbGVuZE1vZGVMaWdodGVuLAotICAgICAgICBCbGVu
ZE1vZGVPdmVybGF5LAotICAgICAgICBCbGVuZE1vZGVDb2xvckRvZGdlLAotICAgICAgICBCbGVu
ZE1vZGVDb2xvckJ1cm4sCi0gICAgICAgIEJsZW5kTW9kZUhhcmRMaWdodCwKLSAgICAgICAgQmxl
bmRNb2RlU29mdExpZ2h0LAotICAgICAgICBCbGVuZE1vZGVEaWZmZXJlbmNlLAotICAgICAgICBC
bGVuZE1vZGVFeGNsdXNpb24sCi0gICAgICAgIEJsZW5kTW9kZUh1ZSwKLSAgICAgICAgQmxlbmRN
b2RlU2F0dXJhdGlvbiwKLSAgICAgICAgQmxlbmRNb2RlQ29sb3IsCi0gICAgICAgIEJsZW5kTW9k
ZUx1bWlub3NpdHksCi0gICAgICAgIEJsZW5kTW9kZVBsdXNEYXJrZXIsCi0gICAgICAgIEJsZW5k
TW9kZVBsdXNMaWdodGVyCi0gICAgfTsKLQotICAgIGVudW0gR3JhZGllbnRTcHJlYWRNZXRob2Qg
ewotICAgICAgICBTcHJlYWRNZXRob2RQYWQsCi0gICAgICAgIFNwcmVhZE1ldGhvZFJlZmxlY3Qs
Ci0gICAgICAgIFNwcmVhZE1ldGhvZFJlcGVhdAotICAgIH07Ci0KLSAgICBlbnVtIExpbmVDYXAg
eyBCdXR0Q2FwLCBSb3VuZENhcCwgU3F1YXJlQ2FwIH07Ci0KLSAgICBlbnVtIExpbmVKb2luIHsg
TWl0ZXJKb2luLCBSb3VuZEpvaW4sIEJldmVsSm9pbiB9OwotCi0gICAgZW51bSBIb3Jpem9udGFs
QWxpZ25tZW50IHsgQWxpZ25MZWZ0LCBBbGlnblJpZ2h0LCBBbGlnbkhDZW50ZXIgfTsKLQotICAg
IGVudW0gVGV4dEJhc2VsaW5lIHsgQWxwaGFiZXRpY1RleHRCYXNlbGluZSwgVG9wVGV4dEJhc2Vs
aW5lLCBNaWRkbGVUZXh0QmFzZWxpbmUsIEJvdHRvbVRleHRCYXNlbGluZSwgSWRlb2dyYXBoaWNU
ZXh0QmFzZWxpbmUsIEhhbmdpbmdUZXh0QmFzZWxpbmUgfTsKLSAgICAKLSAgICBlbnVtIFRleHRB
bGlnbiB7IFN0YXJ0VGV4dEFsaWduLCBFbmRUZXh0QWxpZ24sIExlZnRUZXh0QWxpZ24sIENlbnRl
clRleHRBbGlnbiwgUmlnaHRUZXh0QWxpZ24gfTsKLQotICAgIGVudW0gUmVuZGVyaW5nTW9kZSB7
Ci0gICAgICAgIFVuYWNjZWxlcmF0ZWQsCi0gICAgICAgIFVuYWNjZWxlcmF0ZWROb25QbGF0Zm9y
bUJ1ZmZlciwgLy8gVXNlIHBsYWluIG1lbW9yeSBhbGxvY2F0aW9uIHJhdGhlciB0aGFuIHBsYXRm
b3JtIEFQSSB0byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlLgotICAgICAgICBBY2NlbGVyYXRlZAot
ICAgIH07Ci0KLSAgICBTdHJpbmcgY29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJh
dG9yLCBCbGVuZE1vZGUpOwotICAgIGJvb2wgcGFyc2VCbGVuZE1vZGUoY29uc3QgU3RyaW5nJiwg
QmxlbmRNb2RlJik7Ci0gICAgYm9vbCBwYXJzZUNvbXBvc2l0ZUFuZEJsZW5kT3BlcmF0b3IoY29u
c3QgU3RyaW5nJiwgQ29tcG9zaXRlT3BlcmF0b3ImLCBCbGVuZE1vZGUmKTsKLQotICAgIFN0cmlu
ZyBsaW5lQ2FwTmFtZShMaW5lQ2FwKTsKLSAgICBib29sIHBhcnNlTGluZUNhcChjb25zdCBTdHJp
bmcmLCBMaW5lQ2FwJik7Ci0KLSAgICBTdHJpbmcgbGluZUpvaW5OYW1lKExpbmVKb2luKTsKLSAg
ICBib29sIHBhcnNlTGluZUpvaW4oY29uc3QgU3RyaW5nJiwgTGluZUpvaW4mKTsKLQotICAgIFN0
cmluZyB0ZXh0QWxpZ25OYW1lKFRleHRBbGlnbik7Ci0gICAgYm9vbCBwYXJzZVRleHRBbGlnbihj
b25zdCBTdHJpbmcmLCBUZXh0QWxpZ24mKTsKLSAgICAKLSAgICBTdHJpbmcgdGV4dEJhc2VsaW5l
TmFtZShUZXh0QmFzZWxpbmUpOwotICAgIGJvb2wgcGFyc2VUZXh0QmFzZWxpbmUoY29uc3QgU3Ry
aW5nJiwgVGV4dEJhc2VsaW5lJik7CitlbnVtIENvbXBvc2l0ZU9wZXJhdG9yIHsKKyAgICBDb21w
b3NpdGVDbGVhciwKKyAgICBDb21wb3NpdGVDb3B5LAorICAgIENvbXBvc2l0ZVNvdXJjZU92ZXIs
CisgICAgQ29tcG9zaXRlU291cmNlSW4sCisgICAgQ29tcG9zaXRlU291cmNlT3V0LAorICAgIENv
bXBvc2l0ZVNvdXJjZUF0b3AsCisgICAgQ29tcG9zaXRlRGVzdGluYXRpb25PdmVyLAorICAgIENv
bXBvc2l0ZURlc3RpbmF0aW9uSW4sCisgICAgQ29tcG9zaXRlRGVzdGluYXRpb25PdXQsCisgICAg
Q29tcG9zaXRlRGVzdGluYXRpb25BdG9wLAorICAgIENvbXBvc2l0ZVhPUiwKKyAgICBDb21wb3Np
dGVQbHVzRGFya2VyLAorICAgIENvbXBvc2l0ZVBsdXNMaWdodGVyLAorICAgIENvbXBvc2l0ZURp
ZmZlcmVuY2UKK307CisKK2VudW0gQmxlbmRNb2RlIHsKKyAgICBCbGVuZE1vZGVOb3JtYWwgPSAx
LCAvLyBTdGFydCB3aXRoIDEgdG8gbWF0Y2ggU1ZHJ3MgYmxlbmRtb2RlIGVudW1lcmF0aW9uLgor
ICAgIEJsZW5kTW9kZU11bHRpcGx5LAorICAgIEJsZW5kTW9kZVNjcmVlbiwKKyAgICBCbGVuZE1v
ZGVEYXJrZW4sCisgICAgQmxlbmRNb2RlTGlnaHRlbiwKKyAgICBCbGVuZE1vZGVPdmVybGF5LAor
ICAgIEJsZW5kTW9kZUNvbG9yRG9kZ2UsCisgICAgQmxlbmRNb2RlQ29sb3JCdXJuLAorICAgIEJs
ZW5kTW9kZUhhcmRMaWdodCwKKyAgICBCbGVuZE1vZGVTb2Z0TGlnaHQsCisgICAgQmxlbmRNb2Rl
RGlmZmVyZW5jZSwKKyAgICBCbGVuZE1vZGVFeGNsdXNpb24sCisgICAgQmxlbmRNb2RlSHVlLAor
ICAgIEJsZW5kTW9kZVNhdHVyYXRpb24sCisgICAgQmxlbmRNb2RlQ29sb3IsCisgICAgQmxlbmRN
b2RlTHVtaW5vc2l0eSwKKyAgICBCbGVuZE1vZGVQbHVzRGFya2VyLAorICAgIEJsZW5kTW9kZVBs
dXNMaWdodGVyCit9OworCitlbnVtIEdyYWRpZW50U3ByZWFkTWV0aG9kIHsKKyAgICBTcHJlYWRN
ZXRob2RQYWQsCisgICAgU3ByZWFkTWV0aG9kUmVmbGVjdCwKKyAgICBTcHJlYWRNZXRob2RSZXBl
YXQKK307CisKK2VudW0gTGluZUNhcCB7IEJ1dHRDYXAsIFJvdW5kQ2FwLCBTcXVhcmVDYXAgfTsK
KworZW51bSBMaW5lSm9pbiB7IE1pdGVySm9pbiwgUm91bmRKb2luLCBCZXZlbEpvaW4gfTsKKwor
ZW51bSBIb3Jpem9udGFsQWxpZ25tZW50IHsgQWxpZ25MZWZ0LCBBbGlnblJpZ2h0LCBBbGlnbkhD
ZW50ZXIgfTsKKworZW51bSBUZXh0QmFzZWxpbmUgeyBBbHBoYWJldGljVGV4dEJhc2VsaW5lLCBU
b3BUZXh0QmFzZWxpbmUsIE1pZGRsZVRleHRCYXNlbGluZSwgQm90dG9tVGV4dEJhc2VsaW5lLCBJ
ZGVvZ3JhcGhpY1RleHRCYXNlbGluZSwgSGFuZ2luZ1RleHRCYXNlbGluZSB9OworCitlbnVtIFRl
eHRBbGlnbiB7IFN0YXJ0VGV4dEFsaWduLCBFbmRUZXh0QWxpZ24sIExlZnRUZXh0QWxpZ24sIENl
bnRlclRleHRBbGlnbiwgUmlnaHRUZXh0QWxpZ24gfTsKKworZW51bSBSZW5kZXJpbmdNb2RlIHsK
KyAgICBVbmFjY2VsZXJhdGVkLAorICAgIFVuYWNjZWxlcmF0ZWROb25QbGF0Zm9ybUJ1ZmZlciwg
Ly8gVXNlIHBsYWluIG1lbW9yeSBhbGxvY2F0aW9uIHJhdGhlciB0aGFuIHBsYXRmb3JtIEFQSSB0
byBhbGxvY2F0ZSBiYWNraW5nIHN0b3JlLgorICAgIEFjY2VsZXJhdGVkCit9OworCitTdHJpbmcg
Y29tcG9zaXRlT3BlcmF0b3JOYW1lKENvbXBvc2l0ZU9wZXJhdG9yLCBCbGVuZE1vZGUpOworYm9v
bCBwYXJzZUJsZW5kTW9kZShjb25zdCBTdHJpbmcmLCBCbGVuZE1vZGUmKTsKK2Jvb2wgcGFyc2VD
b21wb3NpdGVBbmRCbGVuZE9wZXJhdG9yKGNvbnN0IFN0cmluZyYsIENvbXBvc2l0ZU9wZXJhdG9y
JiwgQmxlbmRNb2RlJik7CisKK1N0cmluZyBsaW5lQ2FwTmFtZShMaW5lQ2FwKTsKK2Jvb2wgcGFy
c2VMaW5lQ2FwKGNvbnN0IFN0cmluZyYsIExpbmVDYXAmKTsKKworU3RyaW5nIGxpbmVKb2luTmFt
ZShMaW5lSm9pbik7Citib29sIHBhcnNlTGluZUpvaW4oY29uc3QgU3RyaW5nJiwgTGluZUpvaW4m
KTsKKworU3RyaW5nIHRleHRBbGlnbk5hbWUoVGV4dEFsaWduKTsKK2Jvb2wgcGFyc2VUZXh0QWxp
Z24oY29uc3QgU3RyaW5nJiwgVGV4dEFsaWduJik7CisKK1N0cmluZyB0ZXh0QmFzZWxpbmVOYW1l
KFRleHRCYXNlbGluZSk7Citib29sIHBhcnNlVGV4dEJhc2VsaW5lKGNvbnN0IFN0cmluZyYsIFRl
eHRCYXNlbGluZSYpOworCitjbGFzcyBUZXh0U3RyZWFtOworV0VCQ09SRV9FWFBPUlQgVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgQmxlbmRNb2RlKTsKK1dFQkNPUkVfRVhQT1JU
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIFdpbmRSdWxlKTsKK1dFQkNPUkVf
RVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIExpbmVDYXApOworV0VC
Q09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgTGluZUpvaW4p
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTBiZGQ4MmQ4ZTgzM2VlNGZmM2M3MWQ0OGIyZjYyMWEzYWQ5YjY2MAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FB
bmltYXRpb24uY3BwCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlBsYXRm
b3JtQ0FBbmltYXRpb24uaCIKKworI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRpb25UeXBlIHR5cGUpCit7CisgICAgc3dpdGNoICh0eXBl
KSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYXNpYzogdHMgPDwgImJhc2ljIjsg
YnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpLZXlmcmFtZTogdHMgPDwgImtl
eWZyYW1lIjsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYg
b3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUFuaW1hdGlvbjo6RmlsbE1vZGVU
eXBlIGZpbGxNb2RlKQoreworICAgIHN3aXRjaCAoZmlsbE1vZGUpIHsKKyAgICBjYXNlIFBsYXRm
b3JtQ0FBbmltYXRpb246Ok5vRmlsbE1vZGU6IHRzIDw8ICJub25lIjsgYnJlYWs7CisgICAgY2Fz
ZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpGb3J3YXJkczogdHMgPDwgImZvcndhcmRzIjsgYnJlYWs7
CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpCYWNrd2FyZHM6IHRzIDw8ICJiYWNrd2Fy
ZHMiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OkJvdGg6IHRzIDw8ICJi
b3RoIjsgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlv
blR5cGUgdmFsdWVGdW5jdGlvblR5cGUpCit7CisgICAgc3dpdGNoICh2YWx1ZUZ1bmN0aW9uVHlw
ZSkgeworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1bmN0aW9uOiB0cyA8
PCAibm9uZSI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Um90YXRlWDog
dHMgPDwgInJvdGF0ZVgiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlJv
dGF0ZVk6IHRzIDw8ICJyb3RhdGVZIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpSb3RhdGVaOiB0cyA8PCAicm90YXRlWCI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6U2NhbGVYOiB0cyA8PCAic2NhbGVYIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVk6IHRzIDw8ICJzY2FsZVkiOyBicmVhazsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjogdHMgPDwgInNjYWxlWCI7IGJyZWFrOworICAg
IGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU6IHRzIDw8ICJzY2FsZSI7IGJyZWFrOwor
ICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWDogdHMgPDwgInRyYW5zbGF0
ZVgiOyBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRyYW5zbGF0ZVk6IHRz
IDw8ICJ0cmFuc2xhdGVZIjsgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpU
cmFuc2xhdGVaOiB0cyA8PCAidHJhbnNsYXRlWiI7IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1D
QUFuaW1hdGlvbjo6VHJhbnNsYXRlOiB0cyA8PCAidHJhbnNsYXRlIjsgYnJlYWs7CisgICAgfQor
ICAgIHJldHVybiB0czsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUFuaW1hdGlv
bi5oCmluZGV4IGVhZGQxMTdmNjIxOTk0MWEzYTg4OWYwNGE5MGQ0MjM1YjBlMzE4ZjIuLjYwZmI4
NmE4M2Q4OGRjNjZjYmE0MTI4NWYyOTk5MzVjOWJhYjE2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FBbmltYXRpb24uaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBQW5pbWF0aW9uLmgK
QEAgLTEzNiw2ICsxMzYsMTAgQEAgcHJpdmF0ZToKICAgICBBbmltYXRpb25UeXBlIG1fdHlwZTsK
IH07CiAKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYs
IFBsYXRmb3JtQ0FBbmltYXRpb246OkFuaW1hdGlvblR5cGUpOworV0VCQ09SRV9FWFBPUlQgVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiwgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rmls
bE1vZGVUeXBlKTsKK1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0
cmVhbSYsIFBsYXRmb3JtQ0FBbmltYXRpb246OlZhbHVlRnVuY3Rpb25UeXBlKTsKKwogfSAvLyBu
YW1lc3BhY2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQ0FBTklN
QVRJT04oVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuY3BwCmluZGV4IGZk
NjQ0MzU1MzhjNGYyOWFlMmE2MjY0MTM4ZDFmMWY1MGM1YWVmZmQuLmIzOGQ3NWFlYTAxOTBlOTk5
YzU3NTg2YjkwNDE3Yzg4ZDE1YjIzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FMYXllci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxheWVyLmNwcApAQCAtMjQsOCArMjQsMTAg
QEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiTGF5ZXJQb29sLmgiCiAj
aW5jbHVkZSAiUGxhdGZvcm1DQUxheWVyLmgiCisKKyNpbmNsdWRlICJMYXllclBvb2wuaCIKKyNp
bmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgogCiAj
aWYgVVNFKENBKQpAQCAtMTMzLDYgKzEzNSw3OSBAQCBMYXllclBvb2wmIFBsYXRmb3JtQ0FMYXll
cjo6bGF5ZXJQb29sKCkKICAgICByZXR1cm4gKnNoYXJlZFBvb2w7CiB9CiAKK1RleHRTdHJlYW0m
IG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlIGxh
eWVyVHlwZSkKK3sKKyAgICBzd2l0Y2ggKGxheWVyVHlwZSkgeworICAgIGNhc2UgUGxhdGZvcm1D
QUxheWVyOjpMYXllclR5cGVMYXllcjoKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJU
eXBlV2ViTGF5ZXI6CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNpbXBsZUxh
eWVyOgorICAgICAgICB0cyA8PCAibGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVHJhbnNmb3JtTGF5ZXI6CisgICAgICAgIHRzIDw8ICJ0
cmFuc2Zvcm0tbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXll
cjo6TGF5ZXJUeXBlV2ViVGlsZWRMYXllcjoKKyAgICAgICAgdHMgPDwgInRpbGVkLWxheWVyIjsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVk
QmFja2luZ0xheWVyOgorICAgICAgICB0cyA8PCAidGlsZWQtYmFja2luZy1sYXllciI7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVQYWdlVGlsZWRC
YWNraW5nTGF5ZXI6CisgICAgICAgIHRzIDw8ICJwYWdlLXRpbGVkLWJhY2tpbmctbGF5ZXIiOwor
ICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlVGlsZWRC
YWNraW5nVGlsZUxheWVyOgorICAgICAgICB0cyA8PCAidGlsZWQtYmFja2luZy10aWxlIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVJvb3RMYXll
cjoKKyAgICAgICAgdHMgPDwgInJvb3QtbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlQmFja2Ryb3BMYXllcjoKKyAgICAgICAgdHMgPDwg
ImJhY2tkcm9wLWxheWVyIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5
ZXI6OkxheWVyVHlwZUFWUGxheWVyTGF5ZXI6CisgICAgICAgIHRzIDw8ICJhdi1wbGF5ZXItbGF5
ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBl
V2ViR0xMYXllcjoKKyAgICAgICAgdHMgPDwgIndlYi1nbC1sYXllciI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVTaGFwZUxheWVyOgorICAgICAg
ICB0cyA8PCAic2hhcGUtbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3Jt
Q0FMYXllcjo6TGF5ZXJUeXBlU2Nyb2xsaW5nTGF5ZXI6CisgICAgICAgIHRzIDw8ICJzY3JvbGxp
bmctbGF5ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlQ3VzdG9tOgorICAgICAgICB0cyA8PCAiY3VzdG9tLWxheWVyIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUxpZ2h0U3lzdGVtQmFja2Ry
b3BMYXllcjoKKyAgICAgICAgdHMgPDwgImxpZ2h0LXN5c3RlbS1iYWNrZHJvcC1sYXllciI7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVEYXJrU3lz
dGVtQmFja2Ryb3BMYXllcjoKKyAgICAgICAgdHMgPDwgImRhcmstc3lzdGVtLWJhY2tkcm9wLWxh
eWVyIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4dFN0
cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUGxhdGZvcm1DQUxheWVyOjpGaWx0ZXJU
eXBlIGZpbHRlclR5cGUpCit7CisgICAgc3dpdGNoIChmaWx0ZXJUeXBlKSB7CisgICAgY2FzZSBQ
bGF0Zm9ybUNBTGF5ZXI6OkxpbmVhcjoKKyAgICAgICAgdHMgPDwgImxpbmVhciI7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpOZWFyZXN0OgorICAgICAgICB0cyA8
PCAibmVhcmVzdCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpU
cmlsaW5lYXI6CisgICAgICAgIHRzIDw8ICJ0cmlsaW5lYXIiOworICAgICAgICBicmVhazsKKyAg
ICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7
CisgICAgfQorICAgIHJldHVybiB0czsKK30KKwogfQogCiAjZW5kaWYgLy8gVVNFKENBKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5
ZXIuaAppbmRleCAxMGExMDM3ZmJlZWI4Yjc2NmJmZTQ5YjhlMWMzODJlMjRlNzk0MmE1Li44YWI3
NjBlYmRhZDNhZTg5ZTM4NjFjMjdjZDhkNTE0NWNiZGQ0ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9ybUNBTGF5ZXIuaApAQCAtMjgw
LDYgKzI4MCw5IEBAIHByb3RlY3RlZDoKICAgICBQbGF0Zm9ybUNBTGF5ZXJDbGllbnQqIG1fb3du
ZXI7CiB9OwogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJl
YW0mLCBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZSk7CitXRUJDT1JFX0VYUE9SVCBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUp
OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNkZWZpbmUgU1BFQ0lBTElaRV9UWVBFX1RS
QUlUU19QTEFURk9STV9DQUxBWUVSKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5jcHAKaW5kZXggMWEyMTBjNTZjZWQ1ZTViODkyY2M0OTJlZThiYjk5MTY2
ZmY4NWYzMC4uY2M4NGQ0NDM0YWVhOGZhODE1YzUzYTg4N2ZhNDk3NzEyYTI3ZTBiZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkFuaW1hdGlv
blV0aWxpdGllcy5oIgogI2luY2x1ZGUgIkNhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlLmgiCiAj
aW5jbHVkZSAiRmlsdGVyRWZmZWN0LmgiCisjaW5jbHVkZSAiVGV4dFN0cmVhbS5oIgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAgICAgCkBAIC0xOTgsNCArMTk5LDc2IEBAIFBhc3NSZWZQdHI8Rmls
dGVyT3BlcmF0aW9uPiBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0
ZXJPcGVyYXRpCiAgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21Db2xvciwgbV9jb2xvciwgcHJv
Z3Jlc3MpKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29u
c3QgRmlsdGVyT3BlcmF0aW9uJiBmaWx0ZXIpCit7CisgICAgc3dpdGNoIChmaWx0ZXIudHlwZSgp
KSB7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlJFRkVSRU5DRToKKyAgICAgICAgdHMgPDwg
InJlZmVyZW5jZSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpH
UkFZU0NBTEU6IHsKKyAgICAgICAgY29uc3QgYXV0byYgY29sb3JNYXRyaXhGaWx0ZXIgPSBkb3du
Y2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0
cyA8PCAiZ3JheXNjYWxlKCIgPDwgY29sb3JNYXRyaXhGaWx0ZXIuYW1vdW50KCkgPDwgIikiOwor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7
CisgICAgICAgIGNvbnN0IGF1dG8mIGNvbG9yTWF0cml4RmlsdGVyID0gZG93bmNhc3Q8QmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgInNlcGlh
KCIgPDwgY29sb3JNYXRyaXhGaWx0ZXIuYW1vdW50KCkgPDwgIikiOworICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFOiB7CisgICAgICAgIGNv
bnN0IGF1dG8mIGNvbG9yTWF0cml4RmlsdGVyID0gZG93bmNhc3Q8QmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgInNhdHVyYXRlKCIgPDwgY29s
b3JNYXRyaXhGaWx0ZXIuYW1vdW50KCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKKyAgICAgICAgY29uc3QgYXV0
byYgY29sb3JNYXRyaXhGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0cyA8PCAiaHVlLXJvdGF0ZSgiIDw8IGNvbG9yTWF0
cml4RmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNh
c2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKKyAgICAgICAgY29uc3QgYXV0byYgY29tcG9u
ZW50VHJhbnNmZXJGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0cyA8PCAiaW52ZXJ0KCIgPDwgY29tcG9uZW50
VHJhbnNmZXJGaWx0ZXIuYW1vdW50KCkgPDwgIikiOworICAgICAgICBicmVhazsKKyAgICB9Cisg
ICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKKyAgICAgICAgY29uc3QgYXV0byYg
Y29tcG9uZW50VHJhbnNmZXJGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVy
RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0cyA8PCAib3BhY2l0eSgiIDw8IGNv
bXBvbmVudFRyYW5zZmVyRmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7CisgICAgICAgIGNv
bnN0IGF1dG8mIGNvbXBvbmVudFRyYW5zZmVyRmlsdGVyID0gZG93bmNhc3Q8QmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgImJyaWdo
dG5lc3MoIiA8PCBjb21wb25lbnRUcmFuc2ZlckZpbHRlci5hbW91bnQoKSA8PCAiKSI7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6IHsK
KyAgICAgICAgY29uc3QgYXV0byYgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIgPSBkb3duY2FzdDxC
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOworICAgICAgICB0
cyA8PCAiY29udHJhc3QoIiA8PCBjb21wb25lbnRUcmFuc2ZlckZpbHRlci5hbW91bnQoKSA8PCAi
KSI7CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QkxV
UjogeworICAgICAgICBjb25zdCBhdXRvJiBibHVyRmlsdGVyID0gZG93bmNhc3Q8Qmx1ckZpbHRl
ck9wZXJhdGlvbj4oZmlsdGVyKTsKKyAgICAgICAgdHMgPDwgImJsdXIoIiA8PCBibHVyRmlsdGVy
LnN0ZERldmlhdGlvbigpLnZhbHVlKCkgPDwgIikiOyAvLyBGSVhNRTogc2hvdWxkIGNhbGwgZmxv
YXRWYWx1ZUZvckxlbmd0aCgpIGJ1dCB0aGF0J3Mgb3V0aXNkZSBvZiBwbGF0Zm9ybS8uCisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1c6
IHsKKyAgICAgICAgY29uc3QgYXV0byYgZHJvcFNoYWRvd0ZpbHRlciA9IGRvd25jYXN0PERyb3BT
aGFkb3dGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7CisgICAgICAgIHRzIDw8ICJkcm9wLXNoYWRv
dygiIDw8IGRyb3BTaGFkb3dGaWx0ZXIueCgpIDw8ICIgIiA8PCBkcm9wU2hhZG93RmlsdGVyLnko
KSA8PCAiICIgPDwgZHJvcFNoYWRvd0ZpbHRlci5sb2NhdGlvbigpIDw8ICIgIjsKKyAgICAgICAg
dHMgPDwgZHJvcFNoYWRvd0ZpbHRlci5jb2xvcigpIDw8ICIpIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoKKyAgICAgICAgdHMg
PDwgInBhc3N0aHJvdWdoIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGaWx0ZXJPcGVyYXRp
b246OkRFRkFVTFQ6IHsKKyAgICAgICAgY29uc3QgYXV0byYgZGVmYXVsdEZpbHRlciA9IGRvd25j
YXN0PERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7CisgICAgICAgIHRzIDw8ICJkZWZh
dWx0IHR5cGU9IiA8PCAoaW50KWRlZmF1bHRGaWx0ZXIucmVwcmVzZW50ZWRUeXBlKCk7CisgICAg
ICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKKyAgICAg
ICAgdHMgPDwgIm5vbmUiOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgcmV0dXJuIHRzOwor
fQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uaAppbmRleCAyMmQ4
NDBmM2Y2NzdlZTI1YjE4MDY4YzI3MmFmYWRmMDJjZTljZDgzLi5lMmVhNjM5ZjFjZGUwMDFkOTA4
YWVhODc2MDRhZjliZmE4NWVkMjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmgKQEAgLTMzNiw2ICsz
MzYsOCBAQCBwcml2YXRlOgogICAgIENvbG9yIG1fY29sb3I7CiB9OwogCitXRUJDT1JFX0VYUE9S
VCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b24mKTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZGVmaW5lIFNQRUNJQUxJWkVfVFlQ
RV9UUkFJVFNfRklMVEVST1BFUkFUSU9OKFRvVmFsdWVUeXBlTmFtZSwgcHJlZGljYXRlKSBcCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJPcGVyYXRpb25zLmNwcAppbmRleCAwOTdjZDM4OTdkOWYyZGJlZmQ5NGI1ZGIwMDIx
MWIyNmQ5OTk3NzBiLi5lMWQwYTk3OWE0ZTkxOGEyY2M3M2I2ZTUxMTAzOWRmOWJlNDAwNzEwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ck9wZXJhdGlvbnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5jcHAKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJG
RUdhdXNzaWFuQmx1ci5oIgogI2luY2x1ZGUgIkludFNpemUuaCIKICNpbmNsdWRlICJMZW5ndGhG
dW5jdGlvbnMuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtMTUxLDQgKzE1MiwxOCBAQCBib29sIEZpbHRlck9wZXJhdGlvbnM6Omhhc0ZpbHRl
clRoYXRNb3Zlc1BpeGVscygpIGNvbnN0CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBm
aWx0ZXJzKQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsr
aSkgeworICAgICAgICBjb25zdCBhdXRvIGZpbHRlciA9IGZpbHRlcnMuYXQoaSk7CisgICAgICAg
IGlmIChmaWx0ZXIpCisgICAgICAgICAgICB0cyA8PCAqZmlsdGVyOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICB0cyA8PCAiKG51bGwpIjsKKyAgICAgICAgaWYgKGkgPCBmaWx0ZXJzLnNpemUo
KSAtIDEpCisgICAgICAgICAgICB0cyA8PCAiICI7CisgICAgfQorICAgIHJldHVybiB0czsKK30K
KwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVyYXRpb25zLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAppbmRleCA3MWQz
ODczZjc5NjYwYTU0OWRjMWRkNzkwYjgzOTI1MjM3YjU1NTVjLi5jZjJjNWI5YjYyNWNiNjY5Yzhj
NzE0ZTdkM2ZiYTdjMDgzYTFkZDExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuaApAQCAtNzQsNiAr
NzQsOCBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPj4gbV9v
cGVyYXRpb25zOwogfTsKIAorV0VCQ09SRV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpOworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBGaWx0ZXJPcGVyYXRpb25zX2gKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1BvaW50TGlnaHRTb3Vy
Y2UuY3BwCmluZGV4IGI3MTdlMjA1Njg2ZWYxMzkwY2I3MGFhOTgwMzcwNmY4YTM4OGM1ZWQuLmQ1
MGJhMDRkZDc2ZWVjYTJlMmQxZDc2MzE2ZjNkMGQzOGM1YjZhMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Qb2ludExpZ2h0
U291cmNlLmNwcApAQCAtNzEsMTIgKzcxLDYgQEAgYm9vbCBQb2ludExpZ2h0U291cmNlOjpzZXRa
KGZsb2F0IHopCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBGbG9hdFBvaW50M0QmIHApCi17Ci0gICAgdHMg
PDwgIng9IiA8PCBwLngoKSA8PCAiIHk9IiA8PCBwLnkoKSA8PCAiIHo9IiA8PCBwLnooKTsKLSAg
ICByZXR1cm4gdHM7Ci19Ci0KIFRleHRTdHJlYW0mIFBvaW50TGlnaHRTb3VyY2U6OmV4dGVybmFs
UmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgdHMgPDwgIlt0eXBl
PVBPSU5ULUxJR0hUXSAiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9TcG90TGlnaHRTb3VyY2UuY3BwCmluZGV4IGY5MzkwZWE5NzNl
YmIyMDQ5NWE5ZDM2MWYyMGFhMTk1N2YyMmRkZGMuLjMwYzRmNjFjNjQ0ODZjNGRiZWYwZmZjZmEy
OTQwYzJiZGVmZTU4MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvU3BvdExpZ2h0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nwb3RMaWdodFNvdXJjZS5jcHAKQEAgLTE3NSwxMiArMTc1
LDYgQEAgYm9vbCBTcG90TGlnaHRTb3VyY2U6OnNldExpbWl0aW5nQ29uZUFuZ2xlKGZsb2F0IGxp
bWl0aW5nQ29uZUFuZ2xlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgRmxvYXRQb2ludDNEJiBwKQotewot
ICAgIHRzIDw8ICJ4PSIgPDwgcC54KCkgPDwgIiB5PSIgPDwgcC55KCkgPDwgIiB6PSIgPDwgcC56
KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCiBUZXh0U3RyZWFtJiBTcG90TGlnaHRTb3VyY2U6OmV4
dGVybmFsUmVwcmVzZW50YXRpb24oVGV4dFN0cmVhbSYgdHMpIGNvbnN0CiB7CiAgICAgdHMgPDwg
Ilt0eXBlPVNQT1QtTElHSFRdICI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5zZm9ybS5jcHAKaW5kZXgg
NTM2NDdkNDM0OGU2NjU0ZTAyYTE2ZTc3MzFmNjZlMjQxMjYxNGFhYy4uYWQ2Y2RlYjk4MTIzNTNm
NzFkNTcyYzk1ZTI0YTUwODBiYjg5YTc4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3JtLmNw
cApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgi
CiAjaW5jbHVkZSAiVHJhbnNmb3JtYXRpb25NYXRyaXguaCIKIAogI2luY2x1ZGUgPHd0Zi9NYXRo
RXh0cmFzLmg+CkBAIC00MjUsNCArNDI2LDIwIEBAIHZvaWQgQWZmaW5lVHJhbnNmb3JtOjpyZWNv
bXBvc2UoY29uc3QgRGVjb21wb3NlZFR5cGUmIGRlY29tcCkKICAgICB0aGlzLT5zY2FsZShkZWNv
bXAuc2NhbGVYLCBkZWNvbXAuc2NhbGVZKTsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChU
ZXh0U3RyZWFtJiB0cywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0pCit7CisgICAg
aWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCisgICAgICAgIHRzIDw8ICJpZGVudGl0eSI7Cisg
ICAgZWxzZQorICAgICAgICB0cyA8PCAie209KCgiCisgICAgICAgIDw8IHRyYW5zZm9ybS5hKCkg
PDwgIiwiIDw8IHRyYW5zZm9ybS5iKCkKKyAgICAgICAgPDwgIikoIgorICAgICAgICA8PCB0cmFu
c2Zvcm0uYygpIDw8ICIsIiA8PCB0cmFuc2Zvcm0uZCgpCisgICAgICAgIDw8ICIpKSB0PSgiCisg
ICAgICAgIDw8IHRyYW5zZm9ybS5lKCkgPDwgIiwiIDw8IHRyYW5zZm9ybS5mKCkKKyAgICAgICAg
PDwgIil9IjsKKworICAgIHJldHVybiB0czsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMvQWZmaW5lVHJhbnNmb3Jt
LmgKaW5kZXggZjNkZDQ3OTkxODVmYjQ0ZTBiMGYyOTAyZDg2Zjg4ODQ2MDUwMGIwOC4uZmFiNTYy
ZDkyZmIzMDE0ZGRhYTQwNDA1OTliZTg2ZDI3Y2Q1ODc4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9BZmZpbmVUcmFuc2Zvcm0uaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL0FmZmluZVRyYW5z
Zm9ybS5oCkBAIC00Niw2ICs0Niw3IEBAIGNsYXNzIEZsb2F0U2l6ZTsKIGNsYXNzIEludFBvaW50
OwogY2xhc3MgSW50U2l6ZTsKIGNsYXNzIEludFJlY3Q7CitjbGFzcyBUZXh0U3RyZWFtOwogY2xh
c3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CiAKIGNsYXNzIEFmZmluZVRyYW5zZm9ybSB7CkBAIC0x
OTMsNiArMTk0LDggQEAgcHJpdmF0ZToKIAogQWZmaW5lVHJhbnNmb3JtIG1ha2VNYXBCZXR3ZWVu
UmVjdHMoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2UsIGNvbnN0IEZsb2F0UmVjdCYgZGVzdCk7CiAK
K1dFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYpOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAppbmRleCAwNWIwMzg4NzBhNjk3NDY2Mzc1NGNmZTAzYWFlYjdhNGYx
NTZmMWJkLi5jY2Q2ZDI0N2FmYmZkYzViYzdmNGEwMTNjZWU3MTk4NmU1OTU4ZjNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9y
bWF0aW9uTWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmNwcApAQCAtMzIsNyArMzIsNyBAQAogI2lu
Y2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkludFJlY3QuaCIKICNpbmNsdWRlICJMYXlv
dXRSZWN0LmgiCi0KKyNpbmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvTWF0aEV4dHJhcy5oPgogCkBAIC0xNzQyLDQgKzE3NDIs
MjAgQEAgYm9vbCBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6aXNCYWNrRmFjZVZpc2libGUoKSBjb25z
dAogICAgIHJldHVybiB6Q29tcG9uZW50T2ZUcmFuc2Zvcm1lZE5vcm1hbCA8IDA7CiB9CiAKK1Rl
eHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pCit7CisgICAgdHMgPDwgIlxuIjsKKyAgICB0cy5pbmNyZWFzZUlu
ZGVudCgpOworICAgIHRzLndyaXRlSW5kZW50KCk7CisgICAgdHMgPDwgIlsiIDw8IHRyYW5zZm9y
bS5tMTEoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0xMigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTEz
KCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMTQoKSA8PCAiXVxuIjsKKyAgICB0cy53cml0ZUluZGVu
dCgpOworICAgIHRzIDw8ICJbIiA8PCB0cmFuc2Zvcm0ubTIxKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tMjIoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0yMygpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTI0
KCkgPDwgIl1cbiI7CisgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAgICB0cyA8PCAiWyIgPDwgdHJh
bnNmb3JtLm0zMSgpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTMyKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tMzMoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0zNCgpIDw8ICJdXG4iOworICAgIHRzLndyaXRl
SW5kZW50KCk7CisgICAgdHMgPDwgIlsiIDw8IHRyYW5zZm9ybS5tNDEoKSA8PCAiICIgPDwgdHJh
bnNmb3JtLm00MigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTQzKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tNDQoKSA8PCAiXSI7CisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKKyAgICByZXR1cm4gdHM7
Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Ry
YW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RyYW5zZm9ybXMvVHJhbnNmb3JtYXRpb25NYXRyaXguaAppbmRleCAxOWQwYWRk
OWFiODNkMjUyZDQ5OGE1Yzc2MWE4ODc4OTM3MmRjNDE1Li40NDRhMjFjYzc3YzA4MzU4YzMxMTk3
MDUzZDllOTY5MmM3N2ViYzZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90cmFuc2Zvcm1zL1RyYW5zZm9ybWF0aW9uTWF0cml4LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3Jtcy9UcmFuc2Zvcm1hdGlvbk1hdHJpeC5o
CkBAIC01Niw2ICs1Niw3IEBAIGNsYXNzIEludFJlY3Q7CiBjbGFzcyBMYXlvdXRSZWN0OwogY2xh
c3MgRmxvYXRSZWN0OwogY2xhc3MgRmxvYXRRdWFkOworY2xhc3MgVGV4dFN0cmVhbTsKIAogI2lm
IENQVShYODZfNjQpCiAjZGVmaW5lIFRSQU5TRk9STUFUSU9OX01BVFJJWF9VU0VfWDg2XzY0X1NT
RTIKQEAgLTQxMyw2ICs0MTQsOCBAQCBwcml2YXRlOgogICAgIE1hdHJpeDQgbV9tYXRyaXg7CiB9
OwogCitXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBUcmFuc2Zvcm1hdGlvbk1hdHJpeF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vdGV4dC9UZXh0U3RyZWFtLmNwcAppbmRleCBjZDI0ZGJjMGY4YmQ1Y2FjNzMzOTBmMTgxZWY3
YzY2MDE0MjJiNzhmLi5lNWU0YzU4ODQ3M2U0MTAwMzcyNjVjY2UxZmVhOWY1ZjY1ZTgxYzQ2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dFN0cmVhbS5jcHAKQEAgLTEzOSw2
ICsxMzksMzQgQEAgU3RyaW5nIFRleHRTdHJlYW06OnJlbGVhc2UoKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKK3ZvaWQgVGV4dFN0cmVhbTo6c3RhcnRHcm91cCgpCit7CisgICAgVGV4dFN0cmVh
bSYgdHMgPSAqdGhpczsKKyAgICB0cyA8PCAiXG4iOworICAgIHRzLndyaXRlSW5kZW50KCk7Cisg
ICAgdHMgPDwgIigiOworICAgIHRzLmluY3JlYXNlSW5kZW50KCk7Cit9CisKK3ZvaWQgVGV4dFN0
cmVhbTo6ZW5kR3JvdXAoKQoreworICAgIFRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisgICAgdHMg
PDwgIikiOworICAgIHRzLmRlY3JlYXNlSW5kZW50KCk7Cit9CisKK3ZvaWQgVGV4dFN0cmVhbTo6
bmV4dExpbmUoKQoreworICAgIFRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisgICAgdHMgPDwgIlxu
IjsKKyAgICB0cy53cml0ZUluZGVudCgpOworfQorCit2b2lkIFRleHRTdHJlYW06OndyaXRlSW5k
ZW50KCkKK3sKKyAgICBXZWJDb3JlOjp3cml0ZUluZGVudCgqdGhpcywgbV9pbmRlbnQpOworfQor
CiB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQogewogICAgIGZv
ciAoaW50IGkgPSAwOyBpICE9IGluZGVudDsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9UZXh0U3RyZWFtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L1RleHRTdHJlYW0uaAppbmRleCBhNTM0NTU2Nzc0NWUyM2Y5NTE4ZDA5YWY4ZTE0ZjhkZWU5
ZDc5NGJiLi4yMjAyZmQzZmI4MDRkMmJkZDhiOGEzNTYzMjE5NTQyZWM1NzY5NjQ0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRTdHJlYW0uaApAQCAtNDcsNDAgKzQ3LDc1IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGJvb2wp
OwogICAgIFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoaW50KTsKICAgICBX
RUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KHVuc2lnbmVkKTsKLSAgICBUZXh0
U3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcpOwotICAgIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwodW5z
aWduZWQgbG9uZyk7Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChsb25nIGxvbmcpOworICAg
IFdFQkNPUkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwobG9uZyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PCh1bnNpZ25lZCBsb25nKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGxvbmcgbG9uZyk7CisgICAgV0VCQ09S
RV9FWFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChMYXlvdXRVbml0KTsKKwogICAgIFdFQkNP
UkVfRVhQT1JUIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwodW5zaWduZWQgbG9uZyBsb25nKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGZsb2F0KTsKICAgICBXRUJD
T1JFX0VYUE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGRvdWJsZSk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBjaGFyKik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCB2b2lkKik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBTdHJpbmcmKTsKLSAgICBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZvcm1hdE51bWJlclJlc3BlY3RpbmdJbnRlZ2VycyYpOwot
Ci0gICAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChMYXlvdXRVbml0KTsKKyAgICBXRUJDT1JFX0VY
UE9SVCBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZvcm1hdE51bWJlclJlc3BlY3RpbmdJ
bnRlZ2VycyYpOwogCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgSXRlbT4KLSAgICBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxJdGVtPiYgdmVjdG9yKQorICAgIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CisgICAgdm9pZCBkdW1wUHJvcGVydHkoY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBUJiB2YWx1ZSkKICAgICB7Ci0gICAgICAgICp0aGlzIDw8ICJbIjsKLQotICAgICAgICB1bnNp
Z25lZCBzaXplID0gdmVjdG9yLnNpemUoKTsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewotICAgICAgICAgICAgKnRoaXMgPDwgdmVjdG9yW2ldOwotICAgICAg
ICAgICAgaWYgKGkgPCBzaXplIC0gMSkKLSAgICAgICAgICAgICAgICAqdGhpcyA8PCAiLCAiOwot
ICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuICp0aGlzIDw8ICJdIjsKKyAgICAgICAgVGV4dFN0
cmVhbSYgdHMgPSAqdGhpczsKKyAgICAgICAgdHMuc3RhcnRHcm91cCgpOworICAgICAgICB0cyA8
PCBuYW1lIDw8ICIgIiA8PCB2YWx1ZTsKKyAgICAgICAgdHMuZW5kR3JvdXAoKTsKICAgICB9CiAK
ICAgICBXRUJDT1JFX0VYUE9SVCBTdHJpbmcgcmVsZWFzZSgpOworICAgIAorICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgc3RhcnRHcm91cCgpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZW5kR3Jv
dXAoKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG5leHRMaW5lKCk7IC8vIE91dHB1dCBuZXds
aW5lIGFuZCBpbmRlbnQuCisKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGluY3JlYXNlSW5kZW50
KCkgeyArK21faW5kZW50OyB9CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWNyZWFzZUluZGVu
dCgpIHsgLS1tX2luZGVudDsgQVNTRVJUKG1faW5kZW50ID49IDApOyB9CisKKyAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHdyaXRlSW5kZW50KCk7CisKKyAgICBjbGFzcyBHcm91cFNjb3BlIHsKKyAg
ICBwdWJsaWM6CisgICAgICAgIEdyb3VwU2NvcGUoVGV4dFN0cmVhbSYgdHMpCisgICAgICAgICAg
ICA6IG1fc3RyZWFtKHRzKQorICAgICAgICB7CisgICAgICAgICAgICBtX3N0cmVhbS5zdGFydEdy
b3VwKCk7CisgICAgICAgIH0KKyAgICAgICAgfkdyb3VwU2NvcGUoKQorICAgICAgICB7CisgICAg
ICAgICAgICBtX3N0cmVhbS5lbmRHcm91cCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgor
ICAgICAgICBUZXh0U3RyZWFtJiBtX3N0cmVhbTsKKyAgICB9OwogCiBwcml2YXRlOgogICAgIFN0
cmluZ0J1aWxkZXIgbV90ZXh0OworICAgIGludCBtX2luZGVudCB7IDAgfTsKIH07CiAKK3RlbXBs
YXRlPHR5cGVuYW1lIEl0ZW0+CitUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRz
LCBjb25zdCBWZWN0b3I8SXRlbT4mIHZlY3RvcikKK3sKKyAgICB0cyA8PCAiWyI7CisKKyAgICB1
bnNpZ25lZCBzaXplID0gdmVjdG9yLnNpemUoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc2l6ZTsgKytpKSB7CisgICAgICAgIHRzIDw8IHZlY3RvcltpXTsKKyAgICAgICAgaWYgKGkg
PCBzaXplIC0gMSkKKyAgICAgICAgICAgIHRzIDw8ICIsICI7CisgICAgfQorCisgICAgcmV0dXJu
IHRzIDw8ICJdIjsKK30KKwogdm9pZCB3cml0ZUluZGVudChUZXh0U3RyZWFtJiwgaW50IGluZGVu
dCk7CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clRyZWVBc1RleHQuY3BwCmluZGV4IDFjYjY5NTc0NjZiNTIwZjNlMDQyNmM0YjIyMGE4MTc3MDY1
MjRmYmIuLmI2ZGVlMjYxYTYxZDlmNWQwZGNiYTAwYmZlYzc4MGUzMGU2ZjBmYTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNw
cApAQCAtMTE4LDM2ICsxMTgsNiBAQCBzdGF0aWMgdm9pZCB3cml0ZUlmTm90RGVmYXVsdChUZXh0
U3RyZWFtJiB0cywgY29uc3QgY2hhciogbmFtZSwgVmFsdWVUeXBlIHZhbHVlLAogICAgICAgICB3
cml0ZU5hbWVWYWx1ZVBhaXIodHMsIG5hbWUsIHZhbHVlKTsKIH0KIAotVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0p
Ci17Ci0gICAgaWYgKHRyYW5zZm9ybS5pc0lkZW50aXR5KCkpCi0gICAgICAgIHRzIDw8ICJpZGVu
dGl0eSI7Ci0gICAgZWxzZQotICAgICAgICB0cyA8PCAie209KCgiCi0gICAgICAgICAgIDw8IHRy
YW5zZm9ybS5hKCkgPDwgIiwiIDw8IHRyYW5zZm9ybS5iKCkKLSAgICAgICAgICAgPDwgIikoIgot
ICAgICAgICAgICA8PCB0cmFuc2Zvcm0uYygpIDw8ICIsIiA8PCB0cmFuc2Zvcm0uZCgpCi0gICAg
ICAgICAgIDw8ICIpKSB0PSgiCi0gICAgICAgICAgIDw8IHRyYW5zZm9ybS5lKCkgPDwgIiwiIDw8
IHRyYW5zZm9ybS5mKCkKLSAgICAgICAgICAgPDwgIil9IjsKLQotICAgIHJldHVybiB0czsKLX0K
LQotc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFdp
bmRSdWxlIHJ1bGUpCi17Ci0gICAgc3dpdGNoIChydWxlKSB7Ci0gICAgY2FzZSBSVUxFX05PTlpF
Uk86Ci0gICAgICAgIHRzIDw8ICJOT04tWkVSTyI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2Ug
UlVMRV9FVkVOT0REOgotICAgICAgICB0cyA8PCAiRVZFTi1PREQiOwotICAgICAgICBicmVhazsK
LSAgICB9Ci0KLSAgICByZXR1cm4gdHM7Ci19Ci0KIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRv
cjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlJiB1bml0
VHlwZSkKIHsKICAgICB0cyA8PCBTVkdQcm9wZXJ0eVRyYWl0czxTVkdVbml0VHlwZXM6OlNWR1Vu
aXRUeXBlPjo6dG9TdHJpbmcodW5pdFR5cGUpOwpAQCAtMTYwLDExICsxMzAsNiBAQCBzdGF0aWMg
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgU1ZHTWFya2VyVW5p
dHNUeXBlJiBtYXJrZXJVbgogICAgIHJldHVybiB0czsKIH0KIAotVGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgQ29sb3ImIGMpCi17Ci0gICAgcmV0dXJuIHRzIDw8
IGMubmFtZUZvclJlbmRlclRyZWVBc1RleHQoKTsKLX0KLQogLy8gRklYTUU6IE1heWJlIHRoaXMg
c2hvdWxkIGJlIGluIEtDYW52YXNSZW5kZXJpbmdTdHlsZS5jcHAKIHN0YXRpYyBUZXh0U3RyZWFt
JiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBjb25zdCBEYXNoQXJyYXkmIGEpCiB7CkBAIC0x
NzksNDAgKzE0NCw2IEBAIHN0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0m
IHRzLCBjb25zdCBEYXNoQXJyYXkmIGEpCiAgICAgcmV0dXJuIHRzOwogfQogCi0vLyBGSVhNRTog
TWF5YmUgdGhpcyBzaG91bGQgYmUgaW4gR3JhcGhpY3NUeXBlcy5jcHAKLXN0YXRpYyBUZXh0U3Ry
ZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBMaW5lQ2FwIHN0eWxlKQotewotICAgIHN3
aXRjaCAoc3R5bGUpIHsKLSAgICBjYXNlIEJ1dHRDYXA6Ci0gICAgICAgIHRzIDw8ICJCVVRUIjsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBSb3VuZENhcDoKLSAgICAgICAgdHMgPDwgIlJPVU5E
IjsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTcXVhcmVDYXA6Ci0gICAgICAgIHRzIDw8ICJT
UVVBUkUiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi0vLyBG
SVhNRTogTWF5YmUgdGhpcyBzaG91bGQgYmUgaW4gR3JhcGhpY3NUeXBlcy5jcHAKLXN0YXRpYyBU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mIHRzLCBMaW5lSm9pbiBzdHlsZSkKLXsK
LSAgICBzd2l0Y2ggKHN0eWxlKSB7Ci0gICAgY2FzZSBNaXRlckpvaW46Ci0gICAgICAgIHRzIDw8
ICJNSVRFUiI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUm91bmRKb2luOgotICAgICAgICB0
cyA8PCAiUk9VTkQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEJldmVsSm9pbjoKLSAgICAg
ICAgdHMgPDwgIkJFVkVMIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsK
LX0KLQogc3RhdGljIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIGNvbnN0
IFNWR1NwcmVhZE1ldGhvZFR5cGUmIHR5cGUpCiB7CiAgICAgdHMgPDwgU1ZHUHJvcGVydHlUcmFp
dHM8U1ZHU3ByZWFkTWV0aG9kVHlwZT46OnRvU3RyaW5nKHR5cGUpLnVwcGVyKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oCmluZGV4
IGViYzM5MzJmNDlkMjJlODY5ZDYxODk5MmNiOThmZDQwYzA3ZmQ3MjIuLjVmMDVkYWMxYmE5ZmMz
Zjc3M2JlNGQyY2ViOGMyODY5ZjIwMDY3NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5oCkBAIC01OCwxMSArNTgsNiBAQCB2b2lk
IHdyaXRlU1ZHSW5saW5lVGV4dChUZXh0U3RyZWFtJiwgY29uc3QgUmVuZGVyU1ZHSW5saW5lVGV4
dCYsIGludCBpbmRlbnQpOwogdm9pZCB3cml0ZVNWR1RleHQoVGV4dFN0cmVhbSYsIGNvbnN0IFJl
bmRlclNWR1RleHQmLCBpbnQgaW5kZW50KTsKIHZvaWQgd3JpdGVSZXNvdXJjZXMoVGV4dFN0cmVh
bSYsIGNvbnN0IFJlbmRlck9iamVjdCYsIGludCBpbmRlbnQpOwogCi0vLyBoZWxwZXIgb3BlcmF0
b3JzIGRlZmluZWQgdXNlZCBpbiB2YXJpb3VzIGNsYXNzZXMgdG8gZHVtcCB0aGUgcmVuZGVyIHRy
ZWUuCi1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBBZmZpbmVUcmFu
c2Zvcm0mKTsKLVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYsIGNvbnN0IENvbG9y
Jik7Ci1UZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFRleHRTdHJlYW0mLCBjb25zdCBGbG9hdFJlY3Qm
KTsKLQogLy8gaGVscGVyIG9wZXJhdG9ycyBzcGVjaWZpYyB0byBkdW1waW5nIHRoZSByZW5kZXIg
dHJlZS4gdGhlc2UgYXJlIHVzZWQgaW4gdmFyaW91cyBjbGFzc2VzIHRvIGR1bXAgdGhlIHJlbmRl
ciB0cmVlCiAvLyB0aGVzZSBjb3VsZCBiZSBkZWZpbmVkIGluIHNlcGFyYXRlIG5hbWVzcGFjZSB0
byBhdm9pZCBtYXRjaGluZyB0aGVzZSBnZW5lcmljIHNpZ25hdHVyZXMgdW5pbnRlbnRpb25hbGx5
LgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNj
cm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvU2hhcmVk
L1Njcm9sbGluZy9SZW1vdGVTY3JvbGxpbmdDb29yZGluYXRvclRyYW5zYWN0aW9uLmNwcAppbmRl
eCA1YWI1YzY0YTdhZDk2YWVjODk4MzQwM2I4ZjJkNTY4NDIyYzEwN2U3Li42YjE2NjkzNmExY2Jh
MjdiMjU4OGIzODE3NjlhYmQ1YmQ2M2QzMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvU2Nyb2xsaW5nL1JlbW90ZVNjcm9sbGluZ0Nvb3JkaW5hdG9yVHJhbnNhY3Rpb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9TY3JvbGxpbmcvUmVtb3RlU2Nyb2xsaW5nQ29v
cmRpbmF0b3JUcmFuc2FjdGlvbi5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAxNC0yMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDU0LDE2NiArNDU0LDQ0IEBAIGJvb2wgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVjb2RlKElQQzo6QXJndW1lbnREZWNvZGVy
JiBkZWNvZGVyCiAKICNpZiAhZGVmaW5lZChOREVCVUcpIHx8ICFMT0dfRElTQUJMRUQKIAotY2xh
c3MgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0gOiBwdWJsaWMgVGV4dFN0cmVhbSB7Ci1w
dWJsaWM6Ci0gICAgdXNpbmcgVGV4dFN0cmVhbTo6b3BlcmF0b3I8PDsKLQotICAgIFJlbW90ZVNj
cm9sbGluZ1RyZWVUZXh0U3RyZWFtKCkKLSAgICAgICAgOiBtX2luZGVudCgwKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChTY3Jv
bGxpbmdOb2RlVHlwZSk7Ci0KLSAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgb3Bl
cmF0b3I8PChjb25zdCBGaXhlZFBvc2l0aW9uVmlld3BvcnRDb25zdHJhaW50cyYpOwotICAgIFJl
bW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFN0aWNreVBvc2l0
aW9uVmlld3BvcnRDb25zdHJhaW50cyYpOwotCi0gICAgdm9pZCBkdW1wKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlVHJlZSYsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5ID0gdHJ1ZSk7Ci0KLSAgICB2
b2lkIGR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiwgYm9vbCBjaGFuZ2VkUHJvcGVydGll
c09ubHkgPSB0cnVlKTsKLSAgICB2b2lkIGR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlJiwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkgPSB0cnVlKTsKLSAgICB2b2lkIGR1
bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGUmLCBib29sIGNoYW5nZWRQ
cm9wZXJ0aWVzT25seSA9IHRydWUpOwotICAgIHZvaWQgZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0
ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZSYsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5ID0gdHJ1
ZSk7Ci0gICAgdm9pZCBkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlJiwgYm9vbCBj
aGFuZ2VkUHJvcGVydGllc09ubHkgPSB0cnVlKTsKLSAgICB2b2lkIGR1bXAoY29uc3QgU2Nyb2xs
aW5nU3RhdGVTdGlja3lOb2RlJiwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkgPSB0cnVlKTsK
LQotICAgIHZvaWQgaW5jcmVhc2VJbmRlbnQoKSB7ICsrbV9pbmRlbnQ7IH0KLSAgICB2b2lkIGRl
Y3JlYXNlSW5kZW50KCkgeyAtLW1faW5kZW50OyBBU1NFUlQobV9pbmRlbnQgPj0gMCk7IH0KLQot
ICAgIHZvaWQgd3JpdGVJbmRlbnQoKTsKLQotcHJpdmF0ZToKLSAgICB2b2lkIHJlY3Vyc2l2ZUR1
bXBOb2Rlcyhjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVz
T25seSk7Ci0KLSAgICBpbnQgbV9pbmRlbnQ7Ci19OwotCi12b2lkIFJlbW90ZVNjcm9sbGluZ1Ry
ZWVUZXh0U3RyZWFtOjp3cml0ZUluZGVudCgpCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBt
X2luZGVudDsgKytpKQotICAgICAgICAqdGhpcyA8PCAiICAiOwotfQotCi10ZW1wbGF0ZSA8Y2xh
c3MgVD4KLXN0YXRpYyB2b2lkIGR1bXBQcm9wZXJ0eShSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0
cmVhbSYgdHMsIFN0cmluZyBuYW1lLCBUIHZhbHVlKQotewotICAgIHRzIDw8ICJcbiI7Ci0gICAg
dHMuaW5jcmVhc2VJbmRlbnQoKTsKLSAgICB0cy53cml0ZUluZGVudCgpOwotICAgIHRzIDw8ICIo
IiA8PCBuYW1lIDw8ICIgIjsKLSAgICB0cyA8PCB2YWx1ZSA8PCAiKSI7Ci0gICAgdHMuZGVjcmVh
c2VJbmRlbnQoKTsKLX0KLQotUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0mIFJlbW90ZVNj
cm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KFNjcm9sbGluZ05vZGVUeXBlIG5vZGVU
eXBlKQotewotICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwot
Ci0gICAgc3dpdGNoIChub2RlVHlwZSkgewotICAgIGNhc2UgRnJhbWVTY3JvbGxpbmdOb2RlOiB0
cyA8PCAiZnJhbWUtc2Nyb2xsaW5nIjsgYnJlYWs7Ci0gICAgY2FzZSBPdmVyZmxvd1Njcm9sbGlu
Z05vZGU6IHRzIDw8ICJvdmVyZmxvdy1zY3JvbGxpbmciOyBicmVhazsKLSAgICBjYXNlIEZpeGVk
Tm9kZTogdHMgPDwgImZpeGVkIjsgYnJlYWs7Ci0gICAgY2FzZSBTdGlja3lOb2RlOiB0cyA8PCAi
c3RpY2t5IjsgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1vdGVTY3Jv
bGxpbmdUcmVlVGV4dFN0cmVhbSYgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06Om9wZXJh
dG9yPDwoY29uc3QgRml4ZWRQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmIGNvbnN0cmFpbnRz
KQotewotICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotCi0g
ICAgZHVtcFByb3BlcnR5KHRzLCAidmlld3BvcnQtcmVjdC1hdC1sYXN0LWxheW91dCIsIGNvbnN0
cmFpbnRzLnZpZXdwb3J0UmVjdEF0TGFzdExheW91dCgpKTsKLSAgICBkdW1wUHJvcGVydHkodHMs
ICJsYXllci1wb3NpdGlvbi1hdC1sYXN0LWxheW91dCIsIGNvbnN0cmFpbnRzLmxheWVyUG9zaXRp
b25BdExhc3RMYXlvdXQoKSk7Ci0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVJlbW90ZVNjcm9sbGlu
Z1RyZWVUZXh0U3RyZWFtJiBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8
PChjb25zdCBTdGlja3lQb3NpdGlvblZpZXdwb3J0Q29uc3RyYWludHMmIGNvbnN0cmFpbnRzKQor
c3RhdGljIHZvaWQgZHVtcChUZXh0U3RyZWFtJiB0cywgY29uc3QgU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKIHsKLSAgICBSZW1v
dGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLQotICAgIGR1bXBQcm9wZXJ0
eSh0cywgInN0aWNreS1wb3NpdGlvbi1hdC1sYXN0LWxheW91dCIsIGNvbnN0cmFpbnRzLnN0aWNr
eU9mZnNldEF0TGFzdExheW91dCgpKTsKLSAgICBkdW1wUHJvcGVydHkodHMsICJsYXllci1wb3Np
dGlvbi1hdC1sYXN0LWxheW91dCIsIGNvbnN0cmFpbnRzLmxheWVyUG9zaXRpb25BdExhc3RMYXlv
dXQoKSk7Ci0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLXZvaWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRl
eHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBub2RlLCBib29sIGNoYW5n
ZWRQcm9wZXJ0aWVzT25seSkKLXsKLSAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYg
dHMgPSAqdGhpczsKLQotICAgIHRzIDw8ICIobm9kZSAiIDw8IG5vZGUuc2Nyb2xsaW5nTm9kZUlE
KCk7Ci0KLSAgICBkdW1wUHJvcGVydHkodHMsICJ0eXBlIiwgbm9kZS5ub2RlVHlwZSgpKTsKLQot
ICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFByb3BlcnR5
KFNjcm9sbGluZ1N0YXRlTm9kZTo6U2Nyb2xsTGF5ZXIpKQotICAgICAgICBkdW1wUHJvcGVydHko
dHMsICJsYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4o
bm9kZS5sYXllcigpKSk7Ci0gICAgCi0gICAgc3dpdGNoIChub2RlLm5vZGVUeXBlKCkpIHsKLSAg
ICBjYXNlIEZyYW1lU2Nyb2xsaW5nTm9kZToKLSAgICAgICAgZHVtcChkb3duY2FzdDxTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZT4obm9kZSksIGNoYW5nZWRQcm9wZXJ0aWVzT25seSk7
Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgT3ZlcmZsb3dTY3JvbGxpbmdOb2RlOgotICAgICAg
ICBkdW1wKGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlT3ZlcmZsb3dTY3JvbGxpbmdOb2RlPihub2Rl
KSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBGaXhl
ZE5vZGU6Ci0gICAgICAgIGR1bXAoZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KG5v
ZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFN0
aWNreU5vZGU6Ci0gICAgICAgIGR1bXAoZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVTdGlja3lOb2Rl
Pihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
fQotICAgIAotdm9pZCBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBT
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNP
bmx5KQotewotICAgIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwot
ICAgIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hhbmdlZFBy
b3BlcnR5KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6U2Nyb2xsYWJsZUFyZWFTaXplKSkK
LSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsYWJsZS1hcmVhLXNpemUiLCBub2RlLnNj
cm9sbGFibGVBcmVhU2l6ZSgpKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGxhYmxl
LWFyZWEtc2l6ZSIsIG5vZGUuc2Nyb2xsYWJsZUFyZWFTaXplKCkpOwogCiAgICAgaWYgKCFjaGFu
Z2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlOjpUb3RhbENvbnRlbnRzU2l6ZSkpCi0gICAgICAgIGR1bXBQcm9wZXJ0
eSh0cywgInRvdGFsLWNvbnRlbnRzLXNpemUiLCBub2RlLnRvdGFsQ29udGVudHNTaXplKCkpOwor
ICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRvdGFsLWNvbnRlbnRzLXNpemUiLCBub2RlLnRvdGFs
Q29udGVudHNTaXplKCkpOwogCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9k
ZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlOjpSZWFjaGFi
bGVDb250ZW50c1NpemUpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJyZWFjaGFibGUtY29u
dGVudHMtc2l6ZSIsIG5vZGUucmVhY2hhYmxlQ29udGVudHNTaXplKCkpOworICAgICAgICB0cy5k
dW1wUHJvcGVydHkoInJlYWNoYWJsZS1jb250ZW50cy1zaXplIiwgbm9kZS5yZWFjaGFibGVDb250
ZW50c1NpemUoKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGU6OlNjcm9sbFBvc2l0
aW9uKSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsLXBvc2l0aW9uIiwgbm9kZS5z
Y3JvbGxQb3NpdGlvbigpKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGwtcG9zaXRp
b24iLCBub2RlLnNjcm9sbFBvc2l0aW9uKCkpOwogCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGll
c09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlOjpTY3JvbGxPcmlnaW4pKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJzY3JvbGwtb3Jp
Z2luIiwgbm9kZS5zY3JvbGxPcmlnaW4oKSk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgic2Ny
b2xsLW9yaWdpbiIsIG5vZGUuc2Nyb2xsT3JpZ2luKCkpOwogCiAgICAgaWYgKCFjaGFuZ2VkUHJv
cGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpSZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbikpIHsKLSAgICAgICAgZHVtcFByb3Bl
cnR5KHRzLCAicmVxdWVzdGVkLXNjcm9sbC1wb3NpdGlvbiIsIG5vZGUucmVxdWVzdGVkU2Nyb2xs
UG9zaXRpb24oKSk7Ci0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInJlcXVlc3RlZC1zY3JvbGwt
cG9zaXRpb24taXMtcHJvZ3JhbWF0aWMiLCBub2RlLnJlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVw
cmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJy
ZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uIiwgbm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbigp
KTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJyZXF1ZXN0ZWQtc2Nyb2xsLXBvc2l0aW9uLWlz
LXByb2dyYW1hdGljIiwgbm9kZS5yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9n
cmFtbWF0aWNTY3JvbGwoKSk7CiAgICAgfQogfQogICAgIAotdm9pZCBSZW1vdGVTY3JvbGxpbmdU
cmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZSYgbm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCitzdGF0aWMgdm9pZCBkdW1wKFRl
eHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZSYgbm9k
ZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCiB7Ci0gICAgUmVtb3RlU2Nyb2xsaW5nVHJl
ZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgCi0gICAgZHVtcChzdGF0aWNfY2FzdDxjb25z
dCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmPihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNP
bmx5KTsKKyAgICBkdW1wKHRzLCBzdGF0aWNfY2FzdDxjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9s
bGluZ05vZGUmPihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKICAgICAKICAgICBpZiAo
IWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZhY3RvcikpCi0gICAgICAgIGR1
bXBQcm9wZXJ0eSh0cywgImZyYW1lLXNjYWxlLWZhY3RvciIsIG5vZGUuZnJhbWVTY2FsZUZhY3Rv
cigpKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJmcmFtZS1zY2FsZS1mYWN0b3IiLCBub2Rl
LmZyYW1lU2NhbGVGYWN0b3IoKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8
fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9k
ZTo6Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24pKSB7Ci0gICAgICAgIHRzIDw8ICJcbiI7Ci0gICAg
ICAgIHRzLmluY3JlYXNlSW5kZW50KCk7Ci0gICAgICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAg
ICAgIHRzIDw8ICIobm9uLWZhc3Qtc2Nyb2xsYWJsZS1yZWdpb24iOwotICAgICAgICB0cy5pbmNy
ZWFzZUluZGVudCgpOworICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsK
KyAgICAgICAgdHMgPDwgIm5vbi1mYXN0LXNjcm9sbGFibGUtcmVnaW9uIjsKICAgICAgICAgZm9y
IChhdXRvIHJlY3QgOiBub2RlLm5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkucmVjdHMoKSkgewog
ICAgICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgICAgIHRzLndyaXRlSW5kZW50KCk7CiAg
ICAgICAgICAgICB0cyA8PCByZWN0OwogICAgICAgICB9Ci0gICAgICAgIHRzIDw8ICIpXG4iOwot
ICAgICAgICB0cy5kZWNyZWFzZUluZGVudCgpOwotICAgICAgICB0cy5kZWNyZWFzZUluZGVudCgp
OwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBkdW1wIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29u
cwpAQCAtNjIxLDEyMyArNDk5LDEyMiBAQCB2b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3Ry
ZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlJgogICAgIC8v
IEZJWE1FOiBkdW1wIHNjcm9sbEJlaGF2aW9yRm9yRml4ZWRFbGVtZW50cwogCiAgICAgaWYgKCFj
aGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xsaW5n
U3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckhlaWdodCkpCi0gICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgImhlYWRlci1oZWlnaHQiLCBub2RlLmhlYWRlckhlaWdodCgpKTsKKyAgICAgICAg
dHMuZHVtcFByb3BlcnR5KCJoZWFkZXItaGVpZ2h0Iiwgbm9kZS5oZWFkZXJIZWlnaHQoKSk7CiAK
ICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Rm9vdGVySGVpZ2h0KSkKLSAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAiZm9vdGVyLWhlaWdodCIsIG5vZGUuZm9vdGVySGVpZ2h0KCkp
OworICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZvb3Rlci1oZWlnaHQiLCBub2RlLmZvb3Rlckhl
aWdodCgpKTsKIAogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFzQ2hh
bmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRnJhbWVTY3JvbGxpbmdOb2RlOjpUb3BDb250ZW50
SW5zZXQpKQotICAgICAgICBkdW1wUHJvcGVydHkodHMsICJ0b3AtY29udGVudC1pbnNldCIsIG5v
ZGUudG9wQ29udGVudEluc2V0KCkpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRvcC1jb250
ZW50LWluc2V0Iiwgbm9kZS50b3BDb250ZW50SW5zZXQoKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQ
cm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZy
YW1lU2Nyb2xsaW5nTm9kZTo6RnJhbWVTY2FsZUZhY3RvcikpCi0gICAgICAgIGR1bXBQcm9wZXJ0
eSh0cywgImZyYW1lLXNjYWxlLWZhY3RvciIsIG5vZGUuZnJhbWVTY2FsZUZhY3RvcigpKTsKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJmcmFtZS1zY2FsZS1mYWN0b3IiLCBub2RlLmZyYW1lU2Nh
bGVGYWN0b3IoKSk7CiAKICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhh
c0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6U2Nyb2xs
ZWRDb250ZW50c0xheWVyKSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsZWQtY29u
dGVudHMtbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+
KG5vZGUuc2Nyb2xsZWRDb250ZW50c0xheWVyKCkpKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5
KCJzY3JvbGxlZC1jb250ZW50cy1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBs
YXRmb3JtTGF5ZXJJRD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwogCiAgICAgaWYg
KCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6Okluc2V0Q2xpcExheWVyKSkKLSAgICAgICAgZHVt
cFByb3BlcnR5KHRzLCAiY2xpcC1pbnNldC1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5pbnNldENsaXBMYXllcigpKSk7CisgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiY2xpcC1pbnNldC1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5
ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5pbnNldENsaXBMYXllcigpKSk7CiAKICAgICBpZiAo
IWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxp
bmdTdGF0ZUZyYW1lU2Nyb2xsaW5nTm9kZTo6Q29udGVudFNoYWRvd0xheWVyKSkKLSAgICAgICAg
ZHVtcFByb3BlcnR5KHRzLCAiY29udGVudC1zaGFkb3ctbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFw
aGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuY29udGVudFNoYWRvd0xheWVyKCkpKTsK
KyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjb250ZW50LXNoYWRvdy1sYXllciIsIHN0YXRpY19j
YXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5jb250ZW50U2hhZG93TGF5
ZXIoKSkpOwogCiAgICAgaWYgKCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFu
Z2VkUHJvcGVydHkoU2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkhlYWRlckxheWVy
KSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiaGVhZGVyLWxheWVyIiwgc3RhdGljX2Nhc3Q8
R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPihub2RlLmhlYWRlckxheWVyKCkpKTsKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5KCJoZWFkZXItbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGlj
c0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuaGVhZGVyTGF5ZXIoKSkpOwogCiAgICAgaWYg
KCFjaGFuZ2VkUHJvcGVydGllc09ubHkgfHwgbm9kZS5oYXNDaGFuZ2VkUHJvcGVydHkoU2Nyb2xs
aW5nU3RhdGVGcmFtZVNjcm9sbGluZ05vZGU6OkZvb3RlckxheWVyKSkKLSAgICAgICAgZHVtcFBy
b3BlcnR5KHRzLCAiZm9vdGVyLWxheWVyIiwgc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllcjo6UGxh
dGZvcm1MYXllcklEPihub2RlLmZvb3RlckxheWVyKCkpKTsKKyAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJmb290ZXItbGF5ZXIiLCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxh
eWVySUQ+KG5vZGUuZm9vdGVyTGF5ZXIoKSkpOwogfQogICAgIAotdm9pZCBSZW1vdGVTY3JvbGxp
bmdUcmVlVGV4dFN0cmVhbTo6ZHVtcChjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xs
aW5nTm9kZSYgbm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCitzdGF0aWMgdm9pZCBk
dW1wKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5n
Tm9kZSYgbm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCiB7Ci0gICAgUmVtb3RlU2Ny
b2xsaW5nVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgCi0gICAgZHVtcChzdGF0aWNf
Y2FzdDxjb25zdCBTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUmPihub2RlKSwgY2hhbmdlZFBy
b3BlcnRpZXNPbmx5KTsKKyAgICBkdW1wKHRzLCBzdGF0aWNfY2FzdDxjb25zdCBTY3JvbGxpbmdT
dGF0ZVNjcm9sbGluZ05vZGUmPihub2RlKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKICAgICAK
ICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVzT25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0
eShTY3JvbGxpbmdTdGF0ZU92ZXJmbG93U2Nyb2xsaW5nTm9kZTo6U2Nyb2xsZWRDb250ZW50c0xh
eWVyKSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic2Nyb2xsZWQtY29udGVudHMtbGF5ZXIi
LCBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+KG5vZGUuc2Nyb2xs
ZWRDb250ZW50c0xheWVyKCkpKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3JvbGxlZC1j
b250ZW50cy1sYXllciIsIHN0YXRpY19jYXN0PEdyYXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJ
RD4obm9kZS5zY3JvbGxlZENvbnRlbnRzTGF5ZXIoKSkpOwogfQogCi12b2lkIFJlbW90ZVNjcm9s
bGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlJiBu
b2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKK3N0YXRpYyB2b2lkIGR1bXAoVGV4dFN0
cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlJiBub2RlLCBib29sIGNoYW5n
ZWRQcm9wZXJ0aWVzT25seSkKIHsKLSAgICBSZW1vdGVTY3JvbGxpbmdUcmVlVGV4dFN0cmVhbSYg
dHMgPSAqdGhpczsKLQogICAgIGlmICghY2hhbmdlZFByb3BlcnRpZXNPbmx5IHx8IG5vZGUuaGFz
Q2hhbmdlZFByb3BlcnR5KFNjcm9sbGluZ1N0YXRlRml4ZWROb2RlOjpWaWV3cG9ydENvbnN0cmFp
bnRzKSkKICAgICAgICAgdHMgPDwgbm9kZS52aWV3cG9ydENvbnN0cmFpbnRzKCk7CiB9CiAKLXZv
aWQgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW06OmR1bXAoY29uc3QgU2Nyb2xsaW5nU3Rh
dGVTdGlja3lOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKK3N0YXRpYyB2
b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZSYg
bm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCiB7Ci0gICAgUmVtb3RlU2Nyb2xsaW5n
VHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0KICAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVz
T25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZUZpeGVkTm9kZTo6
Vmlld3BvcnRDb25zdHJhaW50cykpCiAgICAgICAgIHRzIDw8IG5vZGUudmlld3BvcnRDb25zdHJh
aW50cygpOwogfQogCi12b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpyZWN1cnNp
dmVEdW1wTm9kZXMoY29uc3QgU2Nyb2xsaW5nU3RhdGVOb2RlJiBub2RlLCBib29sIGNoYW5nZWRQ
cm9wZXJ0aWVzT25seSkKK3N0YXRpYyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNj
cm9sbGluZ1N0YXRlTm9kZSYgbm9kZSwgYm9vbCBjaGFuZ2VkUHJvcGVydGllc09ubHkpCiB7Ci0g
ICAgUmVtb3RlU2Nyb2xsaW5nVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJ0eXBlIiwgbm9kZS5ub2RlVHlwZSgpKTsKIAotICAgIHRzIDw8ICJcbiI7Ci0g
ICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLSAgICB0cy53cml0ZUluZGVudCgpOwotICAgIGR1bXAo
bm9kZSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKKyAgICBpZiAoIWNoYW5nZWRQcm9wZXJ0aWVz
T25seSB8fCBub2RlLmhhc0NoYW5nZWRQcm9wZXJ0eShTY3JvbGxpbmdTdGF0ZU5vZGU6OlNjcm9s
bExheWVyKSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJsYXllciIsIHN0YXRpY19jYXN0PEdy
YXBoaWNzTGF5ZXI6OlBsYXRmb3JtTGF5ZXJJRD4obm9kZS5sYXllcigpKSk7CisgICAgCisgICAg
c3dpdGNoIChub2RlLm5vZGVUeXBlKCkpIHsKKyAgICBjYXNlIEZyYW1lU2Nyb2xsaW5nTm9kZToK
KyAgICAgICAgZHVtcCh0cywgZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGcmFtZVNjcm9sbGluZ05v
ZGU+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGllc09ubHkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlIE92ZXJmbG93U2Nyb2xsaW5nTm9kZToKKyAgICAgICAgZHVtcCh0cywgZG93bmNhc3Q8U2Ny
b2xsaW5nU3RhdGVPdmVyZmxvd1Njcm9sbGluZ05vZGU+KG5vZGUpLCBjaGFuZ2VkUHJvcGVydGll
c09ubHkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZpeGVkTm9kZToKKyAgICAgICAgZHVt
cCh0cywgZG93bmNhc3Q8U2Nyb2xsaW5nU3RhdGVGaXhlZE5vZGU+KG5vZGUpLCBjaGFuZ2VkUHJv
cGVydGllc09ubHkpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0aWNreU5vZGU6CisgICAg
ICAgIGR1bXAodHMsIGRvd25jYXN0PFNjcm9sbGluZ1N0YXRlU3RpY2t5Tm9kZT4obm9kZSksIGNo
YW5nZWRQcm9wZXJ0aWVzT25seSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworc3RhdGlj
IHZvaWQgcmVjdXJzaXZlRHVtcE5vZGVzKFRleHRTdHJlYW0mIHRzLCBjb25zdCBTY3JvbGxpbmdT
dGF0ZU5vZGUmIG5vZGUsIGJvb2wgY2hhbmdlZFByb3BlcnRpZXNPbmx5KQoreworICAgIFRleHRT
dHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOworICAgIHRzIDw8ICJub2RlICIgPDwgbm9kZS5z
Y3JvbGxpbmdOb2RlSUQoKTsKKyAgICBkdW1wKHRzLCBub2RlLCBjaGFuZ2VkUHJvcGVydGllc09u
bHkpOwogCiAgICAgaWYgKG5vZGUuY2hpbGRyZW4oKSkgewotICAgICAgICB0cyA8PCAiXG4iOwot
ICAgICAgICB0cy5pbmNyZWFzZUluZGVudCgpOwotICAgICAgICB0cy53cml0ZUluZGVudCgpOwot
ICAgICAgICB0cyA8PCAiKGNoaWxkcmVuIjsKLSAgICAgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsK
KyAgICAgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CisgICAgICAgIHRzIDw8
ICJjaGlsZHJlbiI7CiAKICAgICAgICAgZm9yIChhdXRvJiBjaGlsZE5vZGUgOiAqbm9kZS5jaGls
ZHJlbigpKQotICAgICAgICAgICAgcmVjdXJzaXZlRHVtcE5vZGVzKCpjaGlsZE5vZGUsIGNoYW5n
ZWRQcm9wZXJ0aWVzT25seSk7Ci0KLSAgICAgICAgdHMgPDwgIikiOwotICAgICAgICB0cy5kZWNy
ZWFzZUluZGVudCgpOwotICAgICAgICB0cy5kZWNyZWFzZUluZGVudCgpOworICAgICAgICAgICAg
cmVjdXJzaXZlRHVtcE5vZGVzKHRzLCAqY2hpbGROb2RlLCBjaGFuZ2VkUHJvcGVydGllc09ubHkp
OwogICAgIH0KLQotICAgIHRzIDw8ICIpIjsKLSAgICB0cy5kZWNyZWFzZUluZGVudCgpOwogfQog
Ci12b2lkIFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtOjpkdW1wKGNvbnN0IFNjcm9sbGlu
Z1N0YXRlVHJlZSYgc3RhdGVUcmVlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKK3N0YXRp
YyB2b2lkIGR1bXAoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFNjcm9sbGluZ1N0YXRlVHJlZSYgc3Rh
dGVUcmVlLCBib29sIGNoYW5nZWRQcm9wZXJ0aWVzT25seSkKIHsKLSAgICBSZW1vdGVTY3JvbGxp
bmdUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLQotICAgIGR1bXBQcm9wZXJ0eSh0cywgImhh
cyBjaGFuZ2VkIHByb3BlcnRpZXMiLCBzdGF0ZVRyZWUuaGFzQ2hhbmdlZFByb3BlcnRpZXMoKSk7
Ci0gICAgZHVtcFByb3BlcnR5KHRzLCAiaGFzIG5ldyByb290IG5vZGUiLCBzdGF0ZVRyZWUuaGFz
TmV3Um9vdFN0YXRlTm9kZSgpKTsKKyAgICB0cy5kdW1wUHJvcGVydHkoImhhcyBjaGFuZ2VkIHBy
b3BlcnRpZXMiLCBzdGF0ZVRyZWUuaGFzQ2hhbmdlZFByb3BlcnRpZXMoKSk7CisgICAgdHMuZHVt
cFByb3BlcnR5KCJoYXMgbmV3IHJvb3Qgbm9kZSIsIHN0YXRlVHJlZS5oYXNOZXdSb290U3RhdGVO
b2RlKCkpOwogCiAgICAgaWYgKHN0YXRlVHJlZS5yb290U3RhdGVOb2RlKCkpCi0gICAgICAgIHJl
Y3Vyc2l2ZUR1bXBOb2Rlcygqc3RhdGVUcmVlLnJvb3RTdGF0ZU5vZGUoKSwgY2hhbmdlZFByb3Bl
cnRpZXNPbmx5KTsKKyAgICAgICAgcmVjdXJzaXZlRHVtcE5vZGVzKHRzLCAqc3RhdGVUcmVlLnJv
b3RTdGF0ZU5vZGUoKSwgY2hhbmdlZFByb3BlcnRpZXNPbmx5KTsKIAogICAgIGlmICghc3RhdGVU
cmVlLnJlbW92ZWROb2RlcygpLmlzRW1wdHkoKSkgewogICAgICAgICBWZWN0b3I8U2Nyb2xsaW5n
Tm9kZUlEPiByZW1vdmVkTm9kZXM7CiAgICAgICAgIGNvcHlUb1ZlY3RvcihzdGF0ZVRyZWUucmVt
b3ZlZE5vZGVzKCksIHJlbW92ZWROb2Rlcyk7Ci0gICAgICAgIGR1bXBQcm9wZXJ0eTxWZWN0b3I8
U2Nyb2xsaW5nTm9kZUlEPj4odHMsICJyZW1vdmVkLW5vZGVzIiwgcmVtb3ZlZE5vZGVzKTsKKyAg
ICAgICAgdHMuZHVtcFByb3BlcnR5PFZlY3RvcjxTY3JvbGxpbmdOb2RlSUQ+PigicmVtb3ZlZC1u
b2RlcyIsIHJlbW92ZWROb2Rlcyk7CiAgICAgfQogfQogCiBXVEY6OkNTdHJpbmcgUmVtb3RlU2Ny
b2xsaW5nQ29vcmRpbmF0b3JUcmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogewotICAg
IFJlbW90ZVNjcm9sbGluZ1RyZWVUZXh0U3RyZWFtIHRzOworICAgIFRleHRTdHJlYW0gdHM7CiAK
LSAgICB0cyA8PCAiKFxuIjsKLSAgICB0cy5pbmNyZWFzZUluZGVudCgpOwotICAgIHRzLndyaXRl
SW5kZW50KCk7Ci0gICAgdHMgPDwgIihzY3JvbGxpbmcgc3RhdGUgdHJlZSI7CisgICAgdHMuc3Rh
cnRHcm91cCgpOworICAgIHRzIDw8ICJzY3JvbGxpbmcgc3RhdGUgdHJlZSI7CiAKICAgICBpZiAo
bV9zY3JvbGxpbmdTdGF0ZVRyZWUpIHsKICAgICAgICAgaWYgKCFtX3Njcm9sbGluZ1N0YXRlVHJl
ZS0+aGFzQ2hhbmdlZFByb3BlcnRpZXMoKSkKICAgICAgICAgICAgIHRzIDw8ICIgLSBubyBjaGFu
Z2VzIjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgdHMuZHVtcCgqbV9zY3JvbGxpbmdTdGF0
ZVRyZWUuZ2V0KCkpOworICAgICAgICAgICAgV2ViS2l0OjpkdW1wKHRzLCAqbV9zY3JvbGxpbmdT
dGF0ZVRyZWUuZ2V0KCksIHRydWUpOwogICAgIH0gZWxzZQogICAgICAgICB0cyA8PCAiIC0gbm9u
ZSI7CiAKLSAgICB0cyA8PCAiKVxuIjsKLSAgICB0cy5kZWNyZWFzZUluZGVudCgpOworICAgIHRz
LmVuZEdyb3VwKCk7CiAKICAgICByZXR1cm4gdHMucmVsZWFzZSgpLnV0ZjgoKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uLm1tCmluZGV4IDBhN2ZmNjAyYjdlNzNjYTllYTcwODhkZjViNTkxMjBmYWQ1ZTE4MWYuLjdl
N2M5MzJjMmYwZWQxMWU4ODljMTU3YmE3NGI0OTI5MzQ1NDFiMDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQpA
QCAtNjQ3LDQzMyArNjQ3LDggQEAgdm9pZCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6c2V0
TGF5ZXJJRHNXaXRoTmV3bHlVbnJlYWNoYWJsZUJhY2tpbmdTdG9yZShWZWMKIAogI2lmICFkZWZp
bmVkKE5ERUJVRykgfHwgIUxPR19ESVNBQkxFRAogCi1jbGFzcyBSZW1vdGVMYXllclRyZWVUZXh0
U3RyZWFtIDogcHVibGljIFRleHRTdHJlYW0KK3N0YXRpYyBUZXh0U3RyZWFtJiBvcGVyYXRvcjw8
KFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYgYmFja2luZ1N0
b3JlKQogewotcHVibGljOgotICAgIHVzaW5nIFRleHRTdHJlYW06Om9wZXJhdG9yPDw7Ci0KLSAg
ICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtKCkKLSAgICAgICAgOiBtX2luZGVudCgwKQotICAg
IHsKLSAgICB9Ci0KLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jik7Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVh
bSYgb3BlcmF0b3I8PChQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUpOwotICAgIFJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgRmxvYXRSb3VuZGVkUmVjdCYpOwot
ICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoRmxvYXRQb2ludDNEKTsK
LSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KENvbG9yKTsKLSAgICBS
ZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFZlY3RvcjxXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+Jik7Ci0gICAgUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBGaWx0ZXJPcGVyYXRpb24mKTsKLSAgICBSZW1v
dGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
KTsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFBsYXRm
b3JtQ0FBbmltYXRpb25SZW1vdGU6OlByb3BlcnRpZXMmKTsKLSAgICBSZW1vdGVMYXllclRyZWVU
ZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJik7Ci0g
ICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChjb25zdCBXZWJDb3JlOjpH
cmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlJik7Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChCbGVuZE1vZGUpOwotICAgIFJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW0mIG9wZXJhdG9yPDwoUGxhdGZvcm1DQUFuaW1hdGlvbjo6QW5pbWF0aW9uVHlwZSk7Ci0g
ICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChQbGF0Zm9ybUNBQW5pbWF0
aW9uOjpGaWxsTW9kZVR5cGUpOwotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJh
dG9yPDwoUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUpOwotICAgIFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW0mIG9wZXJhdG9yPDwoY29uc3QgVGltaW5nRnVuY3Rpb24mKTsK
LSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KGNvbnN0IFBsYXRmb3Jt
Q0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWUmKTsKLQotICAgIHZvaWQgaW5jcmVhc2VJ
bmRlbnQoKSB7ICsrbV9pbmRlbnQ7IH0KLSAgICB2b2lkIGRlY3JlYXNlSW5kZW50KCkgeyAtLW1f
aW5kZW50OyBBU1NFUlQobV9pbmRlbnQgPj0gMCk7IH0KLQotICAgIHZvaWQgd3JpdGVJbmRlbnQo
KTsKLQotcHJpdmF0ZToKLSAgICBpbnQgbV9pbmRlbnQ7Ci19OwotCi10ZW1wbGF0ZSA8Y2xhc3Mg
VD4KLXN0YXRpYyB2b2lkIGR1bXBQcm9wZXJ0eShSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0
cywgU3RyaW5nIG5hbWUsIFQgdmFsdWUpCi17Ci0gICAgdHMgPDwgIlxuIjsKLSAgICB0cy5pbmNy
ZWFzZUluZGVudCgpOwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwgIigiIDw8IG5h
bWUgPDwgIiAiOwotICAgIHRzIDw8IHZhbHVlIDw8ICIpIjsKLSAgICB0cy5kZWNyZWFzZUluZGVu
dCgpOwotfQotCi1SZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0
U3RyZWFtOjpvcGVyYXRvcjw8KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0p
Ci17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLSAgICB0cyA8
PCAiXG4iOwotICAgIHRzLmluY3JlYXNlSW5kZW50KCk7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsK
LSAgICB0cyA8PCAiWyIgPDwgdHJhbnNmb3JtLm0xMSgpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTEy
KCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMTMoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0xNCgpIDw8
ICJdXG4iOwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwgIlsiIDw8IHRyYW5zZm9y
bS5tMjEoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0yMigpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTIz
KCkgPDwgIiAiIDw8IHRyYW5zZm9ybS5tMjQoKSA8PCAiXVxuIjsKLSAgICB0cy53cml0ZUluZGVu
dCgpOwotICAgIHRzIDw8ICJbIiA8PCB0cmFuc2Zvcm0ubTMxKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tMzIoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm0zMygpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTM0
KCkgPDwgIl1cbiI7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiWyIgPDwgdHJh
bnNmb3JtLm00MSgpIDw8ICIgIiA8PCB0cmFuc2Zvcm0ubTQyKCkgPDwgIiAiIDw8IHRyYW5zZm9y
bS5tNDMoKSA8PCAiICIgPDwgdHJhbnNmb3JtLm00NCgpIDw8ICJdIjsKLSAgICB0cy5kZWNyZWFz
ZUluZGVudCgpOwotICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVh
bSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGbG9hdFJvdW5k
ZWRSZWN0JiByb3VuZGVkUmVjdCkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0
cyA9ICp0aGlzOwotICAgIHRzIDw8IHJvdW5kZWRSZWN0LnJlY3QoKS54KCkgPDwgIiAiIDw8IHJv
dW5kZWRSZWN0LnJlY3QoKS55KCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LnJlY3QoKS53aWR0aCgp
IDw8ICIgIiA8PCByb3VuZGVkUmVjdC5yZWN0KCkuaGVpZ2h0KCkgPDwgIlxuIjsKLQotICAgIHRz
LmluY3JlYXNlSW5kZW50KCk7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAidG9w
TGVmdD0iIDw8IHJvdW5kZWRSZWN0LnRvcExlZnRDb3JuZXIoKS53aWR0aCgpIDw8ICIgIiA8PCBy
b3VuZGVkUmVjdC50b3BMZWZ0Q29ybmVyKCkuaGVpZ2h0KCkgPDwgIlxuIjsKLSAgICB0cy53cml0
ZUluZGVudCgpOwotICAgIHRzIDw8ICJ0b3BSaWdodD0iIDw8IHJvdW5kZWRSZWN0LnRvcFJpZ2h0
Q29ybmVyKCkud2lkdGgoKSA8PCAiICIgPDwgcm91bmRlZFJlY3QudG9wUmlnaHRDb3JuZXIoKS5o
ZWlnaHQoKSA8PCAiXG4iOwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwgImJvdHRv
bUxlZnQ9IiA8PCByb3VuZGVkUmVjdC5ib3R0b21MZWZ0Q29ybmVyKCkud2lkdGgoKSA8PCAiICIg
PDwgcm91bmRlZFJlY3QuYm90dG9tTGVmdENvcm5lcigpLmhlaWdodCgpIDw8ICJcbiI7Ci0gICAg
dHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiYm90dG9tUmlnaHQ9IiA8PCByb3VuZGVkUmVj
dC5ib3R0b21SaWdodENvcm5lcigpLndpZHRoKCkgPDwgIiAiIDw8IHJvdW5kZWRSZWN0LmJvdHRv
bVJpZ2h0Q29ybmVyKCkuaGVpZ2h0KCk7Ci0gICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKLQotICAg
IHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChQbGF0Zm9ybUNBTGF5ZXI6OkZpbHRlclR5cGUgZmls
dGVyVHlwZSkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwot
ICAgIHN3aXRjaCAoZmlsdGVyVHlwZSkgewotICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMaW5l
YXI6Ci0gICAgICAgIHRzIDw8ICJsaW5lYXIiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBs
YXRmb3JtQ0FMYXllcjo6TmVhcmVzdDoKLSAgICAgICAgdHMgPDwgIm5lYXJlc3QiOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6VHJpbGluZWFyOgotICAgICAgICB0
cyA8PCAidHJpbGluZWFyIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
dHM7Ci19Ci0KLVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW06Om9wZXJhdG9yPDwoY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgZmlsdGVycykKLXsKLSAg
ICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgZmlsdGVycy5zaXplKCk7ICsraSkgewotICAgICAgICBjb25zdCBhdXRvIGZp
bHRlciA9IGZpbHRlcnMuYXQoaSk7Ci0gICAgICAgIGlmIChmaWx0ZXIpCi0gICAgICAgICAgICB0
cyA8PCAqZmlsdGVyOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cyA8PCAiKG51bGwpIjsK
LSAgICAgICAgaWYgKGkgPCBmaWx0ZXJzLnNpemUoKSAtIDEpCi0gICAgICAgICAgICB0cyA8PCAi
ICI7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLSAgICAKLVJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgRmlsdGVy
T3BlcmF0aW9uJiBmaWx0ZXIpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMg
PSAqdGhpczsKLSAgICBzd2l0Y2ggKGZpbHRlci50eXBlKCkpIHsKLSAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6UkVGRVJFTkNFOgotICAgICAgICB0cyA8PCAicmVmZXJlbmNlIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRTogewotICAgICAgICBj
b25zdCBhdXRvJiBjb2xvck1hdHJpeEZpbHRlciA9IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJncmF5c2NhbGUoIiA8PCBj
b2xvck1hdHJpeEZpbHRlci5hbW91bnQoKSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0K
LSAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKLSAgICAgICAgY29uc3QgYXV0byYg
Y29sb3JNYXRyaXhGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0
aW9uPihmaWx0ZXIpOwotICAgICAgICB0cyA8PCAic2VwaWEoIiA8PCBjb2xvck1hdHJpeEZpbHRl
ci5hbW91bnQoKSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZpbHRl
ck9wZXJhdGlvbjo6U0FUVVJBVEU6IHsKLSAgICAgICAgY29uc3QgYXV0byYgY29sb3JNYXRyaXhG
aWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIp
OwotICAgICAgICB0cyA8PCAic2F0dXJhdGUoIiA8PCBjb2xvck1hdHJpeEZpbHRlci5hbW91bnQo
KSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6SFVFX1JPVEFURTogewotICAgICAgICBjb25zdCBhdXRvJiBjb2xvck1hdHJpeEZpbHRlciA9
IGRvd25jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAg
ICAgIHRzIDw8ICJodWUtcm90YXRlKCIgPDwgY29sb3JNYXRyaXhGaWx0ZXIuYW1vdW50KCkgPDwg
IikiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklO
VkVSVDogewotICAgICAgICBjb25zdCBhdXRvJiBjb21wb25lbnRUcmFuc2ZlckZpbHRlciA9IGRv
d25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0g
ICAgICAgIHRzIDw8ICJpbnZlcnQoIiA8PCBjb21wb25lbnRUcmFuc2ZlckZpbHRlci5hbW91bnQo
KSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZpbHRlck9wZXJhdGlv
bjo6T1BBQ0lUWTogewotICAgICAgICBjb25zdCBhdXRvJiBjb21wb25lbnRUcmFuc2ZlckZpbHRl
ciA9IGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24+KGZpbHRl
cik7Ci0gICAgICAgIHRzIDw8ICJvcGFjaXR5KCIgPDwgY29tcG9uZW50VHJhbnNmZXJGaWx0ZXIu
YW1vdW50KCkgPDwgIikiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkJSSUdIVE5FU1M6IHsKLSAgICAgICAgY29uc3QgYXV0byYgY29tcG9uZW50VHJh
bnNmZXJGaWx0ZXIgPSBkb3duY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0
aW9uPihmaWx0ZXIpOwotICAgICAgICB0cyA8PCAiYnJpZ2h0bmVzcygiIDw8IGNvbXBvbmVudFRy
YW5zZmVyRmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVDogewotICAgICAgICBjb25zdCBhdXRvJiBj
b21wb25lbnRUcmFuc2ZlckZpbHRlciA9IGRvd25jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24+KGZpbHRlcik7Ci0gICAgICAgIHRzIDw8ICJjb250cmFzdCgiIDw8IGNv
bXBvbmVudFRyYW5zZmVyRmlsdGVyLmFtb3VudCgpIDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfQotICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCTFVSOiB7Ci0gICAgICAgIGNvbnN0IGF1
dG8mIGJsdXJGaWx0ZXIgPSBkb3duY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uPihmaWx0ZXIpOwot
ICAgICAgICB0cyA8PCAiYmx1cigiIDw8IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ckZpbHRlci5z
dGREZXZpYXRpb24oKSwgMCkgPDwgIikiOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7Ci0gICAgICAgIGNvbnN0IGF1dG8mIGRy
b3BTaGFkb3dGaWx0ZXIgPSBkb3duY2FzdDxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPihmaWx0
ZXIpOwotICAgICAgICB0cyA8PCAiZHJvcC1zaGFkb3coIiA8PCBkcm9wU2hhZG93RmlsdGVyLngo
KSA8PCAiICIgPDwgZHJvcFNoYWRvd0ZpbHRlci55KCkgPDwgIiAiIDw8IGRyb3BTaGFkb3dGaWx0
ZXIubG9jYXRpb24oKSA8PCAiICI7Ci0gICAgICAgIHRzIDw8IGRyb3BTaGFkb3dGaWx0ZXIuY29s
b3IoKSA8PCAiKSI7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6UEFTU1RIUk9VR0g6Ci0gICAgICAgIHRzIDw8ICJwYXNzdGhyb3VnaCI7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpERUZBVUxUOiB7Ci0gICAgICAgIGNv
bnN0IGF1dG8mIGRlZmF1bHRGaWx0ZXIgPSBkb3duY2FzdDxEZWZhdWx0RmlsdGVyT3BlcmF0aW9u
PihmaWx0ZXIpOwotICAgICAgICB0cyA8PCAiZGVmYXVsdCB0eXBlPSIgPDwgKGludClkZWZhdWx0
RmlsdGVyLnJlcHJlc2VudGVkVHlwZSgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgY2Fz
ZSBGaWx0ZXJPcGVyYXRpb246Ok5PTkU6Ci0gICAgICAgIHRzIDw8ICJub25lIjsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0
cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBXZWJDb3Jl
OjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlJiBjdXN0b21BcHBlYXJhbmNlKQotewot
ICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgc3dpdGNoIChj
dXN0b21BcHBlYXJhbmNlKSB7Ci0gICAgY2FzZSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0
b21BcHBlYXJhbmNlOjpOb0N1c3RvbUFwcGVhcmFuY2U6IHRzIDw8ICJub25lIjsgYnJlYWs7Ci0g
ICAgY2FzZSBXZWJDb3JlOjpHcmFwaGljc0xheWVyOjpDdXN0b21BcHBlYXJhbmNlOjpTY3JvbGxp
bmdPdmVyaGFuZzogdHMgPDwgInNjcm9sbGluZy1vdmVyaGFuZyI7IGJyZWFrOwotICAgIGNhc2Ug
V2ViQ29yZTo6R3JhcGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6U2Nyb2xsaW5nU2hhZG93
OiB0cyA8PCAic2Nyb2xsaW5nLXNoYWRvdyI7IGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6R3Jh
cGhpY3NMYXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6TGlnaHRCYWNrZHJvcEFwcGVhcmFuY2U6IHRz
IDw8ICJsaWdodC1iYWNrZHJvcCI7IGJyZWFrOwotICAgIGNhc2UgV2ViQ29yZTo6R3JhcGhpY3NM
YXllcjo6Q3VzdG9tQXBwZWFyYW5jZTo6RGFya0JhY2tkcm9wQXBwZWFyYW5jZTogdHMgPDwgImRh
cmstYmFja2Ryb3AiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1vdGVM
YXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8
KEJsZW5kTW9kZSBibGVuZE1vZGUpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYg
dHMgPSAqdGhpczsKLSAgICBzd2l0Y2ggKGJsZW5kTW9kZSkgewotICAgIGNhc2UgQmxlbmRNb2Rl
Tm9ybWFsOiB0cyA8PCAibm9ybWFsIjsgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVNdWx0aXBs
eTogdHMgPDwgIm11bHRpcGx5IjsgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVTY3JlZW46IHRz
IDw8ICJzY3JlZW4iOyBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZU92ZXJsYXk6IHRzIDw8ICJv
dmVybGF5IjsgYnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVEYXJrZW46IHRzIDw8ICJkYXJrZW4i
OyBicmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUxpZ2h0ZW46IHRzIDw8ICJsaWdodGVuIjsgYnJl
YWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVDb2xvckRvZGdlOiB0cyA8PCAiY29sb3ItZG9kZ2UiOyBi
cmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUNvbG9yQnVybjogdHMgPDwgImNvbG9yLWJ1cm4iOyBi
cmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUhhcmRMaWdodDogdHMgPDwgImhhcmQtbGlnaHQiOyBi
cmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZVNvZnRMaWdodDogdHMgPDwgInNvZnQtbGlnaHQiOyBi
cmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZURpZmZlcmVuY2U6IHRzIDw8ICJkaWZmZXJlbmNlIjsg
YnJlYWs7Ci0gICAgY2FzZSBCbGVuZE1vZGVFeGNsdXNpb246IHRzIDw8ICJleGNsdXNpb24iOyBi
cmVhazsKLSAgICBjYXNlIEJsZW5kTW9kZUh1ZTogdHMgPDwgImh1ZSI7IGJyZWFrOwotICAgIGNh
c2UgQmxlbmRNb2RlU2F0dXJhdGlvbjogdHMgPDwgInNhdHVyYXRpb24iOyBicmVhazsKLSAgICBj
YXNlIEJsZW5kTW9kZUNvbG9yOiB0cyA8PCAiY29sb3IiOyBicmVhazsKLSAgICBjYXNlIEJsZW5k
TW9kZUx1bWlub3NpdHk6IHRzIDw8ICJsdW1pbm9zaXR5IjsgYnJlYWs7Ci0gICAgY2FzZSBCbGVu
ZE1vZGVQbHVzRGFya2VyOiB0cyA8PCAicGx1cy1kYXJrZXIiOyBicmVhazsKLSAgICBjYXNlIEJs
ZW5kTW9kZVBsdXNMaWdodGVyOiB0cyA8PCAicGx1cy1saWdodGVyIjsgYnJlYWs7Ci0gICAgfQot
ICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5
ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChQbGF0Zm9ybUNBQW5pbWF0aW9uOjpBbmltYXRp
b25UeXBlIHR5cGUpCi17Ci0gICAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhp
czsKLSAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OkJh
c2ljOiB0cyA8PCAiYmFzaWMiOyBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246
OktleWZyYW1lOiB0cyA8PCAia2V5ZnJhbWUiOyBicmVhazsKLSAgICB9Ci0gICAgcmV0dXJuIHRz
OwotfQotCi1SZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3Ry
ZWFtOjpvcGVyYXRvcjw8KFBsYXRmb3JtQ0FBbmltYXRpb246OkZpbGxNb2RlVHlwZSB0eXBlKQot
ewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgc3dpdGNo
ICh0eXBlKSB7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpOb0ZpbGxNb2RlOiB0cyA8
PCAibm9uZSI7IGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Rm9yd2FyZHM6
IHRzIDw8ICJmb3J3YXJkcyI7IGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6
QmFja3dhcmRzOiB0cyA8PCAiYmFja3dhcmRzIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpCb3RoOiB0cyA8PCAiYm90aCI7IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4g
dHM7Ci19Ci0KLVJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW06Om9wZXJhdG9yPDwoUGxhdGZvcm1DQUFuaW1hdGlvbjo6VmFsdWVGdW5jdGlvblR5cGUg
dHlwZSkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotICAg
IHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6Tm9WYWx1ZUZ1
bmN0aW9uOiB0cyA8PCAibm9uZSI7IGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlv
bjo6Um90YXRlWDogdHMgPDwgInJvdGF0ZVgiOyBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtQ0FB
bmltYXRpb246OlJvdGF0ZVk6IHRzIDw8ICJyb3RhdGVZIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0
Zm9ybUNBQW5pbWF0aW9uOjpSb3RhdGVaOiB0cyA8PCAicm90YXRlWCI7IGJyZWFrOwotICAgIGNh
c2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGVYOiB0cyA8PCAic2NhbGVYIjsgYnJlYWs7Ci0g
ICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9uOjpTY2FsZVk6IHRzIDw8ICJzY2FsZVkiOyBicmVh
azsKLSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlNjYWxlWjogdHMgPDwgInNjYWxlWCI7
IGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6U2NhbGU6IHRzIDw8ICJzY2Fs
ZSI7IGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlWDogdHMg
PDwgInRyYW5zbGF0ZVgiOyBicmVhazsKLSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb246OlRy
YW5zbGF0ZVk6IHRzIDw8ICJ0cmFuc2xhdGVZIjsgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNB
QW5pbWF0aW9uOjpUcmFuc2xhdGVaOiB0cyA8PCAidHJhbnNsYXRlWiI7IGJyZWFrOwotICAgIGNh
c2UgUGxhdGZvcm1DQUFuaW1hdGlvbjo6VHJhbnNsYXRlOiB0cyA8PCAidHJhbnNsYXRlIjsgYnJl
YWs7Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVh
bSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBQbGF0Zm9ybUNB
QW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlJiB2YWx1ZSkKLXsKLSAgICBSZW1vdGVMYXll
clRyZWVUZXh0U3RyZWFtJiB0cyA9ICp0aGlzOwotCi0gICAgc3dpdGNoICh2YWx1ZS5rZXlmcmFt
ZVR5cGUoKSkgewotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVW
YWx1ZTo6TnVtYmVyS2V5VHlwZToKLSAgICAgICAgdHMgPDwgIm51bWJlcj0iIDw8IHZhbHVlLm51
bWJlclZhbHVlKCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlv
blJlbW90ZTo6S2V5ZnJhbWVWYWx1ZTo6Q29sb3JLZXlUeXBlOgotICAgICAgICB0cyA8PCAiY29s
b3I9IjsKLSAgICAgICAgdHMgPDwgdmFsdWUuY29sb3JWYWx1ZSgpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFBsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWU6OlBvaW50
S2V5VHlwZToKLSAgICAgICAgdHMgPDwgInBvaW50PSI7Ci0gICAgICAgIHRzIDw8IHZhbHVlLnBv
aW50VmFsdWUoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpUcmFuc2Zvcm1LZXlUeXBlOgotICAgICAgICB0cyA8PCAi
dHJhbnNmb3JtPSI7Ci0gICAgICAgIHRzIDw8IHZhbHVlLnRyYW5zZm9ybVZhbHVlKCk7Ci0gICAg
ICAgIGJyZWFrOwotICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5ZnJhbWVW
YWx1ZTo6RmlsdGVyS2V5VHlwZToKLSAgICAgICAgdHMgPDwgImZpbHRlcj0iOwotICAgICAgICBp
ZiAodmFsdWUuZmlsdGVyVmFsdWUoKSkKLSAgICAgICAgICAgIHRzIDw8ICp2YWx1ZS5maWx0ZXJW
YWx1ZSgpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0cyA8PCAibnVsbCI7Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gdHM7Ci19Ci0KLVJlbW90ZUxheWVyVHJlZVRleHRT
dHJlYW0mIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgVGltaW5n
RnVuY3Rpb24mIHRpbWluZ0Z1bmN0aW9uKQotewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJl
YW0mIHRzID0gKnRoaXM7Ci0gICAgc3dpdGNoICh0aW1pbmdGdW5jdGlvbi50eXBlKCkpIHsKLSAg
ICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpMaW5lYXJGdW5jdGlvbjoKLSAgICAgICAgdHMgPDwgImxp
bmVhciI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6
aWVyRnVuY3Rpb246IHsKLSAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiYg
Y3ViaWNCZXppZXJGdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVyVGltaW5n
RnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7Ci0gICAgICAgIHRzIDw8ICJjdWJpYy1iZXppZXIo
IiA8PCBjdWJpY0JlemllckZ1bmN0aW9uLngxKCkgPDwgIiwgIiA8PCBjdWJpY0JlemllckZ1bmN0
aW9uLnkxKCkgPDwgIiwgIiA8PCAgY3ViaWNCZXppZXJGdW5jdGlvbi54MigpIDw8ICIsICIgPDwg
Y3ViaWNCZXppZXJGdW5jdGlvbi55MigpIDw8ICIpIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OlN0ZXBzRnVuY3Rpb246IHsKLSAgICAgICAgY29uc3Qg
U3RlcHNUaW1pbmdGdW5jdGlvbiYgc3RlcHNGdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IFN0
ZXBzVGltaW5nRnVuY3Rpb24mPih0aW1pbmdGdW5jdGlvbik7Ci0gICAgICAgIHRzIDw8ICJzdGVw
cygiIDw8IHN0ZXBzRnVuY3Rpb24ubnVtYmVyT2ZTdGVwcygpIDw8ICIsICIgPDwgKHN0ZXBzRnVu
Y3Rpb24uc3RlcEF0U3RhcnQoKSA/ICJzdGFydCIgOiAiZW5kIikgPDwgIikiOwotICAgICAgICBi
cmVhazsKLSAgICB9Ci0gICAgfQotICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVl
VGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBQ
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzJiBhbmltYXRpb24pCi17Ci0gICAg
UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMgPSAqdGhpczsKLQotICAgIHRzIDw8ICJ0eXBl
PSI7Ci0gICAgdHMgPDwgYW5pbWF0aW9uLmFuaW1hdGlvblR5cGU7Ci0gICAgdHMgPDwgIiBrZXlQ
YXRoPSI7Ci0gICAgdHMgPDwgYW5pbWF0aW9uLmtleVBhdGg7Ci0KLSAgICBpZiAoYW5pbWF0aW9u
LmJlZ2luVGltZSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYmVnaW5UaW1lIiwgYW5pbWF0
aW9uLmJlZ2luVGltZSk7Ci0KLSAgICBpZiAoYW5pbWF0aW9uLmR1cmF0aW9uKQotICAgICAgICBk
dW1wUHJvcGVydHkodHMsICJkdXJhdGlvbiIsIGFuaW1hdGlvbi5kdXJhdGlvbik7Ci0KLSAgICBp
ZiAoYW5pbWF0aW9uLnRpbWVPZmZzZXQpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInRpbWVP
ZmZzZXQiLCBhbmltYXRpb24udGltZU9mZnNldCk7Ci0KLSAgICBkdW1wUHJvcGVydHkodHMsICJy
ZXBlYXRDb3VudCIsIGFuaW1hdGlvbi5yZXBlYXRDb3VudCk7Ci0KLSAgICBpZiAoYW5pbWF0aW9u
LnNwZWVkICE9IDEpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInNwZWVkIiwgYW5pbWF0aW9u
LnNwZWVkKTsKLQotICAgIGR1bXBQcm9wZXJ0eSh0cywgImZpbGxNb2RlIiwgYW5pbWF0aW9uLmZp
bGxNb2RlKTsKLSAgICBkdW1wUHJvcGVydHkodHMsICJ2YWx1ZUZ1bmN0aW9uIiwgYW5pbWF0aW9u
LnZhbHVlRnVuY3Rpb24pOwotCi0gICAgaWYgKGFuaW1hdGlvbi5hdXRvUmV2ZXJzZXMpCi0gICAg
ICAgIGR1bXBQcm9wZXJ0eSh0cywgImF1dG9SZXZlcnNlcyIsIGFuaW1hdGlvbi5hdXRvUmV2ZXJz
ZXMpOwotCi0gICAgaWYgKCFhbmltYXRpb24ucmVtb3ZlZE9uQ29tcGxldGlvbikKLSAgICAgICAg
ZHVtcFByb3BlcnR5KHRzLCAicmVtb3ZlZE9uQ29tcGxldGlvbiIsIGFuaW1hdGlvbi5yZW1vdmVk
T25Db21wbGV0aW9uKTsKLQotICAgIGlmIChhbmltYXRpb24uYWRkaXRpdmUpCi0gICAgICAgIGR1
bXBQcm9wZXJ0eSh0cywgImFkZGl0aXZlIiwgYW5pbWF0aW9uLmFkZGl0aXZlKTsKLQotICAgIGlm
IChhbmltYXRpb24ucmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucykKLSAgICAgICAgZHVtcFByb3BlcnR5
KHRzLCAicmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyIsIGFuaW1hdGlvbi5yZXZlcnNlVGltaW5nRnVu
Y3Rpb25zKTsKLQotICAgIGlmIChhbmltYXRpb24uaGFzRXhwbGljaXRCZWdpblRpbWUpCi0gICAg
ICAgIGR1bXBQcm9wZXJ0eSh0cywgImhhc0V4cGxpY2l0QmVnaW5UaW1lIiwgYW5pbWF0aW9uLmhh
c0V4cGxpY2l0QmVnaW5UaW1lKTsKLQotICAgIHRzIDw8ICJcbiI7Ci0gICAgdHMuaW5jcmVhc2VJ
bmRlbnQoKTsKLSAgICB0cy53cml0ZUluZGVudCgpOwotICAgIHRzIDw8ICIoIiA8PCAia2V5ZnJh
bWVzIjsKLSAgICB0cy5pbmNyZWFzZUluZGVudCgpOwotCi0gICAgc2l6ZV90IG1heEZyYW1lcyA9
IHN0ZDo6bWF4KGFuaW1hdGlvbi5rZXlWYWx1ZXMuc2l6ZSgpLCBhbmltYXRpb24ua2V5VGltZXMu
c2l6ZSgpKTsKLSAgICBtYXhGcmFtZXMgPSBzdGQ6Om1heChtYXhGcmFtZXMsIGFuaW1hdGlvbi50
aW1pbmdGdW5jdGlvbnMuc2l6ZSgpKTsKLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4
RnJhbWVzOyArK2kpIHsKLSAgICAgICAgdHMgPDwgIlxuIjsKLSAgICAgICAgdHMud3JpdGVJbmRl
bnQoKTsKLSAgICAgICAgdHMgPDwgIihrZXlmcmFtZSAiIDw8IHVuc2lnbmVkKGkpOwotICAgICAg
ICBpZiAoaSA8IGFuaW1hdGlvbi5rZXlUaW1lcy5zaXplKCkpCi0gICAgICAgICAgICBkdW1wUHJv
cGVydHkodHMsICJ0aW1lIiwgYW5pbWF0aW9uLmtleVRpbWVzW2ldKTsKLQotICAgICAgICBpZiAo
aSA8IGFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbnMuc2l6ZSgpICYmIGFuaW1hdGlvbi50aW1pbmdG
dW5jdGlvbnNbaV0pCi0gICAgICAgICAgICBkdW1wUHJvcGVydHk8Y29uc3QgVGltaW5nRnVuY3Rp
b24mPih0cywgInRpbWluZyBmdW5jdGlvbiIsICphbmltYXRpb24udGltaW5nRnVuY3Rpb25zW2ld
KTsKLQotICAgICAgICBpZiAoaSA8IGFuaW1hdGlvbi5rZXlWYWx1ZXMuc2l6ZSgpKQotICAgICAg
ICAgICAgZHVtcFByb3BlcnR5KHRzLCAidmFsdWUiLCBhbmltYXRpb24ua2V5VmFsdWVzW2ldKTsK
LQotICAgICAgICB0cyA8PCAiKSI7Ci0gICAgfQotCi0gICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsK
LSAgICB0cy5kZWNyZWFzZUluZGVudCgpOwotCi0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1vdGVM
YXllclRyZWVUZXh0U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8
KEZsb2F0UG9pbnQzRCBwb2ludCkKLXsKLSAgICBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtJiB0
cyA9ICp0aGlzOwotICAgIHRzIDw8IHBvaW50LngoKSA8PCAiICIgPDwgcG9pbnQueSgpIDw8ICIg
IiA8PCBwb2ludC56KCk7Ci0gICAgcmV0dXJuIHRzOwotfQotCi1SZW1vdGVMYXllclRyZWVUZXh0
U3RyZWFtJiBSZW1vdGVMYXllclRyZWVUZXh0U3RyZWFtOjpvcGVyYXRvcjw8KENvbG9yIGNvbG9y
KQotewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0gICAgdHMg
PDwgY29sb3Iuc2VyaWFsaXplZCgpOwotICAgIHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25z
dCBWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPiYgbGF5ZXJzKQotewotICAg
IFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRoaXM7Ci0KLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGxheWVycy5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAoaSkKLSAgICAg
ICAgICAgIHRzIDw8ICIgIjsKLSAgICAgICAgdHMgPDwgbGF5ZXJzW2ldOwotICAgIH0KLQotICAg
IHJldHVybiB0czsKLX0KLQotUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBSZW1vdGVMYXllckJhY2tpbmdTdG9yZSYg
YmFja2luZ1N0b3JlKQotewotICAgIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIHRzID0gKnRo
aXM7CiAgICAgdHMgPDwgYmFja2luZ1N0b3JlLnNpemUoKTsKICAgICB0cyA8PCAiIHNjYWxlPSIg
PDwgYmFja2luZ1N0b3JlLnNjYWxlKCk7CiAgICAgaWYgKGJhY2tpbmdTdG9yZS5pc09wYXF1ZSgp
KQpAQCAtMTA4MywyMCArNjU4LDEzIEBAIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW0mIFJlbW90
ZUxheWVyVHJlZVRleHRTdHJlYW06Om9wZXJhdG9yPDwoY29uc3QgUmVtb3RlTGF5CiAgICAgcmV0
dXJuIHRzOwogfQogCi12b2lkIFJlbW90ZUxheWVyVHJlZVRleHRTdHJlYW06OndyaXRlSW5kZW50
KCkKLXsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1faW5kZW50OyArK2kpCi0gICAgICAgICp0
aGlzIDw8ICIgICI7Ci19Ci0KLXN0YXRpYyB2b2lkIGR1bXBDaGFuZ2VkTGF5ZXJzKFJlbW90ZUxh
eWVyVHJlZVRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6
TGF5ZXJQcm9wZXJ0aWVzTWFwJiBjaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKQorc3RhdGljIHZvaWQg
ZHVtcENoYW5nZWRMYXllcnMoVGV4dFN0cmVhbSYgdHMsIGNvbnN0IFJlbW90ZUxheWVyVHJlZVRy
YW5zYWN0aW9uOjpMYXllclByb3BlcnRpZXNNYXAmIGNoYW5nZWRMYXllclByb3BlcnRpZXMpCiB7
CiAgICAgaWYgKGNoYW5nZWRMYXllclByb3BlcnRpZXMuaXNFbXB0eSgpKQogICAgICAgICByZXR1
cm47CiAKLSAgICB0cyA8PCAiXG4iOwotICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAgdHMgPDwg
IihjaGFuZ2VkLWxheWVycyI7CisgICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7
CisgICAgdHMgPDwgImNoYW5nZWQtbGF5ZXJzIjsKIAogICAgIC8vIER1bXAgdGhlIGxheWVyIHBy
b3BlcnRpZXMgc29ydGVkIGJ5IGxheWVyIElELgogICAgIFZlY3RvcjxHcmFwaGljc0xheWVyOjpQ
bGF0Zm9ybUxheWVySUQ+IGxheWVySURzOwpAQCAtMTEwNiwxMjUgKzY3NCwxMTcgQEAgc3RhdGlj
IHZvaWQgZHVtcENoYW5nZWRMYXllcnMoUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgdHMsIGNv
bnN0IFJlbW90ZUxheWVyVHIKICAgICBmb3IgKGF1dG8mIGxheWVySUQgOiBsYXllcklEcykgewog
ICAgICAgICBjb25zdCBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TGF5ZXJQcm9wZXJ0aWVz
JiBsYXllclByb3BlcnRpZXMgPSAqY2hhbmdlZExheWVyUHJvcGVydGllcy5nZXQobGF5ZXJJRCk7
CiAKLSAgICAgICAgdHMgPDwgIlxuIjsKLSAgICAgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKLSAg
ICAgICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICAgICAgdHMgPDwgIihsYXllciAiIDw8IGxheWVy
SUQ7CisgICAgICAgIFRleHRTdHJlYW06Okdyb3VwU2NvcGUgZ3JvdXAodHMpOworICAgICAgICB0
cyA8PCAibGF5ZXIgIiA8PCBsYXllcklEOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMu
Y2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6TmFtZUNoYW5n
ZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJuYW1lIiwgbGF5ZXJQcm9wZXJ0aWVz
Lm5hbWUpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJuYW1lIiwgbGF5ZXJQcm9wZXJ0
aWVzLm5hbWUpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRp
ZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Q2hpbGRyZW5DaGFuZ2VkKQotICAgICAg
ICAgICAgZHVtcFByb3BlcnR5PFZlY3RvcjxHcmFwaGljc0xheWVyOjpQbGF0Zm9ybUxheWVySUQ+
Pih0cywgImNoaWxkcmVuIiwgbGF5ZXJQcm9wZXJ0aWVzLmNoaWxkcmVuKTsKKyAgICAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8R3JhcGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPj4o
ImNoaWxkcmVuIiwgbGF5ZXJQcm9wZXJ0aWVzLmNoaWxkcmVuKTsKIAogICAgICAgICBpZiAobGF5
ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OlBvc2l0aW9uQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInBvc2l0
aW9uIiwgbGF5ZXJQcm9wZXJ0aWVzLnBvc2l0aW9uKTsKKyAgICAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgicG9zaXRpb24iLCBsYXllclByb3BlcnRpZXMucG9zaXRpb24pOwogCiAgICAgICAgIGlm
IChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFu
c2FjdGlvbjo6Qm91bmRzQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImJv
dW5kcyIsIGxheWVyUHJvcGVydGllcy5ib3VuZHMpOworICAgICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJib3VuZHMiLCBsYXllclByb3BlcnRpZXMuYm91bmRzKTsKIAogICAgICAgICBpZiAobGF5
ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkFuY2hvclBvaW50Q2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImFu
Y2hvclBvaW50IiwgbGF5ZXJQcm9wZXJ0aWVzLmFuY2hvclBvaW50KTsKKyAgICAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiYW5jaG9yUG9pbnQiLCBsYXllclByb3BlcnRpZXMuYW5jaG9yUG9pbnQp
OwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1v
dGVMYXllclRyZWVUcmFuc2FjdGlvbjo6QmFja2dyb3VuZENvbG9yQ2hhbmdlZCkKLSAgICAgICAg
ICAgIGR1bXBQcm9wZXJ0eSh0cywgImJhY2tncm91bmRDb2xvciIsIGxheWVyUHJvcGVydGllcy5i
YWNrZ3JvdW5kQ29sb3IpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJiYWNrZ3JvdW5k
Q29sb3IiLCBsYXllclByb3BlcnRpZXMuYmFja2dyb3VuZENvbG9yKTsKIAogICAgICAgICBpZiAo
bGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNh
Y3Rpb246OkJvcmRlckNvbG9yQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywg
ImJvcmRlckNvbG9yIiwgbGF5ZXJQcm9wZXJ0aWVzLmJvcmRlckNvbG9yKTsKKyAgICAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiYm9yZGVyQ29sb3IiLCBsYXllclByb3BlcnRpZXMuYm9yZGVyQ29s
b3IpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6Qm9yZGVyV2lkdGhDaGFuZ2VkKQotICAgICAgICAg
ICAgZHVtcFByb3BlcnR5KHRzLCAiYm9yZGVyV2lkdGgiLCBsYXllclByb3BlcnRpZXMuYm9yZGVy
V2lkdGgpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJib3JkZXJXaWR0aCIsIGxheWVy
UHJvcGVydGllcy5ib3JkZXJXaWR0aCk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpPcGFjaXR5Q2hh
bmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgIm9wYWNpdHkiLCBsYXllclByb3Bl
cnRpZXMub3BhY2l0eSk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm9wYWNpdHkiLCBs
YXllclByb3BlcnRpZXMub3BhY2l0eSk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5j
aGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpUcmFuc2Zvcm1D
aGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAidHJhbnNmb3JtIiwgbGF5ZXJQ
cm9wZXJ0aWVzLnRyYW5zZm9ybSA/ICpsYXllclByb3BlcnRpZXMudHJhbnNmb3JtIDogVHJhbnNm
b3JtYXRpb25NYXRyaXgoKSk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRyYW5zZm9y
bSIsIGxheWVyUHJvcGVydGllcy50cmFuc2Zvcm0gPyAqbGF5ZXJQcm9wZXJ0aWVzLnRyYW5zZm9y
bSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRp
ZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U3VibGF5
ZXJUcmFuc2Zvcm1DaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAic3VibGF5
ZXJUcmFuc2Zvcm0iLCBsYXllclByb3BlcnRpZXMuc3VibGF5ZXJUcmFuc2Zvcm0gPyAqbGF5ZXJQ
cm9wZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtIDogVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7Cisg
ICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoInN1YmxheWVyVHJhbnNmb3JtIiwgbGF5ZXJQcm9w
ZXJ0aWVzLnN1YmxheWVyVHJhbnNmb3JtID8gKmxheWVyUHJvcGVydGllcy5zdWJsYXllclRyYW5z
Zm9ybSA6IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiAgICAgICAgIGlmIChsYXllclByb3Bl
cnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6SGlk
ZGVuQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImhpZGRlbiIsIGxheWVy
UHJvcGVydGllcy5oaWRkZW4pOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJoaWRkZW4i
LCBsYXllclByb3BlcnRpZXMuaGlkZGVuKTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVz
LmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Okdlb21ldHJ5
RmxpcHBlZENoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJnZW9tZXRyeUZs
aXBwZWQiLCBsYXllclByb3BlcnRpZXMuZ2VvbWV0cnlGbGlwcGVkKTsKKyAgICAgICAgICAgIHRz
LmR1bXBQcm9wZXJ0eSgiZ2VvbWV0cnlGbGlwcGVkIiwgbGF5ZXJQcm9wZXJ0aWVzLmdlb21ldHJ5
RmxpcHBlZCk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGll
cyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpEb3VibGVTaWRlZENoYW5nZWQpCi0gICAg
ICAgICAgICBkdW1wUHJvcGVydHkodHMsICJkb3VibGVTaWRlZCIsIGxheWVyUHJvcGVydGllcy5k
b3VibGVTaWRlZCk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoImRvdWJsZVNpZGVkIiwg
bGF5ZXJQcm9wZXJ0aWVzLmRvdWJsZVNpZGVkKTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0
aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok1hc2tz
VG9Cb3VuZHNDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAibWFza3NUb0Jv
dW5kcyIsIGxheWVyUHJvcGVydGllcy5tYXNrc1RvQm91bmRzKTsKKyAgICAgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgibWFza3NUb0JvdW5kcyIsIGxheWVyUHJvcGVydGllcy5tYXNrc1RvQm91bmRz
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246Ok9wYXF1ZUNoYW5nZWQpCi0gICAgICAgICAgICBkdW1w
UHJvcGVydHkodHMsICJvcGFxdWUiLCBsYXllclByb3BlcnRpZXMub3BhcXVlKTsKKyAgICAgICAg
ICAgIHRzLmR1bXBQcm9wZXJ0eSgib3BhcXVlIiwgbGF5ZXJQcm9wZXJ0aWVzLm9wYXF1ZSk7CiAK
ICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxh
eWVyVHJlZVRyYW5zYWN0aW9uOjpNYXNrTGF5ZXJDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFBy
b3BlcnR5KHRzLCAibWFza0xheWVyIiwgbGF5ZXJQcm9wZXJ0aWVzLm1hc2tMYXllcklEKTsKKyAg
ICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibWFza0xheWVyIiwgbGF5ZXJQcm9wZXJ0aWVzLm1h
c2tMYXllcklEKTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0
aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkNsb25lZENvbnRlbnRzQ2hhbmdlZCkK
LSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImNsb25lZExheWVyIiwgbGF5ZXJQcm9wZXJ0
aWVzLmNsb25lZExheWVySUQpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJjbG9uZWRM
YXllciIsIGxheWVyUHJvcGVydGllcy5jbG9uZWRMYXllcklEKTsKIAogICAgICAgICBpZiAobGF5
ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b246OkNvbnRlbnRzUmVjdENoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMsICJj
b250ZW50c1JlY3QiLCBsYXllclByb3BlcnRpZXMuY29udGVudHNSZWN0KTsKKyAgICAgICAgICAg
IHRzLmR1bXBQcm9wZXJ0eSgiY29udGVudHNSZWN0IiwgbGF5ZXJQcm9wZXJ0aWVzLmNvbnRlbnRz
UmVjdCk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAm
IFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpDb250ZW50c1NjYWxlQ2hhbmdlZCkKLSAgICAg
ICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImNvbnRlbnRzU2NhbGUiLCBsYXllclByb3BlcnRpZXMu
Y29udGVudHNTY2FsZSk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoImNvbnRlbnRzU2Nh
bGUiLCBsYXllclByb3BlcnRpZXMuY29udGVudHNTY2FsZSk7CiAKICAgICAgICAgaWYgKGxheWVy
UHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpDb3JuZXJSYWRpdXNDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY29y
bmVyUmFkaXVzIiwgbGF5ZXJQcm9wZXJ0aWVzLmNvcm5lclJhZGl1cyk7CisgICAgICAgICAgICB0
cy5kdW1wUHJvcGVydHkoImNvcm5lclJhZGl1cyIsIGxheWVyUHJvcGVydGllcy5jb3JuZXJSYWRp
dXMpOwogCiAgICAgICAgIGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBS
ZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbjo6U2hhcGVSb3VuZGVkUmVjdENoYW5nZWQpCi0gICAg
ICAgICAgICBkdW1wUHJvcGVydHkodHMsICJzaGFwZVJlY3QiLCBsYXllclByb3BlcnRpZXMuc2hh
cGVSb3VuZGVkUmVjdCA/ICpsYXllclByb3BlcnRpZXMuc2hhcGVSb3VuZGVkUmVjdCA6IEZsb2F0
Um91bmRlZFJlY3QoKSk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoInNoYXBlUmVjdCIs
IGxheWVyUHJvcGVydGllcy5zaGFwZVJvdW5kZWRSZWN0ID8gKmxheWVyUHJvcGVydGllcy5zaGFw
ZVJvdW5kZWRSZWN0IDogRmxvYXRSb3VuZGVkUmVjdCgpKTsKIAogICAgICAgICBpZiAobGF5ZXJQ
cm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246
Ok1pbmlmaWNhdGlvbkZpbHRlckNoYW5nZWQpCi0gICAgICAgICAgICBkdW1wUHJvcGVydHkodHMs
ICJtaW5pZmljYXRpb25GaWx0ZXIiLCBsYXllclByb3BlcnRpZXMubWluaWZpY2F0aW9uRmlsdGVy
KTsKKyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgibWluaWZpY2F0aW9uRmlsdGVyIiwgbGF5
ZXJQcm9wZXJ0aWVzLm1pbmlmaWNhdGlvbkZpbHRlcik7CiAKICAgICAgICAgaWYgKGxheWVyUHJv
cGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpN
YWduaWZpY2F0aW9uRmlsdGVyQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywg
Im1hZ25pZmljYXRpb25GaWx0ZXIiLCBsYXllclByb3BlcnRpZXMubWFnbmlmaWNhdGlvbkZpbHRl
cik7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoIm1hZ25pZmljYXRpb25GaWx0ZXIiLCBs
YXllclByb3BlcnRpZXMubWFnbmlmaWNhdGlvbkZpbHRlcik7CiAKICAgICAgICAgaWYgKGxheWVy
UHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpCbGVuZE1vZGVDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYmxlbmRN
b2RlIiwgbGF5ZXJQcm9wZXJ0aWVzLmJsZW5kTW9kZSk7CisgICAgICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImJsZW5kTW9kZSIsIGxheWVyUHJvcGVydGllcy5ibGVuZE1vZGUpOwogCiAgICAgICAg
IGlmIChsYXllclByb3BlcnRpZXMuY2hhbmdlZFByb3BlcnRpZXMgJiBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6U3BlZWRDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAi
c3BlZWQiLCBsYXllclByb3BlcnRpZXMuc3BlZWQpOworICAgICAgICAgICAgdHMuZHVtcFByb3Bl
cnR5KCJzcGVlZCIsIGxheWVyUHJvcGVydGllcy5zcGVlZCk7CiAKICAgICAgICAgaWYgKGxheWVy
UHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9u
OjpUaW1lT2Zmc2V0Q2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInRpbWVP
ZmZzZXQiLCBsYXllclByb3BlcnRpZXMudGltZU9mZnNldCk7CisgICAgICAgICAgICB0cy5kdW1w
UHJvcGVydHkoInRpbWVPZmZzZXQiLCBsYXllclByb3BlcnRpZXMudGltZU9mZnNldCk7CiAKICAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpCYWNraW5nU3RvcmVDaGFuZ2VkKSB7CiAgICAgICAgICAgICBpZiAo
Y29uc3QgUmVtb3RlTGF5ZXJCYWNraW5nU3RvcmUqIGJhY2tpbmdTdG9yZSA9IGxheWVyUHJvcGVy
dGllcy5iYWNraW5nU3RvcmUuZ2V0KCkpCi0gICAgICAgICAgICAgICAgZHVtcFByb3BlcnR5PGNv
bnN0IFJlbW90ZUxheWVyQmFja2luZ1N0b3JlJj4odHMsICJiYWNraW5nU3RvcmUiLCAqYmFja2lu
Z1N0b3JlKTsKKyAgICAgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHk8Y29uc3QgUmVtb3RlTGF5
ZXJCYWNraW5nU3RvcmUmPigiYmFja2luZ1N0b3JlIiwgKmJhY2tpbmdTdG9yZSk7CiAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAiYmFja2luZ1N0b3Jl
IiwgInJlbW92ZWQiKTsKKyAgICAgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoImJhY2tpbmdT
dG9yZSIsICJyZW1vdmVkIik7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0
aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkJhY2tp
bmdTdG9yZUF0dGFjaG1lbnRDaGFuZ2VkKQotICAgICAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAi
YmFja2luZ1N0b3JlQXR0YWNoZWQiLCBsYXllclByb3BlcnRpZXMuYmFja2luZ1N0b3JlQXR0YWNo
ZWQpOworICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJiYWNraW5nU3RvcmVBdHRhY2hlZCIs
IGxheWVyUHJvcGVydGllcy5iYWNraW5nU3RvcmVBdHRhY2hlZCk7CiAKICAgICAgICAgaWYgKGxh
eWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpGaWx0ZXJzQ2hhbmdlZCkKLSAgICAgICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgImZpbHRl
cnMiLCBsYXllclByb3BlcnRpZXMuZmlsdGVycyA/ICpsYXllclByb3BlcnRpZXMuZmlsdGVycyA6
IEZpbHRlck9wZXJhdGlvbnMoKSk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoImZpbHRl
cnMiLCBsYXllclByb3BlcnRpZXMuZmlsdGVycyA/ICpsYXllclByb3BlcnRpZXMuZmlsdGVycyA6
IEZpbHRlck9wZXJhdGlvbnMoKSk7CiAKICAgICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFu
Z2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uOjpBbmltYXRpb25zQ2hh
bmdlZCkgewogICAgICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBrZXlBbmltYXRpb25QYWlyIDog
bGF5ZXJQcm9wZXJ0aWVzLmFkZGVkQW5pbWF0aW9ucykKLSAgICAgICAgICAgICAgICBkdW1wUHJv
cGVydHkodHMsICJhbmltYXRpb24gIiArICBrZXlBbmltYXRpb25QYWlyLmZpcnN0LCBrZXlBbmlt
YXRpb25QYWlyLnNlY29uZCk7CisgICAgICAgICAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJhbmlt
YXRpb24gIiArICBrZXlBbmltYXRpb25QYWlyLmZpcnN0LCBrZXlBbmltYXRpb25QYWlyLnNlY29u
ZCk7CiAKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgbmFtZSA6IGxheWVyUHJvcGVydGll
cy5rZXlQYXRoc09mQW5pbWF0aW9uc1RvUmVtb3ZlKQotICAgICAgICAgICAgICAgIGR1bXBQcm9w
ZXJ0eSh0cywgInJlbW92ZWQgYW5pbWF0aW9uIiwgbmFtZSk7CisgICAgICAgICAgICAgICAgdHMu
ZHVtcFByb3BlcnR5KCJyZW1vdmVkIGFuaW1hdGlvbiIsIG5hbWUpOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKGxheWVyUHJvcGVydGllcy5jaGFuZ2VkUHJvcGVydGllcyAmIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpFZGdlQW50aWFsaWFzaW5nTWFza0NoYW5nZWQpCi0gICAgICAgICAg
ICBkdW1wUHJvcGVydHkodHMsICJlZGdlQW50aWFsaWFzaW5nTWFzayIsIGxheWVyUHJvcGVydGll
cy5lZGdlQW50aWFsaWFzaW5nTWFzayk7CisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoImVk
Z2VBbnRpYWxpYXNpbmdNYXNrIiwgbGF5ZXJQcm9wZXJ0aWVzLmVkZ2VBbnRpYWxpYXNpbmdNYXNr
KTsKIAogICAgICAgICBpZiAobGF5ZXJQcm9wZXJ0aWVzLmNoYW5nZWRQcm9wZXJ0aWVzICYgUmVt
b3RlTGF5ZXJUcmVlVHJhbnNhY3Rpb246OkN1c3RvbUFwcGVhcmFuY2VDaGFuZ2VkKQotICAgICAg
ICAgICAgZHVtcFByb3BlcnR5KHRzLCAiY3VzdG9tQXBwZWFyYW5jZSIsIGxheWVyUHJvcGVydGll
cy5jdXN0b21BcHBlYXJhbmNlKTsKLQotICAgICAgICB0cyA8PCAiKSI7Ci0KLSAgICAgICAgdHMu
ZGVjcmVhc2VJbmRlbnQoKTsKKyAgICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eSgiY3VzdG9tQXBw
ZWFyYW5jZSIsIGxheWVyUHJvcGVydGllcy5jdXN0b21BcHBlYXJhbmNlKTsKICAgICB9Ci0KLSAg
ICB0cy5kZWNyZWFzZUluZGVudCgpOwogfQogCiB2b2lkIFJlbW90ZUxheWVyVHJlZVRyYW5zYWN0
aW9uOjpkdW1wKCkgY29uc3QKQEAgLTEyMzQsOTIgKzc5NCw0OSBAQCB2b2lkIFJlbW90ZUxheWVy
VHJlZVRyYW5zYWN0aW9uOjpkdW1wKCkgY29uc3QKIAogQ1N0cmluZyBSZW1vdGVMYXllclRyZWVU
cmFuc2FjdGlvbjo6ZGVzY3JpcHRpb24oKSBjb25zdAogewotICAgIFJlbW90ZUxheWVyVHJlZVRl
eHRTdHJlYW0gdHM7CisgICAgVGV4dFN0cmVhbSB0czsKIAotICAgIHRzIDw8ICIoIjsKLSAgICBk
dW1wUHJvcGVydHkodHMsICJ0cmFuc2FjdGlvbklEIiwgbV90cmFuc2FjdGlvbklEKTsKLSAgICBk
dW1wUHJvcGVydHkodHMsICJjb250ZW50c1NpemUiLCBtX2NvbnRlbnRzU2l6ZSk7CisgICAgdHMu
c3RhcnRHcm91cCgpOworICAgIHRzIDw8ICJsYXllciB0cmVlIjsKKworICAgIHRzLmR1bXBQcm9w
ZXJ0eSgidHJhbnNhY3Rpb25JRCIsIG1fdHJhbnNhY3Rpb25JRCk7CisgICAgdHMuZHVtcFByb3Bl
cnR5KCJjb250ZW50c1NpemUiLCBtX2NvbnRlbnRzU2l6ZSk7CiAgICAgaWYgKG1fc2Nyb2xsT3Jp
Z2luICE9IEludFBvaW50Ojp6ZXJvKCkpCi0gICAgICAgIGR1bXBQcm9wZXJ0eSh0cywgInNjcm9s
bE9yaWdpbiIsIG1fc2Nyb2xsT3JpZ2luKTsKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzY3Jv
bGxPcmlnaW4iLCBtX3Njcm9sbE9yaWdpbik7CiAKICAgICBpZiAobV9wYWdlU2NhbGVGYWN0b3Ig
IT0gMSkKLSAgICAgICAgZHVtcFByb3BlcnR5KHRzLCAicGFnZVNjYWxlRmFjdG9yIiwgbV9wYWdl
U2NhbGVGYWN0b3IpOworICAgICAgICB0cy5kdW1wUHJvcGVydHkoInBhZ2VTY2FsZUZhY3RvciIs
IG1fcGFnZVNjYWxlRmFjdG9yKTsKIAotICAgIHRzIDw8ICIoXG4iOwotICAgIHRzLmluY3JlYXNl
SW5kZW50KCk7Ci0gICAgdHMud3JpdGVJbmRlbnQoKTsKLSAgICB0cyA8PCAiKHJvb3QtbGF5ZXIg
IiA8PCBtX3Jvb3RMYXllcklEIDw8ICIpIjsKKyAgICB0cyA8PCAicm9vdC1sYXllciAiIDw8IG1f
cm9vdExheWVySUQgPDwgIikiOwogCiAgICAgaWYgKCFtX2NyZWF0ZWRMYXllcnMuaXNFbXB0eSgp
KSB7Ci0gICAgICAgIHRzIDw8ICJcbiI7Ci0gICAgICAgIHRzLndyaXRlSW5kZW50KCk7Ci0gICAg
ICAgIHRzIDw8ICIoY3JlYXRlZC1sYXllcnMiOwotICAgICAgICB0cy5pbmNyZWFzZUluZGVudCgp
OworICAgICAgICBUZXh0U3RyZWFtOjpHcm91cFNjb3BlIGdyb3VwKHRzKTsKKyAgICAgICAgdHMg
PDwgImNyZWF0ZWQtbGF5ZXJzIjsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBjcmVhdGVkTGF5
ZXIgOiBtX2NyZWF0ZWRMYXllcnMpIHsKLSAgICAgICAgICAgIHRzIDw8ICJcbiI7Ci0gICAgICAg
ICAgICB0cy53cml0ZUluZGVudCgpOwotICAgICAgICAgICAgdHMgPDwgIigiOworICAgICAgICAg
ICAgVGV4dFN0cmVhbTo6R3JvdXBTY29wZSBncm91cCh0cyk7CisgICAgICAgICAgICB0cyA8PCBj
cmVhdGVkTGF5ZXIudHlwZSA8PCIgIiA8PCBjcmVhdGVkTGF5ZXIubGF5ZXJJRDsKICAgICAgICAg
ICAgIHN3aXRjaCAoY3JlYXRlZExheWVyLnR5cGUpIHsKLSAgICAgICAgICAgIGNhc2UgUGxhdGZv
cm1DQUxheWVyOjpMYXllclR5cGVMYXllcjoKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxh
eWVyOjpMYXllclR5cGVXZWJMYXllcjoKLSAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVy
OjpMYXllclR5cGVTaW1wbGVMYXllcjoKLSAgICAgICAgICAgICAgICB0cyA8PCAibGF5ZXIiOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6
OkxheWVyVHlwZVRyYW5zZm9ybUxheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICJ0cmFuc2Zv
cm0tbGF5ZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQbGF0
Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVdlYlRpbGVkTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMg
PDwgInRpbGVkLWxheWVyIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNh
c2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVUaWxlZEJhY2tpbmdMYXllcjoKLSAgICAgICAg
ICAgICAgICB0cyA8PCAidGlsZWQtYmFja2luZy1sYXllciI7Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlUGFnZVRpbGVk
QmFja2luZ0xheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICJwYWdlLXRpbGVkLWJhY2tpbmct
bGF5ZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBQbGF0Zm9y
bUNBTGF5ZXI6OkxheWVyVHlwZVRpbGVkQmFja2luZ1RpbGVMYXllcjoKLSAgICAgICAgICAgICAg
ICB0cyA8PCAidGlsZWQtYmFja2luZy10aWxlIjsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVSb290TGF5ZXI6Ci0gICAg
ICAgICAgICAgICAgdHMgPDwgInJvb3QtbGF5ZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZUJhY2tkcm9wTGF5ZXI6
Ci0gICAgICAgICAgICAgICAgdHMgPDwgImJhY2tkcm9wLWxheWVyIjsKLSAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGNhc2UgUGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVBVlBs
YXllckxheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICJhdi1wbGF5ZXItbGF5ZXIgKGNvbnRl
eHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CisgICAgICAg
ICAgICAgICAgdHMgPDwgIiAoY29udGV4dC1pZCAiIDw8IGNyZWF0ZWRMYXllci5ob3N0aW5nQ29u
dGV4dElEIDw8ICIpIjsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2Ug
UGxhdGZvcm1DQUxheWVyOjpMYXllclR5cGVXZWJHTExheWVyOgotICAgICAgICAgICAgICAgIHRz
IDw8ICJ3ZWItZ2wtbGF5ZXIgKGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0Nv
bnRleHRJRCA8PCAiKSI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNl
IFBsYXRmb3JtQ0FMYXllcjo6TGF5ZXJUeXBlU2hhcGVMYXllcjoKLSAgICAgICAgICAgICAgICB0
cyA8PCAic2hhcGUtbGF5ZXIiOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBQbGF0Zm9ybUNBTGF5ZXI6OkxheWVyVHlwZVNjcm9sbGluZ0xheWVyOgotICAgICAgICAg
ICAgICAgIHRzIDw8ICJzY3JvbGxpbmctbGF5ZXIiOworICAgICAgICAgICAgICAgIHRzIDw8ICIg
KGNvbnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6
TGF5ZXJUeXBlQ3VzdG9tOgotICAgICAgICAgICAgICAgIHRzIDw8ICJjdXN0b20tbGF5ZXIgKGNv
bnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlTGlnaHRTeXN0ZW1CYWNrZHJvcExheWVyOgotICAgICAgICAgICAgICAgIHRzIDw8ICJs
aWdodC1zeXN0ZW0tYmFja2Ryb3AtbGF5ZXIiOworICAgICAgICAgICAgICAgIHRzIDw8ICIgKGNv
bnRleHQtaWQgIiA8PCBjcmVhdGVkTGF5ZXIuaG9zdGluZ0NvbnRleHRJRCA8PCAiKSI7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFBsYXRmb3JtQ0FMYXllcjo6TGF5
ZXJUeXBlRGFya1N5c3RlbUJhY2tkcm9wTGF5ZXI6Ci0gICAgICAgICAgICAgICAgdHMgPDwgImRh
cmstc3lzdGVtLWJhY2tkcm9wLWxheWVyIjsKKyAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB0cyA8PCAiICIgPDwg
Y3JlYXRlZExheWVyLmxheWVySUQgPDwgIikiOwogICAgICAgICB9Ci0gICAgICAgIHRzIDw8ICIp
IjsKLSAgICAgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKICAgICB9CiAKICAgICBkdW1wQ2hhbmdl
ZExheWVycyh0cywgbV9jaGFuZ2VkTGF5ZXJQcm9wZXJ0aWVzKTsKIAogICAgIGlmICghbV9kZXN0
cm95ZWRMYXllcklEcy5pc0VtcHR5KCkpCi0gICAgICAgIGR1bXBQcm9wZXJ0eTxWZWN0b3I8R3Jh
cGhpY3NMYXllcjo6UGxhdGZvcm1MYXllcklEPj4odHMsICJkZXN0cm95ZWQtbGF5ZXJzIiwgbV9k
ZXN0cm95ZWRMYXllcklEcyk7CisgICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxWZWN0b3I8R3JhcGhp
Y3NMYXllcjo6UGxhdGZvcm1MYXllcklEPj4oImRlc3Ryb3llZC1sYXllcnMiLCBtX2Rlc3Ryb3ll
ZExheWVySURzKTsKIAotICAgIHRzIDw8ICIpXG4iOworICAgIHRzLmVuZEdyb3VwKCk7CiAKICAg
ICByZXR1cm4gdHMucmVsZWFzZSgpLnV0ZjgoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZS5oIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlLmgKaW5kZXggOTZhM2ZiYjUwMWFlOWE0NDI5NmY5NmI4OGI0NDEzYmQxZjA3NjM4Ni4u
MzE3OWI2Y2FlNDFiNDlkMTljZDhhZTIyYTFkNjBlZmVmNzk4MDZlMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVt
b3RlLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9y
bUNBQW5pbWF0aW9uUmVtb3RlLmgKQEAgLTM1LDYgKzM1LDEwIEBAIGNsYXNzIEFyZ3VtZW50RW5j
b2RlcjsKIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKIH07CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsK
K2NsYXNzIFRleHRTdHJlYW07Cit9OworCiBPQkpDX0NMQVNTIENBTGF5ZXI7CiAKIG5hbWVzcGFj
ZSBXZWJLaXQgewpAQCAtMjk3LDYgKzMwMSw5IEBAIHByaXZhdGU6CiAgICAgUHJvcGVydGllcyBt
X3Byb3BlcnRpZXM7CiB9OwogCitXZWJDb3JlOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdlYkNv
cmU6OlRleHRTdHJlYW0mLCBjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFt
ZVZhbHVlJik7CitXZWJDb3JlOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdlYkNvcmU6OlRleHRT
dHJlYW0mLCBjb25zdCBQbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpQcm9wZXJ0aWVzJik7CisK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0NBQU5JTUFU
SU9OKFdlYktpdDo6UGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZSwgaXNQbGF0Zm9ybUNBQW5pbWF0
aW9uUmVtb3RlKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvbWFjL1BsYXRmb3JtQ0FBbmltYXRpb25SZW1vdGUubW0KaW5kZXggYTlj
OTRmYmQ3NGMyZTk5YWFlZGMyMDhlZmIzZDE4YWQ1ZGNlMDE5OC4uOWQ5OGM3MGY4NzhjNzkxYzBj
NGUzNzBkZTk4ODAwODg2ZDQwMzU1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL21hYy9QbGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90
ZS5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9HcmFwaGljc0xheWVyLmg+
CiAjaW1wb3J0IDxXZWJDb3JlL1BsYXRmb3JtQ0FBbmltYXRpb25Db2NvYS5oPgogI2ltcG9ydCA8
V2ViQ29yZS9QbGF0Zm9ybUNBRmlsdGVycy5oPgorI2ltcG9ydCA8V2ViQ29yZS9UZXh0U3RyZWFt
Lmg+CiAjaW1wb3J0IDxXZWJDb3JlL1RpbWluZ0Z1bmN0aW9uLmg+CiAjaW1wb3J0IDx3dGYvQ3Vy
cmVudFRpbWUuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KQEAgLTc5OCw0ICs3OTksMTAz
IEBAIHZvaWQgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6dXBkYXRlTGF5ZXJBbmltYXRpb25z
KENBTGF5ZXIgKmxheWVyLCBSZW1vdGVMYXllCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9O
UzsKIH0KIAorVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJnRzLCBjb25zdCBQbGF0
Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlJiB2YWx1ZSkKK3sKKyAgICBzd2l0
Y2ggKHZhbHVlLmtleWZyYW1lVHlwZSgpKSB7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpOdW1iZXJLZXlUeXBlOgorICAgICAgICB0cyA8PCAibnVt
YmVyPSIgPDwgdmFsdWUubnVtYmVyVmFsdWUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQ
bGF0Zm9ybUNBQW5pbWF0aW9uUmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpDb2xvcktleVR5cGU6Cisg
ICAgICAgIHRzIDw8ICJjb2xvcj0iOworICAgICAgICB0cyA8PCB2YWx1ZS5jb2xvclZhbHVlKCk7
CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUGxhdGZvcm1DQUFuaW1hdGlvblJlbW90ZTo6S2V5
ZnJhbWVWYWx1ZTo6UG9pbnRLZXlUeXBlOgorICAgICAgICB0cyA8PCAicG9pbnQ9IjsKKyAgICAg
ICAgdHMgPDwgdmFsdWUucG9pbnRWYWx1ZSgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFBs
YXRmb3JtQ0FBbmltYXRpb25SZW1vdGU6OktleWZyYW1lVmFsdWU6OlRyYW5zZm9ybUtleVR5cGU6
CisgICAgICAgIHRzIDw8ICJ0cmFuc2Zvcm09IjsKKyAgICAgICAgdHMgPDwgdmFsdWUudHJhbnNm
b3JtVmFsdWUoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQbGF0Zm9ybUNBQW5pbWF0aW9u
UmVtb3RlOjpLZXlmcmFtZVZhbHVlOjpGaWx0ZXJLZXlUeXBlOgorICAgICAgICB0cyA8PCAiZmls
dGVyPSI7CisgICAgICAgIGlmICh2YWx1ZS5maWx0ZXJWYWx1ZSgpKQorICAgICAgICAgICAgdHMg
PDwgKnZhbHVlLmZpbHRlclZhbHVlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRzIDw8
ICJudWxsIjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiB0czsKK30KKworVGV4
dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgY29uc3QgUGxhdGZvcm1DQUFuaW1h
dGlvblJlbW90ZTo6UHJvcGVydGllcyYgYW5pbWF0aW9uKQoreworICAgIHRzIDw8ICJ0eXBlPSI7
CisgICAgdHMgPDwgYW5pbWF0aW9uLmFuaW1hdGlvblR5cGU7CisgICAgdHMgPDwgIiBrZXlQYXRo
PSI7CisgICAgdHMgPDwgYW5pbWF0aW9uLmtleVBhdGg7CisKKyAgICBpZiAoYW5pbWF0aW9uLmJl
Z2luVGltZSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJiZWdpblRpbWUiLCBhbmltYXRpb24u
YmVnaW5UaW1lKTsKKworICAgIGlmIChhbmltYXRpb24uZHVyYXRpb24pCisgICAgICAgIHRzLmR1
bXBQcm9wZXJ0eSgiZHVyYXRpb24iLCBhbmltYXRpb24uZHVyYXRpb24pOworCisgICAgaWYgKGFu
aW1hdGlvbi50aW1lT2Zmc2V0KQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRpbWVPZmZzZXQi
LCBhbmltYXRpb24udGltZU9mZnNldCk7CisKKyAgICB0cy5kdW1wUHJvcGVydHkoInJlcGVhdENv
dW50IiwgYW5pbWF0aW9uLnJlcGVhdENvdW50KTsKKworICAgIGlmIChhbmltYXRpb24uc3BlZWQg
IT0gMSkKKyAgICAgICAgdHMuZHVtcFByb3BlcnR5KCJzcGVlZCIsIGFuaW1hdGlvbi5zcGVlZCk7
CisKKyAgICB0cy5kdW1wUHJvcGVydHkoImZpbGxNb2RlIiwgYW5pbWF0aW9uLmZpbGxNb2RlKTsK
KyAgICB0cy5kdW1wUHJvcGVydHkoInZhbHVlRnVuY3Rpb24iLCBhbmltYXRpb24udmFsdWVGdW5j
dGlvbik7CisKKyAgICBpZiAoYW5pbWF0aW9uLmF1dG9SZXZlcnNlcykKKyAgICAgICAgdHMuZHVt
cFByb3BlcnR5KCJhdXRvUmV2ZXJzZXMiLCBhbmltYXRpb24uYXV0b1JldmVyc2VzKTsKKworICAg
IGlmICghYW5pbWF0aW9uLnJlbW92ZWRPbkNvbXBsZXRpb24pCisgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgicmVtb3ZlZE9uQ29tcGxldGlvbiIsIGFuaW1hdGlvbi5yZW1vdmVkT25Db21wbGV0aW9u
KTsKKworICAgIGlmIChhbmltYXRpb24uYWRkaXRpdmUpCisgICAgICAgIHRzLmR1bXBQcm9wZXJ0
eSgiYWRkaXRpdmUiLCBhbmltYXRpb24uYWRkaXRpdmUpOworCisgICAgaWYgKGFuaW1hdGlvbi5y
ZXZlcnNlVGltaW5nRnVuY3Rpb25zKQorICAgICAgICB0cy5kdW1wUHJvcGVydHkoInJldmVyc2VU
aW1pbmdGdW5jdGlvbnMiLCBhbmltYXRpb24ucmV2ZXJzZVRpbWluZ0Z1bmN0aW9ucyk7CisKKyAg
ICBpZiAoYW5pbWF0aW9uLmhhc0V4cGxpY2l0QmVnaW5UaW1lKQorICAgICAgICB0cy5kdW1wUHJv
cGVydHkoImhhc0V4cGxpY2l0QmVnaW5UaW1lIiwgYW5pbWF0aW9uLmhhc0V4cGxpY2l0QmVnaW5U
aW1lKTsKKworICAgIHRzIDw8ICJcbiI7CisgICAgdHMuaW5jcmVhc2VJbmRlbnQoKTsKKyAgICB0
cy53cml0ZUluZGVudCgpOworICAgIHRzIDw8ICIoIiA8PCAia2V5ZnJhbWVzIjsKKyAgICB0cy5p
bmNyZWFzZUluZGVudCgpOworCisgICAgc2l6ZV90IG1heEZyYW1lcyA9IHN0ZDo6bWF4KGFuaW1h
dGlvbi5rZXlWYWx1ZXMuc2l6ZSgpLCBhbmltYXRpb24ua2V5VGltZXMuc2l6ZSgpKTsKKyAgICBt
YXhGcmFtZXMgPSBzdGQ6Om1heChtYXhGcmFtZXMsIGFuaW1hdGlvbi50aW1pbmdGdW5jdGlvbnMu
c2l6ZSgpKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbWF4RnJhbWVzOyArK2kpIHsK
KyAgICAgICAgdHMgPDwgIlxuIjsKKyAgICAgICAgdHMud3JpdGVJbmRlbnQoKTsKKyAgICAgICAg
dHMgPDwgIihrZXlmcmFtZSAiIDw8IHVuc2lnbmVkKGkpOworICAgICAgICBpZiAoaSA8IGFuaW1h
dGlvbi5rZXlUaW1lcy5zaXplKCkpCisgICAgICAgICAgICB0cy5kdW1wUHJvcGVydHkoInRpbWUi
LCBhbmltYXRpb24ua2V5VGltZXNbaV0pOworCisgICAgICAgIGlmIChpIDwgYW5pbWF0aW9uLnRp
bWluZ0Z1bmN0aW9ucy5zaXplKCkgJiYgYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uc1tpXSkKKyAg
ICAgICAgICAgIHRzLmR1bXBQcm9wZXJ0eTxjb25zdCBUaW1pbmdGdW5jdGlvbiY+KCJ0aW1pbmcg
ZnVuY3Rpb24iLCAqYW5pbWF0aW9uLnRpbWluZ0Z1bmN0aW9uc1tpXSk7CisKKyAgICAgICAgaWYg
KGkgPCBhbmltYXRpb24ua2V5VmFsdWVzLnNpemUoKSkKKyAgICAgICAgICAgIHRzLmR1bXBQcm9w
ZXJ0eSgidmFsdWUiLCBhbmltYXRpb24ua2V5VmFsdWVzW2ldKTsKKworICAgICAgICB0cyA8PCAi
KSI7CisgICAgfQorCisgICAgdHMuZGVjcmVhc2VJbmRlbnQoKTsKKyAgICB0cy5kZWNyZWFzZUlu
ZGVudCgpOworCisgICAgcmV0dXJuIHRzOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>
<flag name="review"
          id="288517"
          type_id="1"
          status="+"
          setter="zalan"
    />
          </attachment>
      

    </bug>

</bugzilla>