<?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>106660</bug_id>
          
          <creation_ts>2013-01-11 06:31:13 -0800</creation_ts>
          <short_desc>MediaStream API: Update the track accessors on MediaStream to match the latest specification</short_desc>
          <delta_ts>2013-01-14 05:34:53 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>WebExposed</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>56459</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tommy Widenflycht">tommyw</reporter>
          <assigned_to name="Tommy Widenflycht">tommyw</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gtk-ews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hta</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>805225</commentid>
    <comment_count>0</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-11 06:31:13 -0800</bug_when>
    <thetext>MediaStream API: Update the track accessors on MediaStream to match the latest specification</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805228</commentid>
    <comment_count>1</comment_count>
      <attachid>182333</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-11 06:35:57 -0800</bug_when>
    <thetext>Created attachment 182333
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805230</commentid>
    <comment_count>2</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-11 06:38:18 -0800</bug_when>
    <thetext>FYI the patch size is mostly deleted files and edited tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805243</commentid>
    <comment_count>3</comment_count>
      <attachid>182333</attachid>
    <who name="kov&apos;s GTK+ EWS bot">gtk-ews</who>
    <bug_when>2013-01-11 07:04:11 -0800</bug_when>
    <thetext>Comment on attachment 182333
Patch

Attachment 182333 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/15803433</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805261</commentid>
    <comment_count>4</comment_count>
      <attachid>182343</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-11 07:30:06 -0800</bug_when>
    <thetext>Created attachment 182343
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805364</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 10:20:16 -0800</bug_when>
    <thetext>Regressions: Unexpected text-only failures (1)
  webaudio/mediastreamaudiosourcenode.html [ Failure ]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805371</commentid>
    <comment_count>6</comment_count>
      <attachid>182343</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-01-11 10:24:07 -0800</bug_when>
    <thetext>Comment on attachment 182343
Patch

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

Looks great.  I wonder if there&apos;s one more test you need to update (based on the partial EWS results).

&gt; Source/WebCore/ChangeLog:13
&gt; +        In short: the attributes audioTrack/videoTrack that returned special MediaStreamTrackLists have been
&gt; +        replaced by the functions getAudioTracks()/getVideoTracks that return standard sequences of
&gt; +        MediaStreamTracks.

Great!

&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:166
&gt; +    default:
&gt; +        ASSERT_NOT_REACHED();

We generally like to leave off the default and let the compiler tell us when we forget an enum value.

&gt; Source/WebCore/Modules/mediastream/MediaStream.h:71
&gt; +    DEFINE_ATTRIBUTE_EVENT_LISTENER(addtrack);
&gt; +    DEFINE_ATTRIBUTE_EVENT_LISTENER(removetrack);

Should these be &quot;trackadded&quot; and &quot;trackremoved&quot; ?  Those names sound more like notifications.  (I&apos;m sure you&apos;re just matching the spec here---this just jumped out at me.)

&gt; Source/WebCore/Modules/mediastream/MediaStream.h:95
&gt; +    // ContextDestructionObserver
&gt; +    virtual void contextDestroyed();

OVERRIDE?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805432</commentid>
    <comment_count>7</comment_count>
      <attachid>182343</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 11:09:10 -0800</bug_when>
    <thetext>Comment on attachment 182343
Patch

Attachment 182343 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15811373

New failing tests:
webaudio/mediastreamaudiosourcenode.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>805492</commentid>
    <comment_count>8</comment_count>
      <attachid>182343</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-11 12:02:57 -0800</bug_when>
    <thetext>Comment on attachment 182343
Patch

Attachment 182343 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15811386

New failing tests:
webaudio/mediastreamaudiosourcenode.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806165</commentid>
    <comment_count>9</comment_count>
      <attachid>182343</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-14 01:47:34 -0800</bug_when>
    <thetext>Comment on attachment 182343
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:13
&gt;&gt; +        MediaStreamTracks.
&gt; 
&gt; Great!

Indeed!

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.cpp:166
&gt;&gt; +        ASSERT_NOT_REACHED();
&gt; 
&gt; We generally like to leave off the default and let the compiler tell us when we forget an enum value.

Fixed.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.h:71
&gt;&gt; +    DEFINE_ATTRIBUTE_EVENT_LISTENER(removetrack);
&gt; 
&gt; Should these be &quot;trackadded&quot; and &quot;trackremoved&quot; ?  Those names sound more like notifications.  (I&apos;m sure you&apos;re just matching the spec here---this just jumped out at me.)

You are right in both cases; the names is not 100% ok and I am matching the spec.

&gt;&gt; Source/WebCore/Modules/mediastream/MediaStream.h:95
&gt;&gt; +    virtual void contextDestroyed();
&gt; 
&gt; OVERRIDE?

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806178</commentid>
    <comment_count>10</comment_count>
      <attachid>182528</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-14 02:05:21 -0800</bug_when>
    <thetext>Created attachment 182528
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806227</commentid>
    <comment_count>11</comment_count>
      <attachid>182543</attachid>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-14 03:58:01 -0800</bug_when>
    <thetext>Created attachment 182543
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806231</commentid>
    <comment_count>12</comment_count>
    <who name="Tommy Widenflycht">tommyw</who>
    <bug_when>2013-01-14 04:04:32 -0800</bug_when>
    <thetext>Patch updated for merge issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>806282</commentid>
    <comment_count>13</comment_count>
      <attachid>182543</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-14 05:32:27 -0800</bug_when>
    <thetext>Comment on attachment 182543
Patch for landing

Clearing flags on attachment: 182543

Committed r139611: &lt;http://trac.webkit.org/changeset/139611&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182333</attachid>
            <date>2013-01-11 06:35:57 -0800</date>
            <delta_ts>2013-01-11 07:30:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106660-20130111153259.patch</filename>
            <type>text/plain</type>
            <size>51433</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg3MGFjMzc0OGM5ODli
MmVjNjZjMzRmODZhMzFhZWU4OTczYThmOC4uZWMxYTdmMDIyN2M4NThhNTFhZjkwNDllNTA2Mzll
MWJjYjBjMDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAxLTExICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogVXBkYXRlIHRoZSB0cmFjayBhY2Nlc3NvcnMgb24gTWVkaWFTdHJlYW0gdG8gbWF0Y2gg
dGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgc3BlYyBoYXMgc2lnbmlmaWNhbnRseSBjaGFuZ2VkIGhvdyB0
cmFja3MgYXJlIGFjY2Vzc2VkIGZyb20gYSBNZWRpYVN0cmVhbToKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL2dldHVzZXJtZWRpYS5odG1sCisKKyAgICAgICAg
SW4gc2hvcnQ6IHRoZSBhdHRyaWJ1dGVzIGF1ZGlvVHJhY2svdmlkZW9UcmFjayB0aGF0IHJldHVy
bmVkIHNwZWNpYWwgTWVkaWFTdHJlYW1UcmFja0xpc3RzIGhhdmUgYmVlbgorICAgICAgICByZXBs
YWNlZCBieSB0aGUgZnVuY3Rpb25zIGdldEF1ZGlvVHJhY2tzKCkvZ2V0VmlkZW9UcmFja3MgdGhh
dCByZXR1cm4gc3RhbmRhcmQgc2VxdWVuY2VzIG9mCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2tz
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHVwZGF0ZWQgYW5kIGV4cGFuZGVkIHRvIGNvdmVy
IHBhdGNoLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjp+TWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
YWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJlbW92ZVRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpnZXRUcmFja0J5SWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnN0cmVhbUVuZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW06OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAoTWVkaWFTdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmdldEF1ZGlvVHJhY2tzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtOjpnZXRWaWRlb1RyYWNrcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRBdWRpb0NvbXBvbmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZUF1ZGlvQ29tcG9uZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkVmlkZW9Db21w
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVW
aWRlb0NvbXBvbmVudCk6CisKIDIwMTMtMDEtMTEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3JpbmcsIG1vdmUg
TmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyIHRvIE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5q
cyBhbmQgcmVuYW1lIGl0cyBwYXJlbnQgdG8gU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDFiY2U2MjExYzI2NTI4MzljNDhiNTAxNjhiMzY1MjEwYTZhNTYx
ZmEuLjY4NGI5YmU2NzM0NTgzNzg1ZTk3YjlhMGRkNmZlYmY1OWZlZDUzOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0yMjAsNyArMjIwLDYgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0V2ZW50LmlkbAotICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja0xpc3QuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0
cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9y
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxs
YmFjay5pZGwKQEAgLTg2MSw3ICs4NjAsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tMaXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFT
dHJlYW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA2NmU5ZjllZTJjY2Y2MzQyNzNhOTg4YmU3NGFiNTYyMWYx
ODEyYTUxLi4yNGFlYmFiYjQ3ZTNmNTE3YTBkYzdiZjZlMzc2Zjc1YzVhZGVjOTYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUyMSw4ICs1MjEsNiBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNr
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggXAot
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAgXAotCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrTGlzdC5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
bW9yeUluZm8uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW0uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbS5jcHAKaW5kZXggZGI3OGZkYjdmYWRkYTYxNGQ1OWI3MTMyMzQxYTg5MGE3
NjJkNjk4Ni4uMmRiZmMxMTljYTIzOTFmNGY3MDYyZDNiMGNiMjc5NDE0MWZjNjMxNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAK
QEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCiAjaW5jbHVkZSAi
TWVkaWFTdHJlYW1DZW50ZXIuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbVNvdXJjZS5oIgorI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tFdmVudC5oIgogI2luY2x1ZGUgIlVVSUQuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewpAQCAtNzgsMTEgKzc5LDExIEBAIFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwg
UGFzCiAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgYXVkaW9Tb3VyY2VzOwogICAgIE1lZGlh
U3RyZWFtU291cmNlVmVjdG9yIHZpZGVvU291cmNlczsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgc3RyZWFtLT5hdWRpb1RyYWNrcygpLT5sZW5ndGgoKTsgKytpKQotICAgICAgICBwcm9j
ZXNzVHJhY2soc3RyZWFtLT5hdWRpb1RyYWNrcygpLT5pdGVtKGkpLCBhdWRpb1NvdXJjZXMpOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtLT5tX2F1ZGlvVHJhY2tzLnNpemUoKTsg
KytpKQorICAgICAgICBwcm9jZXNzVHJhY2soc3RyZWFtLT5tX2F1ZGlvVHJhY2tzW2ldLmdldCgp
LCBhdWRpb1NvdXJjZXMpOwogCi0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW0tPnZp
ZGVvVHJhY2tzKCktPmxlbmd0aCgpOyArK2kpCi0gICAgICAgIHByb2Nlc3NUcmFjayhzdHJlYW0t
PnZpZGVvVHJhY2tzKCktPml0ZW0oaSksIHZpZGVvU291cmNlcyk7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBzdHJlYW0tPm1fdmlkZW9UcmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHBy
b2Nlc3NUcmFjayhzdHJlYW0tPm1fdmlkZW9UcmFja3NbaV0uZ2V0KCksIHZpZGVvU291cmNlcyk7
CiAKICAgICByZXR1cm4gY3JlYXRlRnJvbVNvdXJjZVZlY3RvcnMoY29udGV4dCwgYXVkaW9Tb3Vy
Y2VzLCB2aWRlb1NvdXJjZXMpOwogfQpAQCAtMTA1LDM1ICsxMDYsMTIyIEBAIFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW0+IE1lZGlhU3RyZWFtOjpjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgUGFzCiAKIE1lZGlhU3RyZWFtOjpNZWRpYVN0cmVhbShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gc3RyZWFt
RGVzY3JpcHRvcikKICAgICA6IENvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyKGNvbnRleHQpCisg
ICAgLCBtX3N0b3BwZWQoZmFsc2UpCiAgICAgLCBtX2Rlc2NyaXB0b3Ioc3RyZWFtRGVzY3JpcHRv
cikKKyAgICAsIG1fc2NoZWR1bGVkRXZlbnRUaW1lcih0aGlzLCAmTWVkaWFTdHJlYW06OnNjaGVk
dWxlZEV2ZW50VGltZXJGaXJlZCkKIHsKICAgICBtX2Rlc2NyaXB0b3ItPnNldENsaWVudCh0aGlz
KTsKIAotICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgYXVkaW9UcmFja1ZlY3RvcjsKICAgICBz
aXplX3QgbnVtYmVyT2ZBdWRpb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZBdWRpb0Nv
bXBvbmVudHMoKTsKLSAgICBhdWRpb1RyYWNrVmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJP
ZkF1ZGlvVHJhY2tzKTsKKyAgICBtX2F1ZGlvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShudW1iZXJP
ZkF1ZGlvVHJhY2tzKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mQXVkaW9U
cmFja3M7IGkrKykKLSAgICAgICAgYXVkaW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1U
cmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT5hdWRpb0Nv
bXBvbmVudChpKSkpOwotICAgIG1fYXVkaW9UcmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6
Y3JlYXRlKHRoaXMsIGF1ZGlvVHJhY2tWZWN0b3IpOworICAgICAgICBtX2F1ZGlvVHJhY2tzLmFw
cGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBtX2Rl
c2NyaXB0b3ItPmF1ZGlvQ29tcG9uZW50KGkpKSk7CiAKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVj
dG9yIHZpZGVvVHJhY2tWZWN0b3I7CiAgICAgc2l6ZV90IG51bWJlck9mVmlkZW9UcmFja3MgPSBt
X2Rlc2NyaXB0b3ItPm51bWJlck9mVmlkZW9Db21wb25lbnRzKCk7Ci0gICAgdmlkZW9UcmFja1Zl
Y3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7CisgICAgbV92aWRlb1Ry
YWNrcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZWaWRlb1RyYWNrcyk7CiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBudW1iZXJPZlZpZGVvVHJhY2tzOyBpKyspCi0gICAgICAgIHZpZGVvVHJh
Y2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2Ny
aXB0b3IsIG1fZGVzY3JpcHRvci0+dmlkZW9Db21wb25lbnQoaSkpKTsKLSAgICBtX3ZpZGVvVHJh
Y2tzID0gTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCB2aWRlb1RyYWNrVmVjdG9y
KTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRl
KGNvbnRleHQsIG1fZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkp
OwogfQogCiBNZWRpYVN0cmVhbTo6fk1lZGlhU3RyZWFtKCkKIHsKICAgICBtX2Rlc2NyaXB0b3It
PnNldENsaWVudCgwKTsKLSAgICBtX2F1ZGlvVHJhY2tzLT5kZXRhY2hPd25lcigpOwotICAgIG1f
dmlkZW9UcmFja3MtPmRldGFjaE93bmVyKCk7CiB9CiAKIE1lZGlhU3RyZWFtOjpSZWFkeVN0YXRl
IE1lZGlhU3RyZWFtOjpyZWFkeVN0YXRlKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9kZXNjcmlw
dG9yLT5lbmRlZCgpID8gRU5ERUQgOiBMSVZFOworICAgIHJldHVybiAobV9zdG9wcGVkIHx8IG1f
ZGVzY3JpcHRvci0+ZW5kZWQoKSkgPyBFTkRFRCA6IExJVkU7Cit9CisKK3ZvaWQgTWVkaWFTdHJl
YW06OmFkZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2Vw
dGlvbkNvZGUmIGVjKQoreworICAgIGlmIChyZWFkeVN0YXRlKCkgPT0gRU5ERUQpIHsKKyAgICAg
ICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAg
IGlmICghcHJwVHJhY2spIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9
IHBycFRyYWNrOworCisgICAgaWYgKGdldFRyYWNrQnlJZCh0cmFjay0+aWQoKSkpCisgICAgICAg
IHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY29tcG9uZW50ID0g
TWVkaWFTdHJlYW1Db21wb25lbnQ6OmNyZWF0ZSh0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgp
KTsKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gbmV3VHJhY2sgPSBNZWRpYVN0cmVhbVRy
YWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX2Rlc2NyaXB0b3IsIGNvbXBv
bmVudC5nZXQoKSk7CisKKyAgICBzd2l0Y2ggKGNvbXBvbmVudC0+c291cmNlKCktPnR5cGUoKSkg
eworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKKyAgICAgICAgbV9kZXNj
cmlwdG9yLT5hZGRBdWRpb0NvbXBvbmVudChjb21wb25lbnQucmVsZWFzZSgpKTsKKyAgICAgICAg
bV9hdWRpb1RyYWNrcy5hcHBlbmQobmV3VHJhY2spOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IE1lZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW86CisgICAgICAgIG1fZGVzY3JpcHRvci0+YWRk
VmlkZW9Db21wb25lbnQoY29tcG9uZW50LnJlbGVhc2UoKSk7CisgICAgICAgIG1fdmlkZW9UcmFj
a3MuYXBwZW5kKG5ld1RyYWNrKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQorCisgICAgTWVkaWFTdHJlYW1DZW50ZXI6
Omluc3RhbmNlKCkuZGlkQWRkTWVkaWFTdHJlYW1UcmFjayhtX2Rlc2NyaXB0b3IuZ2V0KCksIG5l
d1RyYWNrLT5jb21wb25lbnQoKSk7CisgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3Ry
ZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBmYWxzZSwg
ZmFsc2UsIG5ld1RyYWNrLnJlbGVhc2UoKSkpOworfQorCit2b2lkIE1lZGlhU3RyZWFtOjpyZW1v
dmVUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrICwgRXhjZXB0aW9u
Q29kZSYgZWMpCit7CisgICAgaWYgKHJlYWR5U3RhdGUoKSA9PSBFTkRFRCkgeworICAgICAgICBl
YyA9IElOVkFMSURfU1RBVEVfRVJSOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KCFwcnBUcmFjaykgeworICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJw
VHJhY2s7CisKKyAgICBzd2l0Y2ggKHRyYWNrLT5jb21wb25lbnQoKS0+c291cmNlKCktPnR5cGUo
KSkgeworICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzogeworICAgICAgICBz
aXplX3QgcG9zID0gbV9hdWRpb1RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICAgICAgaWYgKHBvcyAh
PSBub3RGb3VuZCkgeworICAgICAgICAgICAgbV9hdWRpb1RyYWNrcy5yZW1vdmUocG9zKTsKKyAg
ICAgICAgICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlQXVkaW9Db21wb25lbnQodHJhY2stPmNvbXBv
bmVudCgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBNZWRp
YVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOiB7CisgICAgICAgIHNpemVfdCBwb3MgPSBtX3ZpZGVv
VHJhY2tzLmZpbmQodHJhY2spOworICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKSB7CisgICAg
ICAgICAgICBtX3ZpZGVvVHJhY2tzLnJlbW92ZShwb3MpOworICAgICAgICAgICAgbV9kZXNjcmlw
dG9yLT5yZW1vdmVWaWRlb0NvbXBvbmVudCh0cmFjay0+Y29tcG9uZW50KCkpOworICAgICAgICB9
CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICB9CisKKyAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5k
aWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKG1fZGVzY3JpcHRvci5nZXQoKSwgdHJhY2stPmNvbXBv
bmVudCgpKTsKKyAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJh
Y2sucmVsZWFzZSgpKSk7Cit9CisKK01lZGlhU3RyZWFtVHJhY2sqIE1lZGlhU3RyZWFtOjpnZXRU
cmFja0J5SWQoU3RyaW5nIGlkKQoreworICAgIGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6
aXRlcmF0b3IgaXRlciA9IG1fYXVkaW9UcmFja3MuYmVnaW4oKTsgaXRlciAhPSBtX2F1ZGlvVHJh
Y2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAgICAgICAgaWYgKCgqaXRlciktPmlkKCkgPT0gaWQpCisg
ICAgICAgICAgICByZXR1cm4gKCppdGVyKS5nZXQoKTsKKyAgICB9CisKKyAgICBmb3IgKE1lZGlh
U3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSBtX3ZpZGVvVHJhY2tzLmJlZ2luKCk7
IGl0ZXIgIT0gbV92aWRlb1RyYWNrcy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmICgoKml0
ZXIpLT5pZCgpID09IGlkKQorICAgICAgICAgICAgcmV0dXJuICgqaXRlcikuZ2V0KCk7CisgICAg
fQorCisgICAgcmV0dXJuIDA7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06OnN0cmVhbUVuZGVkKCkK
QEAgLTE0MiwxMCArMjMwLDEyIEBAIHZvaWQgTWVkaWFTdHJlYW06OnN0cmVhbUVuZGVkKCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgbV9kZXNjcmlwdG9yLT5zZXRFbmRlZCgpOwotICAgIG1fYXVk
aW9UcmFja3MtPmRldGFjaE93bmVyKCk7Ci0gICAgbV92aWRlb1RyYWNrcy0+ZGV0YWNoT3duZXIo
KTsKKyAgICBzY2hlZHVsZURpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
ZW5kZWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7Cit9CiAKLSAgICBkaXNwYXRjaEV2ZW50KEV2ZW50
OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwordm9pZCBN
ZWRpYVN0cmVhbTo6Y29udGV4dERlc3Ryb3llZCgpCit7CisgICAgbV9zdG9wcGVkID0gdHJ1ZTsK
IH0KIAogY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbTo6aW50ZXJmYWNlTmFtZSgpIGNv
bnN0CkBAIC0xNzAsMjkgKzI2MCw3NSBAQCBFdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtOjpl
bnN1cmVFdmVudFRhcmdldERhdGEoKQogCiB2b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhNZWRp
YVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQogeworICAgIGlmIChyZWFkeVN0YXRlKCkgPT0g
RU5ERUQpCisgICAgICAgIHJldHVybjsKKwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG1fZGVzY3JpcHRvciwgY29tcG9uZW50KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBzd2l0Y2ggKGNvbXBvbmVudC0+c291cmNlKCktPnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKLSAgICAgICAgbV9hdWRpb1RyYWNrcy0+YWRkKHRyYWNr
LCBlYyk7CisgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgotICAgICAgICBtX3Zp
ZGVvVHJhY2tzLT5hZGQodHJhY2ssIGVjKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQo
dHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgQVNTRVJUKCFlYyk7CisKKyAgICBz
Y2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmFkZHRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKIH0KIAogdm9pZCBN
ZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkK
IHsKKyAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVOREVEKQorICAgICAgICByZXR1cm47CisKKyAg
ICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yKiB0cmFja3MgPSAwOwogICAgIHN3aXRjaCAoY29tcG9u
ZW50LT5zb3VyY2UoKS0+dHlwZSgpKSB7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlw
ZUF1ZGlvOgotICAgICAgICBtX2F1ZGlvVHJhY2tzLT5yZW1vdmUoY29tcG9uZW50KTsKKyAgICAg
ICAgdHJhY2tzID0gJm1fYXVkaW9UcmFja3M7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVk
aWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzoKLSAgICAgICAgbV92aWRlb1RyYWNrcy0+cmVtb3Zl
KGNvbXBvbmVudCk7CisgICAgICAgIHRyYWNrcyA9ICZtX3ZpZGVvVHJhY2tzOwogICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
CisKKyAgICBzaXplX3QgaW5kZXggPSBub3RGb3VuZDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHRyYWNrcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCgqdHJhY2tzKVtpXS0+Y29t
cG9uZW50KCkgPT0gY29tcG9uZW50KSB7CisgICAgICAgICAgICBpbmRleCA9IGk7CisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgfQogICAgIH0KKyAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
CisgICAgICAgIHJldHVybjsKKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9
ICgqdHJhY2tzKVtpbmRleF07CisgICAgdHJhY2tzLT5yZW1vdmUoaW5kZXgpOworICAgIHNjaGVk
dWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkucmVtb3ZldHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOworfQorCit2b2lkIE1l
ZGlhU3RyZWFtOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4gZXZlbnQp
Cit7CisgICAgbV9zY2hlZHVsZWRFdmVudHMuYXBwZW5kKGV2ZW50KTsKKworICAgIGlmICghbV9z
Y2hlZHVsZWRFdmVudFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIG1fc2NoZWR1bGVkRXZlbnRU
aW1lci5zdGFydE9uZVNob3QoMCk7Cit9CisKK3ZvaWQgTWVkaWFTdHJlYW06OnNjaGVkdWxlZEV2
ZW50VGltZXJGaXJlZChUaW1lcjxNZWRpYVN0cmVhbT4qKQoreworICAgIGlmIChtX3N0b3BwZWQp
CisgICAgICAgIHJldHVybjsKKworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gZXZlbnRzOwor
ICAgIGV2ZW50cy5zd2FwKG1fc2NoZWR1bGVkRXZlbnRzKTsKKworICAgIFZlY3RvcjxSZWZQdHI8
RXZlbnQ+ID46Oml0ZXJhdG9yIGl0ID0gZXZlbnRzLmJlZ2luKCk7CisgICAgZm9yICg7IGl0ICE9
IGV2ZW50cy5lbmQoKTsgKytpdCkKKyAgICAgICAgZGlzcGF0Y2hFdmVudCgoKml0KS5yZWxlYXNl
KCkpOworCisgICAgZXZlbnRzLmNsZWFyKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW0uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApp
bmRleCAwOGMwYTAxZDk0M2IzMTYxYTE2MWM1MjY0ZmZmMjhjMTQzNmY2ZjMxLi4xM2JjYTBmNGY2
ZmNmZDY3YzlhZmZhNmE0M2RjMWViYmYxNzUzM2M2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCkBAIC0zMCw4ICszMCwxMCBAQAogCiAj
aW5jbHVkZSAiQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkJhc2UuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVh
bURlc2NyaXB0b3IuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrTGlzdC5oIgorI2luY2x1
ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCkBAIC01MCw4ICs1Miw2
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4p
OwogICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtKCk7CiAKLSAgICBERUZJTkVfQVRUUklCVVRFX0VW
RU5UX0xJU1RFTkVSKGVuZGVkKTsKLQogICAgIFJlYWR5U3RhdGUgcmVhZHlTdGF0ZSgpIGNvbnN0
OwogCiAgICAgLy8gREVQUkVDQVRFRApAQCAtNTksOCArNTksMTYgQEAgcHVibGljOgogCiAgICAg
U3RyaW5nIGlkKCkgY29uc3QgeyByZXR1cm4gbV9kZXNjcmlwdG9yLT5pZCgpOyB9CiAKLSAgICBN
ZWRpYVN0cmVhbVRyYWNrTGlzdCogYXVkaW9UcmFja3MoKSB7IHJldHVybiBtX2F1ZGlvVHJhY2tz
LmdldCgpOyB9Ci0gICAgTWVkaWFTdHJlYW1UcmFja0xpc3QqIHZpZGVvVHJhY2tzKCkgeyByZXR1
cm4gbV92aWRlb1RyYWNrcy5nZXQoKTsgfQorICAgIHZvaWQgYWRkVHJhY2soUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIHZvaWQgcmVtb3ZlVHJhY2so
UGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9uQ29kZSYpOworICAgIE1lZGlh
U3RyZWFtVHJhY2sqIGdldFRyYWNrQnlJZChTdHJpbmcpOworCisgICAgTWVkaWFTdHJlYW1UcmFj
a1ZlY3RvciBnZXRBdWRpb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9UcmFja3M7IH0K
KyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGdldFZpZGVvVHJhY2tzKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb1RyYWNrczsgfQorCisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5F
UihlbmRlZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0cmFjayk7
CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmV0cmFjayk7CiAKICAg
ICB2aXJ0dWFsIGJvb2wgaXNMb2NhbCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAKQEAgLTgz
LDYgKzkxLDkgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXREYXRhKiBldmVu
dFRhcmdldERhdGEoKSBPVkVSUklERTsKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CiAKKyAgICAvLyBDb250ZXh0RGVzdHJ1Y3Rp
b25PYnNlcnZlcgorICAgIHZpcnR1YWwgdm9pZCBjb250ZXh0RGVzdHJveWVkKCk7CisKIHByaXZh
dGU6CiAgICAgLy8gRXZlbnRUYXJnZXQKICAgICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQo
KSBPVkVSUklERSB7IHJlZigpOyB9CkBAIC05MiwxMSArMTAzLDE5IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGFkZFRyYWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50KikgT1ZFUlJJREU7CiAg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50KikgT1ZFUlJJ
REU7CiAKKyAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50Pik7
CisgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVkaWFTdHJlYW0+Kik7
CisKKyAgICBib29sIG1fc3RvcHBlZDsKKwogICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKIAotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gbV9hdWRpb1RyYWNr
czsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IG1fdmlkZW9UcmFja3M7CisgICAg
TWVkaWFTdHJlYW1UcmFja1ZlY3RvciBtX2F1ZGlvVHJhY2tzOworICAgIE1lZGlhU3RyZWFtVHJh
Y2tWZWN0b3IgbV92aWRlb1RyYWNrczsKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1EZXNjcmlwdG9y
PiBtX2Rlc2NyaXB0b3I7CisKKyAgICBUaW1lcjxNZWRpYVN0cmVhbT4gbV9zY2hlZHVsZWRFdmVu
dFRpbWVyOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9zY2hlZHVsZWRFdmVudHM7CiB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCmluZGV4IDI3MzNiN2U3Njg4Zjg1YWJjYjdl
NjMwOTZkMjk1ZTNjZDRmMzRjNWMuLmQxYzdlOGI2NTgwYjdhYWI3OGNmNjJkMWYzNGNkNjAyMjU5
NjkzNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uaWRsCkBAIC0zNiwxMyArMzYsMjIgQEAKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0
ZSBET01TdHJpbmcgaWQ7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVkaWFTdHJlYW1UcmFj
a0xpc3QgYXVkaW9UcmFja3M7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJh
Y2tMaXN0IHZpZGVvVHJhY2tzOworICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFtVHJhY2s+IGdldEF1
ZGlvVHJhY2tzKCk7CisgICAgc2VxdWVuY2U8TWVkaWFTdHJlYW1UcmFjaz4gZ2V0VmlkZW9UcmFj
a3MoKTsKKworICAgIHZvaWQgYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayB0cmFjaykKKyAgICAg
ICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCByZW1vdmVUcmFjayhNZWRpYVN0cmVh
bVRyYWNrIHRyYWNrKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKKyAgICBNZWRpYVN0
cmVhbVRyYWNrIGdldFRyYWNrQnlJZChET01TdHJpbmcgdHJhY2tJZCk7CiAKICAgICBjb25zdCB1
bnNpZ25lZCBzaG9ydCBMSVZFID0gMTsKICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBFTkRFRCA9
IDI7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIHNob3J0IHJlYWR5U3RhdGU7Ci0g
ICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lbmRlZDsKKworICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9uZW5kZWQ7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25hZGR0cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOwog
CiAgICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVy
KGluIERPTVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjIwNzc4ZTc4M2JlN2I4ZTViN2RhMjMzMWE2NzIyNDk0M2JjNjVmOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nz
b24gQUIuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAq
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJh
Y2tMaXN0LmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTWVkaWFT
dHJlYW0uaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgotI2luY2x1ZGUgIk1lZGlh
U3RyZWFtVHJhY2tFdmVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFja0xpc3Q+IE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUoTWVkaWFT
dHJlYW0qIG93bmVyLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJiB0cmFja1ZlY3RvcikK
LXsKLSAgICBBU1NFUlQob3duZXIpOwotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4g
dHJhY2tMaXN0ID0gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tMaXN0KG93bmVyLCB0cmFj
a1ZlY3RvcikpOwotICAgIHRyYWNrTGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJu
IHRyYWNrTGlzdC5yZWxlYXNlKCk7Ci19Ci0KLU1lZGlhU3RyZWFtVHJhY2tMaXN0OjpNZWRpYVN0
cmVhbVRyYWNrTGlzdChNZWRpYVN0cmVhbSogb3duZXIsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3ImIHRyYWNrVmVjdG9yKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KG93bmVyLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCksIHRoaXMpCi0gICAgLCBtX293bmVyKG93bmVyKQotICAgICwgbV90
cmFja1ZlY3Rvcih0cmFja1ZlY3RvcikKLXsKLX0KLQotTWVkaWFTdHJlYW1UcmFja0xpc3Q6On5N
ZWRpYVN0cmVhbVRyYWNrTGlzdCgpCi17Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6
OmRldGFjaE93bmVyKCkKLXsKLSAgICBtX293bmVyID0gMDsKLX0KLQotdW5zaWduZWQgTWVkaWFT
dHJlYW1UcmFja0xpc3Q6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHJhY2tWZWN0
b3Iuc2l6ZSgpOwotfQotCi1NZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6
aXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV90cmFja1Zl
Y3Rvci5zaXplKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX3RyYWNrVmVjdG9y
W2luZGV4XS5nZXQoKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6YWRkKFBhc3NS
ZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQotewot
ICAgIGlmICghbV9vd25lciB8fCBtX293bmVyLT5yZWFkeVN0YXRlKCkgPT0gTWVkaWFTdHJlYW06
OkVOREVEKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBwcnBUcmFj
azsKLSAgICBpZiAoIXRyYWNrKSB7Ci0gICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAobV90cmFja1ZlY3Rvci5jb250YWlucyh0
cmFjaykpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJhY2tWZWN0b3IuYXBwZW5kKHRyYWNr
KTsKLSAgICBpZiAoIU1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZEFkZE1lZGlhU3Ry
ZWFtVHJhY2sobV9vd25lci0+ZGVzY3JpcHRvcigpLCB0cmFjay0+Y29tcG9uZW50KCkpKSB7Ci0g
ICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5hZGR0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7Ci19Ci0KLXZvaWQgTWVk
aWFTdHJlYW1UcmFja0xpc3Q6OnJlbW92ZShQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBy
cFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAoIW1fb3duZXIgfHwgbV9vd25l
ci0+cmVhZHlTdGF0ZSgpID09IE1lZGlhU3RyZWFtOjpFTkRFRCkgewotICAgICAgICBlYyA9IElO
VkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7Ci0gICAgaWYgKCF0cmFjaykgewotICAg
ICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgc2l6ZV90IGluZGV4ID0gbV90cmFja1ZlY3Rvci5maW5kKHRyYWNrKTsKLSAgICBpZiAoaW5k
ZXggPT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJhY2tWZWN0b3IucmVt
b3ZlKGluZGV4KTsKLSAgICBpZiAoIU1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFJl
bW92ZU1lZGlhU3RyZWFtVHJhY2sobV9vd25lci0+ZGVzY3JpcHRvcigpLCB0cmFjay0+Y29tcG9u
ZW50KCkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7
Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OnJlbW92ZShNZWRpYVN0cmVhbUNvbXBv
bmVudCogY29tcG9uZW50KQotewotICAgIGlmICghbV9vd25lciB8fCBtX293bmVyLT5yZWFkeVN0
YXRlKCkgPT0gTWVkaWFTdHJlYW06OkVOREVEKQotICAgICAgICByZXR1cm47Ci0KLSAgICBzaXpl
X3QgaW5kZXggPSBub3RGb3VuZDsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90cmFj
a1ZlY3Rvci5zaXplKCk7ICsraSkgewotICAgICAgICBpZiAobV90cmFja1ZlY3RvcltpXS0+Y29t
cG9uZW50KCkgPT0gY29tcG9uZW50KSB7Ci0gICAgICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChpbmRleCA9PSBub3RGb3Vu
ZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNr
ID0gbV90cmFja1ZlY3RvcltpbmRleF07Ci0gICAgbV90cmFja1ZlY3Rvci5yZW1vdmUoaW5kZXgp
OwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFJlbW92ZU1lZGlhU3RyZWFt
VHJhY2sobV9vd25lci0+ZGVzY3JpcHRvcigpLCBjb21wb25lbnQpOwotICAgIGRpc3BhdGNoRXZl
bnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNr
RXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVRyYWNr
TGlzdDo6c3RvcCgpCi17Ci0gICAgZGV0YWNoT3duZXIoKTsKLX0KLQotY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6aW50ZXJmYWNlTmFtZSgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VGb3JNZWRpYVN0cmVhbVRyYWNrTGlzdDsKLX0K
LQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVkaWFTdHJlYW1UcmFja0xpc3Q6OnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAgIHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVh
bVRyYWNrTGlzdDo6ZXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJn
ZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEqIE1lZGlhU3RyZWFtVHJhY2tMaXN0OjplbnN1
cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJF
QU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tMaXN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YTM3
YjYxYjY1NzlkMjk0NTBkYTZmMTYyYzUwMzQ2OWFkNDg3MWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQot
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
LSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRpYVN0cmVhbVRyYWNrTGlzdF9oCi0jZGVmaW5l
IE1lZGlhU3RyZWFtVHJhY2tMaXN0X2gKLQotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNp
bmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNpbmNsdWRlICJFdmVudFRhcmdldC5oIgotI2lu
Y2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFz
cyBNZWRpYVN0cmVhbVRyYWNrTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJh
Y2tMaXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVjdCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKLXB1
YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gY3JlYXRl
KE1lZGlhU3RyZWFtKiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYpOwotICAgIHZpcnR1
YWwgfk1lZGlhU3RyZWFtVHJhY2tMaXN0KCk7Ci0KLSAgICB2b2lkIGRldGFjaE93bmVyKCk7Ci0K
LSAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0ZXMgZm9yIE1lZGlhU3RyZWFtVHJhY2tMaXN0
Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7Ci0gICAgTWVkaWFTdHJlYW1UcmFjayogaXRl
bSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0KLSAgICB2b2lkIGFkZChQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7Ci0gICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0
cjxNZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwotCi0gICAgREVGSU5FX0FUVFJJ
QlVURV9FVkVOVF9MSVNURU5FUihhZGR0cmFjayk7Ci0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihyZW1vdmV0cmFjayk7Ci0KLSAgICB2b2lkIHJlbW92ZShNZWRpYVN0cmVhbUNv
bXBvbmVudCopOwotCi0gICAgLy8gQWN0aXZlRE9NT2JqZWN0Ci0gICAgdmlydHVhbCB2b2lkIHN0
b3AoKSBPVkVSUklERTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBjb25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFs
IFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBP
VkVSUklERTsKLQotICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFja0xpc3Q+Ojpy
ZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrTGlzdD46OmRlcmVmOwot
Ci1wcml2YXRlOgotICAgIE1lZGlhU3RyZWFtVHJhY2tMaXN0KE1lZGlhU3RyZWFtKiwgY29uc3Qg
TWVkaWFTdHJlYW1UcmFja1ZlY3RvciYpOwotCi0gICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0
dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmly
dHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwot
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQot
ICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFyZ2V0RGF0YTsKLQotICAgIC8vIG1fb3duZXIg
Y2FuIGJlY29tZSB6ZXJvLgotICAgIE1lZGlhU3RyZWFtKiBtX293bmVyOwotCi0gICAgTWVkaWFT
dHJlYW1UcmFja1ZlY3RvciBtX3RyYWNrVmVjdG9yOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2VuZGlmIC8vIE1lZGlh
U3RyZWFtVHJhY2tMaXN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIwOGUyYzZlNmE3OGE5Njk3M2JjZmVmYzJkYjk1Y2NiZDFjNjRlMDguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGwKKysrIC9kZXYv
bnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNLAotICAgIEluZGV4ZWRHZXR0ZXIsCi0gICAgRXZlbnRUYXJnZXQKLV0gaW50
ZXJmYWNlIE1lZGlhU3RyZWFtVHJhY2tMaXN0IHsKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5z
aWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgTWVkaWFTdHJlYW1UcmFjayBpdGVtKGluIFtJc0luZGV4
XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLQotICAgIHZvaWQgYWRkKGluIE1lZGlhU3RyZWFtVHJh
Y2sgdHJhY2spCi0gICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotICAgIHZvaWQgcmVtb3Zl
KGluIE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spCi0gICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24p
OwotCi0gICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0cmFjazsKLSAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50
ZXJmYWNlCi0gICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0g
ICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9uYWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0g
ICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2ZW50IGV2ZW50KQotICAgICAgICByYWlzZXMo
RXZlbnRFeGNlcHRpb24pOwotfTsKLQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJh
dWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5NGY2OTM0MmYxMzUwOGYwNjUxMjhlYjI3YmU4
MTA4NzJhZmJjNmQuLmY0NmFkMjBmNTAyYjc1ZjdkNGMyMGIwMWUyZTZlYWYxMWNlM2Q5NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
QEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2Rl
PiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3RyZWFtU291cmNlKE1lZAogCiAgICAgQXVkaW9T
b3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSAwOwogCi0gICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xv
Y2FsKCkgJiYgbWVkaWFTdHJlYW0tPmF1ZGlvVHJhY2tzKCktPmxlbmd0aCgpKSB7CisgICAgaWYg
KG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVkaWFTdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCku
c2l6ZSgpKSB7CiAgICAgICAgIHByb3ZpZGVyID0gZGVzdGluYXRpb24oKS0+bG9jYWxBdWRpb0lu
cHV0UHJvdmlkZXIoKTsKICAgICAgICAgZGVzdGluYXRpb24oKS0+ZW5hYmxlSW5wdXQoKTsKICAg
ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4IGVkZDRjMmQxOTg1N2IzNGJhNjhlM2M1ZWU1
YWI4MmFkYTQxZGU1YTEuLmExYmFjOWNmMWFjOGY2NzU3NzkxYWUxNTY1OTE4ZGY0NjQyYWJhYTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cGkKQEAgLTcxLDcgKzcxLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbCcsCi0gICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGwnLAogICAgICAgICAgICAg
J01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaWRsJywKICAgICAgICAg
ICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCcsCiAg
ICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNh
bGxiYWNrLmlkbCcsCkBAIC04MTQsOCArODEzLDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5oJywKLSAgICAgICAgICAgICdNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcCcsCi0gICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oJywKICAgICAgICAgICAg
ICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5oJywKICAgICAg
ICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmgnLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4KaW5kZXggZjkwYzhiYjVlMzY2
ZGJiYzQ3MmMzZjljNDc0M2EzYjg5MmRjZTRkOS4uMWI1ZmQ1ODA4ZDQ5NThjNjUzMjY4NmE3NGJl
NmNhY2JlMzEzMGNmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5Lmlu
CkBAIC0xOSw3ICsxOSw2IEBAIE1lZGlhQ29udHJvbGxlciBjb25kaXRpb25hbD1WSURFTwogTWVk
aWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09VUkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25h
bD1NRURJQV9TVFJFQU0KIE1lZGlhU3RyZWFtVHJhY2sgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFN
Ci1NZWRpYVN0cmVhbVRyYWNrTGlzdCBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQ
b3J0CiBOZXR3b3JrSW5mb0Nvbm5lY3Rpb24gY29uZGl0aW9uYWw9TkVUV09SS19JTkZPCiBOb2Rl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IGIzZDI4OTliNWE4Y2FkYmE4YTc0MmY1NDc1ZWE0
YmU5ZjNhZDgwMzUuLjE0M2ZmM2Y3MzgyODNkM2IzZTEwMjg2Y2UxNDExZjYzZDk5ZjM3OGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
RGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC02OCw5ICs2OCwyMyBAQCBwdWJsaWM6CiAKICAgICB1
bnNpZ25lZCBudW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9D
b21wb25lbnRzLnNpemUoKTsgfQogICAgIE1lZGlhU3RyZWFtQ29tcG9uZW50KiBhdWRpb0NvbXBv
bmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyByZXR1cm4gbV9hdWRpb0NvbXBvbmVudHNbaW5k
ZXhdLmdldCgpOyB9CisgICAgdm9pZCBhZGRBdWRpb0NvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlh
U3RyZWFtQ29tcG9uZW50PiBjb21wb25lbnQpIHsgbV9hdWRpb0NvbXBvbmVudHMuYXBwZW5kKGNv
bXBvbmVudCk7IH0KKyAgICB2b2lkIHJlbW92ZUF1ZGlvQ29tcG9uZW50KE1lZGlhU3RyZWFtQ29t
cG9uZW50KiBjb21wb25lbnQpCisgICAgeworICAgICAgICBzaXplX3QgcG9zID0gbV9hdWRpb0Nv
bXBvbmVudHMuZmluZChjb21wb25lbnQpOworICAgICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQor
ICAgICAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMucmVtb3ZlKHBvcyk7CisgICAgfQogCiAgICAg
dW5zaWduZWQgbnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVv
Q29tcG9uZW50cy5zaXplKCk7IH0KICAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogdmlkZW9Db21w
b25lbnQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9Db21wb25lbnRzW2lu
ZGV4XS5nZXQoKTsgfQorICAgIHZvaWQgYWRkVmlkZW9Db21wb25lbnQoUGFzc1JlZlB0cjxNZWRp
YVN0cmVhbUNvbXBvbmVudD4gY29tcG9uZW50KSB7IG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZChj
b21wb25lbnQpOyB9CisgICAgdm9pZCByZW1vdmVWaWRlb0NvbXBvbmVudChNZWRpYVN0cmVhbUNv
bXBvbmVudCogY29tcG9uZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90IHBvcyA9IG1fYXVkaW9D
b21wb25lbnRzLmZpbmQoY29tcG9uZW50KTsKKyAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkK
KyAgICAgICAgICAgIG1fYXVkaW9Db21wb25lbnRzLnJlbW92ZShwb3MpOworICAgIH0KIAogICAg
IGJvb2wgZW5kZWQoKSBjb25zdCB7IHJldHVybiBtX2VuZGVkOyB9CiAgICAgdm9pZCBzZXRFbmRl
ZCgpIHsgbV9lbmRlZCA9IHRydWU7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhOTVhYWNhZjVmZTg1ZmFlNTczZmQzMzZl
YjUyM2Q0ZGRmYjdmODM0Li44YTUyYjIwNGU0NjNmODIyNzY0MzAxYzE2ZTdiMWIwZjFmNzgyN2Rj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDEtMTEgIFRvbW15IFdpZGVuZmx5Y2h0ICA8
dG9tbXl3QGdvb2dsZS5jb20+CisKKyAgICAgICAgTWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgdGhl
IHRyYWNrIGFjY2Vzc29ycyBvbiBNZWRpYVN0cmVhbSB0byBtYXRjaCB0aGUgbGF0ZXN0IHNwZWNp
ZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwNjY2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0aW5nIGFuZCBleHBhbmRpbmcgdGVzdHMgZm9yIHRoZSBuZXcgZ2V0QXVkaW9UcmFja3Mo
KS9nZXRWaWRlb1RyYWNrcygpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tMaXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tMaXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9S
VENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3IuaHRtbDoKKyAg
ICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbDoKKwogMjAxMy0wMS0xMSAg
VnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBSZWZhY3RvcmluZywgbW92ZSBOZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgdG8gTmV0
d29ya1VJU291cmNlQ29kZVByb3ZpZGVyLmpzIGFuZCByZW5hbWUgaXRzIHBhcmVudCB0byBTaW1w
bGVXb3Jrc3BhY2VQcm92aWRlci4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4
IDI4NWZmMmNlY2FiZjdmNGQ1ZDVmNzFjOGYzMWZhMGUxODgzMDMwOTYuLjJkNTcwZjg5NjYxNjA5
Y2ExY2UwYWNkMmM4ZTZlZWRlOTE3NzQwYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVk
LnR4dApAQCAtNCwxMiArNCwxMiBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1Mg
R290IGxvY2FsIHN0cmVhbS4KLVBBU1MgbG9jYWxTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlz
IDEKLVBBU1MgbG9jYWxTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1MgbG9jYWxT
dHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBsb2NhbFN0cmVhbS5nZXRW
aWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHR5cGVvZiB3ZWJraXRNZWRpYVN0cmVhbSA9
PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShkb2N1bWVu
dCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KIFBBU1MgbmV3IHdlYmtp
dE1lZGlhU3RyZWFtKFtkb2N1bWVudF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFs
aWQgQXJyYXkgZWxlbWVudCB0eXBlLgotUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVh
bS5hdWRpb1RyYWNrc1swXSwgZG9jdW1lbnRdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJ
bnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KK1BBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtz
dHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgZG9jdW1lbnRdKSB0aHJldyBleGNlcHRpb24gVHlw
ZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KIFBBU1MgbmV3IHdlYmtpdE1lZGlh
U3RyZWFtKFtudWxsXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBl
bGVtZW50IHR5cGUuCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbdW5kZWZpbmVkXSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUuCiBQQVNT
IG5ldyB3ZWJraXRNZWRpYVN0cmVhbShudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgpAQCAtMTgsNDQgKzE4LDQ0IEBAIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCiBQ
QVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0IE1lZGlh
U3RyZWFtXSBpcyBkZWZpbmVkLgogUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAn
TWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlv
Ci1QQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIG5ld1N0
cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLmdl
dFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRlbwogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQK
IFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCiBQQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlz
ICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVk
aW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgbmV3
U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3Rl
ZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBN
ZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUg
aXMgJ01lZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5B
dWRpbwotUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBu
ZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVh
bS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8KIFBBU1MgU3RyZWFtIGNvbnN0cnVj
dGVkCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0
IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgogUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFt
ZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMg
bkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNT
IG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRlbwogUEFTUyBTdHJlYW0gY29uc3Ry
dWN0ZWQKIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCiBQQVNTIFtvYmpl
Y3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5u
YW1lIGlzICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBp
cyBuQXVkaW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BB
U1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIFN0cmVhbSBjb25z
dHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29i
amVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9y
Lm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3Ro
IGlzIG5BdWRpbwotUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbwor
UEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5l
d1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8KIFBBU1MgU3RyZWFtIGNv
bnN0cnVjdGVkCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgogUEFTUyBb
b2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgogUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0
b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5n
dGggaXMgbkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVv
CitQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1Mg
bmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRlbwogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sCmluZGV4
IDdkODRhM2VjYTlkY2EyMjk5OTQ3ODg0ZGU2OGQxNjcxMmNlNTVkODMuLjYwNjkyNWE1MDgxZTll
YTEyM2U3MjgzZGE0NTcyYjQ1OWE5Mjk3OWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sCkBAIC0zMyw4ICsz
Myw4IEBAIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShkaWN0aW9uYXJ5LCBjYWxsYmFjaykgewogZnVu
Y3Rpb24gZ290U3RyZWFtKHMpIHsKICAgICBsb2NhbFN0cmVhbSA9IHM7CiAgICAgdGVzdFBhc3Nl
ZCgnR290IGxvY2FsIHN0cmVhbS4nKTsKLSAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0uYXVkaW9U
cmFja3MubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKS5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdsb2NhbFN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpLmxlbmd0aCcsICcxJyk7CiAKICAgICBzaG91bGRCZVRydWUoInR5cGVvZiB3ZWJraXRN
ZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJyIpOwogCkBAIC00Nyw3ICs0Nyw3IEBAIGZ1bmN0aW9u
IHRlc3RDb25zdHJ1Y3RvcihzKSB7CiAgICAgc3RyZWFtID0gczsKICAgICBzaG91bGRUaHJvdygn
bmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50KScpOwogICAgIHNob3VsZFRocm93KCduZXcg
d2Via2l0TWVkaWFTdHJlYW0oW2RvY3VtZW50XSknKTsKLSAgICBzaG91bGRUaHJvdygnbmV3IHdl
YmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uYXVkaW9UcmFja3NbMF0sIGRvY3VtZW50XSknKTsKKyAg
ICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKVswXSwgZG9jdW1lbnRdKScpOwogICAgIHNob3VsZFRocm93KCduZXcgd2Via2l0TWVkaWFT
dHJlYW0oW251bGxdKScpOwogICAgIHNob3VsZFRocm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0o
W3VuZGVmaW5lZF0pJyk7CiAgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShu
dWxsKScpOwpAQCAtNTYsMTIgKzU2LDEyIEBAIGZ1bmN0aW9uIHRlc3RDb25zdHJ1Y3RvcihzKSB7
CiAgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbSgpLCAwLCAwKTsKICAgICB2
ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtdKSwgMCwgMCk7CiAKLSAgICB2ZXJp
ZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKHMpLCBzLmF1ZGlvVHJhY2tzLmxlbmd0aCwg
cy52aWRlb1RyYWNrcy5sZW5ndGgpOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFT
dHJlYW0ocyksIHMuZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgsIHMuZ2V0VmlkZW9UcmFja3MoKS5s
ZW5ndGgpOwogCi0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5hdWRp
b1RyYWNrc1swXV0pLCAxLCAwKTsKLSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtzLnZpZGVvVHJhY2tzWzBdXSksIDAsIDEpOwotICAgIHZlcmlmeVN0cmVhbShuZXcgd2Vi
a2l0TWVkaWFTdHJlYW0oW3MuYXVkaW9UcmFja3NbMF0sIHMudmlkZW9UcmFja3NbMF1dKSwgMSwg
MSk7Ci0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy52aWRlb1RyYWNr
c1swXSwgcy5hdWRpb1RyYWNrc1swXSwgcy52aWRlb1RyYWNrc1swXV0pLCAxLCAxKTsKKyAgICB2
ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmdldEF1ZGlvVHJhY2tzKClbMF1d
KSwgMSwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5nZXRW
aWRlb1RyYWNrcygpWzBdXSksIDAsIDEpOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVk
aWFTdHJlYW0oW3MuZ2V0QXVkaW9UcmFja3MoKVswXSwgcy5nZXRWaWRlb1RyYWNrcygpWzBdXSks
IDEsIDEpOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MuZ2V0Vmlk
ZW9UcmFja3MoKVswXSwgcy5nZXRBdWRpb1RyYWNrcygpWzBdLCBzLmdldFZpZGVvVHJhY2tzKClb
MF1dKSwgMSwgMSk7CiB9CiAKIGZ1bmN0aW9uIHZlcmlmeVN0cmVhbShzLCBudW1BdWRpb1RyYWNr
cywgbnVtVmlkZW9UcmFja3MpIHsKQEAgLTczLDggKzczLDggQEAgZnVuY3Rpb24gdmVyaWZ5U3Ry
ZWFtKHMsIG51bUF1ZGlvVHJhY2tzLCBudW1WaWRlb1RyYWNrcykgewogICAgIHNob3VsZEJlTm9u
TnVsbChuZXdTdHJlYW0pOwogICAgIHNob3VsZEJlRGVmaW5lZChuZXdTdHJlYW0pOwogICAgIHNo
b3VsZEJlKCJuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSIsICInTWVkaWFTdHJlYW0nIik7Ci0g
ICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnbkF1ZGlvJyk7Ci0g
ICAgc2hvdWxkQmUoJ25ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnblZpZGVvJyk7Cisg
ICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICduQXVkaW8n
KTsKKyAgICBzaG91bGRCZSgnbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJ25W
aWRlbycpOwogfQogCiBnZXRVc2VyTWVkaWEoe3ZpZGVvOnRydWUsIGF1ZGlvOnRydWV9LCBnb3RT
dHJlYW0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaHRtbAppbmRleCA3ZjViNmViN2RmZGVkNjhmYjUzODEzYzRiZGM2MWNlMGU0ZTc0ZDYx
Li5kMmY3NmFmNmM2OGQ1ZmFjODMyMjkyYjkzYzhhYjgzNGJiYjQ0NWQyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbApAQCAtNTMs
NyArNTMsNyBAQCBmdW5jdGlvbiBnb3RTdHJlYW0ocykgewogICAgIHRlc3RQYXNzZWQoJ2dldFVz
ZXJNZWRpYSBzdWNjZWVkZWQuJyk7CiAKICAgICBzdHJlYW0gPSBzOwotICAgIHRyYWNrID0gc3Ry
ZWFtLnZpZGVvVHJhY2tzWzBdOworICAgIHRyYWNrID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClb
MF07CiAKICAgICB0cmFjay5vbnVubXV0ZSA9IG9uVHJhY2tVbm11dGU7CiAgICAgdHJhY2sub25t
dXRlID0gb25UcmFja011dGU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QtZXhwZWN0ZWQudHh0CmluZGV4IDc4MDYy
MzVjYTY5NDIyZGE3ZTEzN2E2YzE2OTA0NmM3OWI0MjQyMzguLjA0ODllYmQ3YmI4YjE0YzFmZDdl
MTJjZTg1ZjZjZDhmZWE2NTVmOGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QtZXhwZWN0ZWQudHh0CkBAIC0z
LDEwICszLDEyIEBAIFRlc3RzIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGNhbGxiYWNrcy4KIE9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNTIHN0cmVhbTEuZ2V0VHJhY2tCeUlkKHRyYWNr
LmlkKS5pZCBpcyB0cmFjay5pZAorUEFTUyBzdHJlYW0yLmdldFRyYWNrQnlJZCh0cmFjay5pZCkg
aXMgbnVsbAogUEFTUyBBZGQgdHJhY2sgY2FsbGJhY2sgc3VjY2VlZGVkLgogUEFTUyBSZW1vdmUg
dHJhY2sgY2FsbGJhY2sgc3VjY2VlZGVkLgotUEFTUyBzdHJlYW0xLnZpZGVvVHJhY2tzLmFkZChz
dHJlYW0yLnZpZGVvVHJhY2tzWzBdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0
ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgotUEFTUyBzdHJlYW0xLnZpZGVvVHJhY2tzLnJlbW92
ZShzdHJlYW0yLnZpZGVvVHJhY2tzWzBdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRT
dGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgorUEFTUyBzdHJlYW0xLmFkZFRyYWNrKHN0cmVh
bTIuZ2V0VmlkZW9UcmFja3MoKVswXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3Rh
dGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mgc3RyZWFtMS5yZW1vdmVUcmFjayhzdHJl
YW0yLmdldFZpZGVvVHJhY2tzKClbMF0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0
YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaHRtbAppbmRleCA1ZDMwZjE5YmViNjIyZWY1YjYx
OGRiZmYyZDA3YmM5M2Q1ZWYwZTZhLi5iODJiZmI3OTVhMmM1ZmM4MTJlNTk0YjUxNTFmYTFlYzUz
YjU0MGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tMaXN0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrTGlzdC5odG1sCkBAIC0zMiwxOCArMzIsMTkgQEAgZnVuY3Rpb24gb25SZW1v
dmVUcmFjayhlKSB7CiAKICAgICAvLyBOb3cgdGVzdCB0aGF0IGFkZCBmYWlsZXMgd2hlbiB0aGUg
cGFyZW50IHN0cmVhbSBoYXMgYmVlbiBzdG9wcGVkLgogICAgIHN0cmVhbTEuc3RvcCgpOwotICAg
IHNob3VsZFRocm93KCdzdHJlYW0xLnZpZGVvVHJhY2tzLmFkZChzdHJlYW0yLnZpZGVvVHJhY2tz
WzBdKScpOwotICAgIHNob3VsZFRocm93KCdzdHJlYW0xLnZpZGVvVHJhY2tzLnJlbW92ZShzdHJl
YW0yLnZpZGVvVHJhY2tzWzBdKScpOworICAgIHNob3VsZFRocm93KCdzdHJlYW0xLmFkZFRyYWNr
KHN0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKVswXSknKTsKKyAgICBzaG91bGRUaHJvdygnc3RyZWFt
MS5yZW1vdmVUcmFjayhzdHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pJyk7CiAKICAgICBmaW5p
c2hKU1Rlc3QoKTsKIH0KIAogZnVuY3Rpb24gb25BZGRUcmFjayhlKSB7CiAgICAgdGVzdFBhc3Nl
ZCgnQWRkIHRyYWNrIGNhbGxiYWNrIHN1Y2NlZWRlZC4nKTsKKyAgICBldmVudCA9IGU7CiAKLSAg
ICBzdHJlYW0xLnZpZGVvVHJhY2tzLm9ucmVtb3ZldHJhY2sgPSBvblJlbW92ZVRyYWNrOworICAg
IHN0cmVhbTEub25yZW1vdmV0cmFjayA9IG9uUmVtb3ZlVHJhY2s7CiAgICAgdHJ5IHsKLSAgICAg
ICAgc3RyZWFtMS52aWRlb1RyYWNrcy5yZW1vdmUoZS50cmFjayk7CisgICAgICAgIHN0cmVhbTEu
cmVtb3ZlVHJhY2soZXZlbnQudHJhY2spOwogICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAg
ICAgICB0ZXN0RmFpbGVkKCJyZW1vdmUgdGhyZXcgYW4gZXhjZXB0aW9uLiIpOwogICAgICAgICBm
aW5pc2hKU1Rlc3QoKTsKQEAgLTUyLDExICs1MywxNCBAQCBmdW5jdGlvbiBvbkFkZFRyYWNrKGUp
IHsKIAogZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7CiAgICAgc3RyZWFtMiA9IHM7CisgICAgc3Ry
ZWFtMS5vbmFkZHRyYWNrID0gb25BZGRUcmFjazsKIAotICAgIHN0cmVhbTEudmlkZW9UcmFja3Mu
b25hZGR0cmFjayA9IG9uQWRkVHJhY2s7CisgICAgdHJhY2sgPSBzdHJlYW0xLmdldFZpZGVvVHJh
Y2tzKClbMF07CisgICAgc2hvdWxkQmUoJ3N0cmVhbTEuZ2V0VHJhY2tCeUlkKHRyYWNrLmlkKS5p
ZCcsICd0cmFjay5pZCcpOworICAgIHNob3VsZEJlTnVsbCgnc3RyZWFtMi5nZXRUcmFja0J5SWQo
dHJhY2suaWQpJyk7CiAKICAgICB0cnkgewotICAgICAgICBzdHJlYW0xLnZpZGVvVHJhY2tzLmFk
ZChzdHJlYW0yLnZpZGVvVHJhY2tzWzBdKTsKKyAgICAgICAgc3RyZWFtMS5hZGRUcmFjayhzdHJl
YW0yLmdldFZpZGVvVHJhY2tzKClbMF0pOwogICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAg
ICAgICB0ZXN0RmFpbGVkKCJhZGQgdGhyZXcgYW4gZXhjZXB0aW9uLiIpOwogICAgICAgICBmaW5p
c2hKU1Rlc3QoKTsKQEAgLTY1LDYgKzY5LDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7CiAK
IGZ1bmN0aW9uIGdvdFN0cmVhbTEocykgewogICAgIHN0cmVhbTEgPSBzOworCiAgICAgZ2V0VXNl
ck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMik7CiB9CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3Rh
dHNTZWxlY3Rvci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JU
Q1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDlhY2ZjMjJk
M2I3ZDVmMmVjN2UwNGZkZmRjZDQ4NzdiZDUzMWIzZWIuLjAwYzkwNTAwMDAxM2ZjYTdhYWJhMWIz
MmUyNTc3MjMxNDg1YWRmYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9y
LWV4cGVjdGVkLnR4dApAQCAtNiw3ICs2LDcgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIFBB
U1MgcGMgPSBuZXcgd2Via2l0UlRDUGVlckNvbm5lY3Rpb24obnVsbCkgZGlkIG5vdCB0aHJvdyBl
eGNlcHRpb24uCiBQQVNTIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdv
dFN0cmVhbSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIEdvdCBhIHN0cmVhbS4KLVBB
U1MgcGMuZ2V0U3RhdHMoc3RhdHNIYW5kbGVyMiwgcGMubG9jYWxTdHJlYW1zWzBdLnZpZGVvVHJh
Y2tzWzBdKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KK1BBU1MgcGMuZ2V0U3RhdHMoc3RhdHNI
YW5kbGVyMiwgcGMubG9jYWxTdHJlYW1zWzBdLmdldFZpZGVvVHJhY2tzKClbMF0pIGRpZCBub3Qg
dGhyb3cgZXhjZXB0aW9uLgogUEFTUyBzdGF0c0hhbmRsZXIyIHdhcyBjYWxsZWQKIFBBU1MgcmVz
dWx0Lmxlbmd0aCBpcyA+PSAxCiBQQVNTIHRpbWVzdGFtcCBpcyA+PSBzdGFydFRpbWUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3Rh
dHNTZWxlY3Rvci5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29u
bmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwKaW5kZXggNTk5ODY0YTkxM2JmMDg5MDAxNDc3ZWY0
YjU3NDM4OWVjNmUwOGE3My4uOGE3NTY1OGZkZmVlYWY2MDgzYjllNTNmZjg5NDIxODE1NDUzZjAy
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAg
ZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKICAgICBzdHJlYW0gPSBzOwogCiAgICAgcGMuYWRkU3Ry
ZWFtKHN0cmVhbSk7Ci0gICAgc2hvdWxkTm90VGhyb3coJ3BjLmdldFN0YXRzKHN0YXRzSGFuZGxl
cjIsIHBjLmxvY2FsU3RyZWFtc1swXS52aWRlb1RyYWNrc1swXSknKTsKKyAgICBzaG91bGROb3RU
aHJvdygncGMuZ2V0U3RhdHMoc3RhdHNIYW5kbGVyMiwgcGMubG9jYWxTdHJlYW1zWzBdLmdldFZp
ZGVvVHJhY2tzKClbMF0pJyk7CiB9CiAKIGZ1bmN0aW9uIHN0YXRzSGFuZGxlcjIoc3RhdHVzKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhw
ZWN0ZWQudHh0CmluZGV4IDJlMDM5NjI1ZDI4ZWVkMTQ5YTg3YWJkYTY0ZDIzMjdiZDY2NzBiNzgu
LjczOGRjMjUyMGQ5ZmZkNmYxYjI5ZmVlNTg1NzlhZjE5ODA3OTc2NjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQK
QEAgLTYsMjYgKzYsMjYgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIFBBU1MgbmF2aWdhdG9y
LndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86ZmFsc2UsIHZpZGVvOmZhbHNlfSwgZXJyb3IsIGVy
cm9yKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBOb3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2Vw
dGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSwg
Z290U3RyZWFtMSwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFt
IGdlbmVyYXRlZC4KLVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCi1QQVNTIHN0
cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAog
UEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSwgZ290U3RyZWFt
MiwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRl
ZC4KLVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAwCi1QQVNTIHN0cmVhbS52aWRl
b1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgg
aXMgMAorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBuYXZp
Z2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtMywgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVy
YXRlZC4KLVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCi1QQVNTIHN0cmVhbS52
aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25h
bDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgotUEFTUyBzdHJlYW0uYXVkaW9UcmFja3Mu
bGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0
cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRWaWRlb1Ry
YWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1
ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltd
fSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cg
ZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFjayBjYWxsZWQuCiBQQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVk
XzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86
dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNT
IFN0cmVhbSBnZW5lcmF0ZWQuCi1QQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQot
UEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLmdldEF1ZGlv
VHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKaW5kZXgg
NzZjNDAzMmRlNmUxMGZlMmIwYzFhYjFiZGJkYzllNWY1YmIzNTc5My4uNjQ5ZDllYmY4YWYzMjJk
MGQzOWVlYWI5NTIyYTJjZGJiYjNhM2ViZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlh
c3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCkBAIC0yNSw4ICsyNSw4IEBAIGZ1bmN0aW9uIGdvdFN0
cmVhbUluRXJyb3IocykgewogZnVuY3Rpb24gZ290U3RyZWFtNShzKSB7CiAgICAgc3RyZWFtID0g
czsKICAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOwotICAgIHNob3VsZEJlKCdz
dHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLnZp
ZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNr
cygpLmxlbmd0aCcsICcxJyk7CiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKQEAgLTM5LDggKzM5
LDggQEAgZnVuY3Rpb24gZXJyb3IxKCkgewogZnVuY3Rpb24gZ290U3RyZWFtNChzKSB7CiAgICAg
c3RyZWFtID0gczsKICAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOwotICAgIHNo
b3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgn
c3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5n
ZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRW
aWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKICAgICBzaG91bGROb3RUaHJvdygibmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1
cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJv
ciwgZXJyb3IxKTsiKTsKIH0KQEAgLTQ4LDggKzQ4LDggQEAgZnVuY3Rpb24gZ290U3RyZWFtNChz
KSB7CiBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKICAgICBzdHJlYW0gPSBzOwogICAgIHRlc3RQ
YXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1Ry
YWNrcy5sZW5ndGgnLCAnMScpOwotICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVu
Z3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
JywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywg
JzEnKTsKIAogICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlh
KHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJl
YW00LCBlcnJvcik7Iik7CiB9CkBAIC01Nyw4ICs1Nyw4IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbTMo
cykgewogZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7CiAgICAgc3RyZWFtID0gczsKICAgICB0ZXN0
UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOwotICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9U
cmFja3MubGVuZ3RoJywgJzAnKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxl
bmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0
aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcs
ICcxJyk7CiAKICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTMsIGVycm9yKTsiKTsKIH0KQEAg
LTY2LDggKzY2LDggQEAgZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7CiBmdW5jdGlvbiBnb3RTdHJl
YW0xKHMpIHsKICAgICBzdHJlYW0gPSBzOwogICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0
ZWQuJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOwot
ICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzAnKTsKKyAgICBzaG91
bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRC
ZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzAnKTsKIAogICAgIHNob3VsZE5v
dFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlfSwgZ290U3Ry
ZWFtMiwgZXJyb3IpOyIpCiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182343</attachid>
            <date>2013-01-11 07:30:06 -0800</date>
            <delta_ts>2013-01-14 01:47:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-106660-20130111162708.patch</filename>
            <type>text/plain</type>
            <size>52457</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NDE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg3MGFjMzc0OGM5ODli
MmVjNjZjMzRmODZhMzFhZWU4OTczYThmOC4uZWMxYTdmMDIyN2M4NThhNTFhZjkwNDllNTA2Mzll
MWJjYjBjMDg0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAxLTExICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogVXBkYXRlIHRoZSB0cmFjayBhY2Nlc3NvcnMgb24gTWVkaWFTdHJlYW0gdG8gbWF0Y2gg
dGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGUgc3BlYyBoYXMgc2lnbmlmaWNhbnRseSBjaGFuZ2VkIGhvdyB0
cmFja3MgYXJlIGFjY2Vzc2VkIGZyb20gYSBNZWRpYVN0cmVhbToKKyAgICAgICAgaHR0cDovL2Rl
di53My5vcmcvMjAxMS93ZWJydGMvZWRpdG9yL2dldHVzZXJtZWRpYS5odG1sCisKKyAgICAgICAg
SW4gc2hvcnQ6IHRoZSBhdHRyaWJ1dGVzIGF1ZGlvVHJhY2svdmlkZW9UcmFjayB0aGF0IHJldHVy
bmVkIHNwZWNpYWwgTWVkaWFTdHJlYW1UcmFja0xpc3RzIGhhdmUgYmVlbgorICAgICAgICByZXBs
YWNlZCBieSB0aGUgZnVuY3Rpb25zIGdldEF1ZGlvVHJhY2tzKCkvZ2V0VmlkZW9UcmFja3MgdGhh
dCByZXR1cm4gc3RhbmRhcmQgc2VxdWVuY2VzIG9mCisgICAgICAgIE1lZGlhU3RyZWFtVHJhY2tz
LgorCisgICAgICAgIEV4aXN0aW5nIHRlc3RzIHVwZGF0ZWQgYW5kIGV4cGFuZGVkIHRvIGNvdmVy
IHBhdGNoLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogR05VbWFrZWZp
bGUubGlzdC5hbToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlh
U3RyZWFtOjp+TWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJl
YWR5U3RhdGUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6YWRkVHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnJlbW92ZVRy
YWNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtOjpnZXRUcmFja0J5SWQpOgorICAg
ICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OnN0cmVhbUVuZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtOjpjb250ZXh0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhU3RyZWFtOjpzY2hlZHVsZURpc3BhdGNoRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVk
aWFTdHJlYW06OnNjaGVkdWxlZEV2ZW50VGltZXJGaXJlZCk6CisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oOgorICAgICAgICAoTWVkaWFTdHJlYW0pOgorICAgICAg
ICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmdldEF1ZGlvVHJhY2tzKToKKyAgICAgICAgKFdlYkNv
cmU6Ok1lZGlhU3RyZWFtOjpnZXRWaWRlb1RyYWNrcyk6CisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbS5pZGw6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oOiBSZW1vdmVkLgorICAgICAgICAqIE1vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsOiBSZW1vdmVkLgorICAgICAg
ICAqIE1vZHVsZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkF1ZGlvQ29udGV4dDo6Y3JlYXRlTWVkaWFTdHJlYW1Tb3VyY2UpOgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluOgorICAgICAgICAq
IHBsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRBdWRpb0NvbXBvbmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZUF1ZGlvQ29tcG9uZW50
KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6YWRkVmlkZW9Db21w
b25lbnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjpyZW1vdmVW
aWRlb0NvbXBvbmVudCk6CisKIDIwMTMtMDEtMTEgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0Bj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogUmVmYWN0b3JpbmcsIG1vdmUg
TmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyIHRvIE5ldHdvcmtVSVNvdXJjZUNvZGVQcm92aWRlci5q
cyBhbmQgcmVuYW1lIGl0cyBwYXJlbnQgdG8gU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CmluZGV4IDFiY2U2MjExYzI2NTI4MzljNDhiNTAxNjhiMzY1MjEwYTZhNTYx
ZmEuLjY4NGI5YmU2NzM0NTgzNzg1ZTk3YjlhMGRkNmZlYmY1OWZlZDUzOGIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CkBAIC0yMjAsNyArMjIwLDYgQEAgc2V0KFdlYkNvcmVfSURMX0ZJTEVTCiAgICAg
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsCiAgICAgTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0V2ZW50LmlkbAotICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFja0xpc3QuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0
cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9y
LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxs
YmFjay5pZGwKQEAgLTg2MSw3ICs4NjAsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAogICAgIE1vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAKLSAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtVHJhY2tMaXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFT
dHJlYW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbC5jcHAKICAg
ICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQuY3BwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQppbmRleCA2NmU5ZjllZTJjY2Y2MzQyNzNhOTg4YmU3NGFiNTYyMWYx
ODEyYTUxLi5lOWQwYzU5ODdmMzdlMmQ2NjdjM2ExZDgxNmM5MTVkZjIzYjkwYjNkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJD
b3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUyMSw4ICs1MjEsNiBAQCB3ZWJjb3JlX2J1aWx0
X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNr
LmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3Bw
IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggXAot
CURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAgXAotCURl
cml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrTGlzdC5oIFwKIAlEZXJpdmVk
U291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9X
ZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01l
bW9yeUluZm8uY3BwIFwKQEAgLTEyNDMsNyArMTI0MSw2IEBAIGRvbV9iaW5kaW5nX2lkbHMgKz0g
XAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsIFwK
IAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwgXAog
CSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuaWRs
IFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3Qu
aWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJl
YW0uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
VXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwgXApAQCAtMTkzOSw4ICsxOTM2LDYgQEAgd2ViY29y
ZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggXAotCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwIFwKLQlTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmggXAogCVNvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIFwK
IAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFt
LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1l
ZGlhRXJyb3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW0uY3BwCmluZGV4IGRiNzhmZGI3ZmFkZGE2MTRkNTliNzEzMjM0MWE4OTBhNzYy
ZDY5ODYuLjJkYmZjMTE5Y2EyMzkxZjRmNzA2MmQzYjBjYjI3OTQxNDFmYzYzMTQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCkBA
IC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIk1l
ZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1Tb3VyY2UuaCIKKyNpbmNs
dWRlICJNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCIKICNpbmNsdWRlICJVVUlELmgiCiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTc4LDExICs3OSwxMSBAQCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFt
PiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBh
cwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNlczsKICAgICBNZWRpYVN0
cmVhbVNvdXJjZVZlY3RvciB2aWRlb1NvdXJjZXM7CiAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHN0cmVhbS0+YXVkaW9UcmFja3MoKS0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgcHJvY2Vz
c1RyYWNrKHN0cmVhbS0+YXVkaW9UcmFja3MoKS0+aXRlbShpKSwgYXVkaW9Tb3VyY2VzKTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmVhbS0+bV9hdWRpb1RyYWNrcy5zaXplKCk7ICsr
aSkKKyAgICAgICAgcHJvY2Vzc1RyYWNrKHN0cmVhbS0+bV9hdWRpb1RyYWNrc1tpXS5nZXQoKSwg
YXVkaW9Tb3VyY2VzKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtLT52aWRl
b1RyYWNrcygpLT5sZW5ndGgoKTsgKytpKQotICAgICAgICBwcm9jZXNzVHJhY2soc3RyZWFtLT52
aWRlb1RyYWNrcygpLT5pdGVtKGkpLCB2aWRlb1NvdXJjZXMpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc3RyZWFtLT5tX3ZpZGVvVHJhY2tzLnNpemUoKTsgKytpKQorICAgICAgICBwcm9j
ZXNzVHJhY2soc3RyZWFtLT5tX3ZpZGVvVHJhY2tzW2ldLmdldCgpLCB2aWRlb1NvdXJjZXMpOwog
CiAgICAgcmV0dXJuIGNyZWF0ZUZyb21Tb3VyY2VWZWN0b3JzKGNvbnRleHQsIGF1ZGlvU291cmNl
cywgdmlkZW9Tb3VyY2VzKTsKIH0KQEAgLTEwNSwzNSArMTA2LDEyMiBAQCBQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFBhcwogCiBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+IHN0cmVhbURl
c2NyaXB0b3IpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZlcihjb250ZXh0KQorICAg
ICwgbV9zdG9wcGVkKGZhbHNlKQogICAgICwgbV9kZXNjcmlwdG9yKHN0cmVhbURlc2NyaXB0b3Ip
CisgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIodGhpcywgJk1lZGlhU3RyZWFtOjpzY2hlZHVs
ZWRFdmVudFRpbWVyRmlyZWQpCiB7CiAgICAgbV9kZXNjcmlwdG9yLT5zZXRDbGllbnQodGhpcyk7
CiAKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGF1ZGlvVHJhY2tWZWN0b3I7CiAgICAgc2l6
ZV90IG51bWJlck9mQXVkaW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51bWJlck9mQXVkaW9Db21w
b25lbnRzKCk7Ci0gICAgYXVkaW9UcmFja1ZlY3Rvci5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZB
dWRpb1RyYWNrcyk7CisgICAgbV9hdWRpb1RyYWNrcy5yZXNlcnZlQ2FwYWNpdHkobnVtYmVyT2ZB
dWRpb1RyYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZkF1ZGlvVHJh
Y2tzOyBpKyspCi0gICAgICAgIGF1ZGlvVHJhY2tWZWN0b3IuYXBwZW5kKE1lZGlhU3RyZWFtVHJh
Y2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+YXVkaW9Db21w
b25lbnQoaSkpKTsKLSAgICBtX2F1ZGlvVHJhY2tzID0gTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmNy
ZWF0ZSh0aGlzLCBhdWRpb1RyYWNrVmVjdG9yKTsKKyAgICAgICAgbV9hdWRpb1RyYWNrcy5hcHBl
bmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVzY3JpcHRvciwgbV9kZXNj
cmlwdG9yLT5hdWRpb0NvbXBvbmVudChpKSkpOwogCi0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3Rv
ciB2aWRlb1RyYWNrVmVjdG9yOwogICAgIHNpemVfdCBudW1iZXJPZlZpZGVvVHJhY2tzID0gbV9k
ZXNjcmlwdG9yLT5udW1iZXJPZlZpZGVvQ29tcG9uZW50cygpOwotICAgIHZpZGVvVHJhY2tWZWN0
b3IucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mVmlkZW9UcmFja3MpOworICAgIG1fdmlkZW9UcmFj
a3MucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mVmlkZW9UcmFja3MpOwogICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgbnVtYmVyT2ZWaWRlb1RyYWNrczsgaSsrKQotICAgICAgICB2aWRlb1RyYWNr
VmVjdG9yLmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlw
dG9yLCBtX2Rlc2NyaXB0b3ItPnZpZGVvQ29tcG9uZW50KGkpKSk7Ci0gICAgbV92aWRlb1RyYWNr
cyA9IE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgdmlkZW9UcmFja1ZlY3Rvcik7
CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShj
b250ZXh0LCBtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+dmlkZW9Db21wb25lbnQoaSkpKTsK
IH0KIAogTWVkaWFTdHJlYW06On5NZWRpYVN0cmVhbSgpCiB7CiAgICAgbV9kZXNjcmlwdG9yLT5z
ZXRDbGllbnQoMCk7Ci0gICAgbV9hdWRpb1RyYWNrcy0+ZGV0YWNoT3duZXIoKTsKLSAgICBtX3Zp
ZGVvVHJhY2tzLT5kZXRhY2hPd25lcigpOwogfQogCiBNZWRpYVN0cmVhbTo6UmVhZHlTdGF0ZSBN
ZWRpYVN0cmVhbTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fZGVzY3JpcHRv
ci0+ZW5kZWQoKSA/IEVOREVEIDogTElWRTsKKyAgICByZXR1cm4gKG1fc3RvcHBlZCB8fCBtX2Rl
c2NyaXB0b3ItPmVuZGVkKCkpID8gRU5ERUQgOiBMSVZFOworfQorCit2b2lkIE1lZGlhU3RyZWFt
OjphZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVOREVEKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIXBycFRyYWNrKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBw
cnBUcmFjazsKKworICAgIGlmIChnZXRUcmFja0J5SWQodHJhY2stPmlkKCkpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNvbXBvbmVudCA9IE1l
ZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUodHJhY2stPmNvbXBvbmVudCgpLT5zb3VyY2UoKSk7
CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG5ld1RyYWNrID0gTWVkaWFTdHJlYW1UcmFj
azo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9kZXNjcmlwdG9yLCBjb21wb25l
bnQuZ2V0KCkpOworCisgICAgc3dpdGNoIChjb21wb25lbnQtPnNvdXJjZSgpLT50eXBlKCkpIHsK
KyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW86CisgICAgICAgIG1fZGVzY3Jp
cHRvci0+YWRkQXVkaW9Db21wb25lbnQoY29tcG9uZW50LnJlbGVhc2UoKSk7CisgICAgICAgIG1f
YXVkaW9UcmFja3MuYXBwZW5kKG5ld1RyYWNrKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBN
ZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgorICAgICAgICBtX2Rlc2NyaXB0b3ItPmFkZFZp
ZGVvQ29tcG9uZW50KGNvbXBvbmVudC5yZWxlYXNlKCkpOworICAgICAgICBtX3ZpZGVvVHJhY2tz
LmFwcGVuZChuZXdUcmFjayk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0KKworICAgIE1lZGlhU3RyZWFtQ2VudGVyOjpp
bnN0YW5jZSgpLmRpZEFkZE1lZGlhU3RyZWFtVHJhY2sobV9kZXNjcmlwdG9yLmdldCgpLCBuZXdU
cmFjay0+Y29tcG9uZW50KCkpOworICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVh
bVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZh
bHNlLCBuZXdUcmFjay5yZWxlYXNlKCkpKTsKK30KKwordm9pZCBNZWRpYVN0cmVhbTo6cmVtb3Zl
VHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjayAsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQoreworICAgIGlmIChyZWFkeVN0YXRlKCkgPT0gRU5ERUQpIHsKKyAgICAgICAgZWMg
PSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICgh
cHJwVHJhY2spIHsKKyAgICAgICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IHBycFRy
YWNrOworCisgICAgc3dpdGNoICh0cmFjay0+Y29tcG9uZW50KCktPnNvdXJjZSgpLT50eXBlKCkp
IHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW86IHsKKyAgICAgICAgc2l6
ZV90IHBvcyA9IG1fYXVkaW9UcmFja3MuZmluZCh0cmFjayk7CisgICAgICAgIGlmIChwb3MgIT0g
bm90Rm91bmQpIHsKKyAgICAgICAgICAgIG1fYXVkaW9UcmFja3MucmVtb3ZlKHBvcyk7CisgICAg
ICAgICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZUF1ZGlvQ29tcG9uZW50KHRyYWNrLT5jb21wb25l
bnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzogeworICAgICAgICBzaXplX3QgcG9zID0gbV92aWRlb1Ry
YWNrcy5maW5kKHRyYWNrKTsKKyAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkgeworICAgICAg
ICAgICAgbV92aWRlb1RyYWNrcy5yZW1vdmUocG9zKTsKKyAgICAgICAgICAgIG1fZGVzY3JpcHRv
ci0+cmVtb3ZlVmlkZW9Db21wb25lbnQodHJhY2stPmNvbXBvbmVudCgpKTsKKyAgICAgICAgfQor
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7CisgICAgfQorCisgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlk
UmVtb3ZlTWVkaWFTdHJlYW1UcmFjayhtX2Rlc2NyaXB0b3IuZ2V0KCksIHRyYWNrLT5jb21wb25l
bnQoKSk7CisgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNr
LnJlbGVhc2UoKSkpOworfQorCitNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJh
Y2tCeUlkKFN0cmluZyBpZCkKK3sKKyAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0
ZXJhdG9yIGl0ZXIgPSBtX2F1ZGlvVHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gbV9hdWRpb1RyYWNr
cy5lbmQoKTsgKytpdGVyKSB7CisgICAgICAgIGlmICgoKml0ZXIpLT5pZCgpID09IGlkKQorICAg
ICAgICAgICAgcmV0dXJuICgqaXRlcikuZ2V0KCk7CisgICAgfQorCisgICAgZm9yIChNZWRpYVN0
cmVhbVRyYWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gbV92aWRlb1RyYWNrcy5iZWdpbigpOyBp
dGVyICE9IG1fdmlkZW9UcmFja3MuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoKCppdGVy
KS0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiAoKml0ZXIpLmdldCgpOworICAgIH0K
KworICAgIHJldHVybiAwOwogfQogCiB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgpCkBA
IC0xNDIsMTAgKzIzMCwxMiBAQCB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIG1fZGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKLSAgICBtX2F1ZGlv
VHJhY2tzLT5kZXRhY2hPd25lcigpOwotICAgIG1fdmlkZW9UcmFja3MtPmRldGFjaE93bmVyKCk7
CisgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVu
ZGVkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworfQogCi0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK3ZvaWQgTWVk
aWFTdHJlYW06OmNvbnRleHREZXN0cm95ZWQoKQoreworICAgIG1fc3RvcHBlZCA9IHRydWU7CiB9
CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUoKSBjb25z
dApAQCAtMTcwLDI5ICsyNjAsNzUgQEAgRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbTo6ZW5z
dXJlRXZlbnRUYXJnZXREYXRhKCkKIAogdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soTWVkaWFT
dHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkKIHsKKyAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVO
REVEKQorICAgICAgICByZXR1cm47CisKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJh
Y2sgPSBNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBt
X2Rlc2NyaXB0b3IsIGNvbXBvbmVudCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
c3dpdGNoIChjb21wb25lbnQtPnNvdXJjZSgpLT50eXBlKCkpIHsKICAgICBjYXNlIE1lZGlhU3Ry
ZWFtU291cmNlOjpUeXBlQXVkaW86Ci0gICAgICAgIG1fYXVkaW9UcmFja3MtPmFkZCh0cmFjaywg
ZWMpOworICAgICAgICBtX2F1ZGlvVHJhY2tzLmFwcGVuZCh0cmFjayk7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzoKLSAgICAgICAgbV92aWRl
b1RyYWNrcy0+YWRkKHRyYWNrLCBlYyk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHRy
YWNrKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIEFTU0VSVCghZWMpOworCisgICAgc2No
ZWR1bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFt
ZXMoKS5hZGR0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7CiB9CiAKIHZvaWQgTWVk
aWFTdHJlYW06OnJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCiB7
CisgICAgaWYgKHJlYWR5U3RhdGUoKSA9PSBFTkRFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
TWVkaWFTdHJlYW1UcmFja1ZlY3RvciogdHJhY2tzID0gMDsKICAgICBzd2l0Y2ggKGNvbXBvbmVu
dC0+c291cmNlKCktPnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVB
dWRpbzoKLSAgICAgICAgbV9hdWRpb1RyYWNrcy0+cmVtb3ZlKGNvbXBvbmVudCk7CisgICAgICAg
IHRyYWNrcyA9ICZtX2F1ZGlvVHJhY2tzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlh
U3RyZWFtU291cmNlOjpUeXBlVmlkZW86Ci0gICAgICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZShj
b21wb25lbnQpOworICAgICAgICB0cmFja3MgPSAmbV92aWRlb1RyYWNrczsKICAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
CisgICAgc2l6ZV90IGluZGV4ID0gbm90Rm91bmQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0cmFja3MtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgoKnRyYWNrcylbaV0tPmNvbXBv
bmVudCgpID09IGNvbXBvbmVudCkgeworICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KICAgICB9CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSAo
KnRyYWNrcylbaW5kZXhdOworICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVs
ZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbTo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQor
eworICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVuZChldmVudCk7CisKKyAgICBpZiAoIW1fc2No
ZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVu
dFRpbWVyRmlyZWQoVGltZXI8TWVkaWFTdHJlYW0+KikKK3sKKyAgICBpZiAobV9zdG9wcGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IGV2ZW50czsKKyAg
ICBldmVudHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50PiA+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBl
dmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoKCppdCkucmVsZWFzZSgp
KTsKKworICAgIGV2ZW50cy5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5k
ZXggMDhjMGEwMWQ5NDNiMzE2MWExNjFjNTI2NGZmZjI4YzE0MzZmNmYzMS4uMTNiY2EwZjRmNmZj
ZmQ2N2M5YWZmYTZhNDNkYzFlYmJmMTc1MzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMzAsOCArMzAsMTAgQEAKIAogI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja0xpc3QuaCIKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsOCArNTIsNiBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KTsK
ICAgICB2aXJ0dWFsIH5NZWRpYVN0cmVhbSgpOwogCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVO
VF9MSVNURU5FUihlbmRlZCk7Ci0KICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsK
IAogICAgIC8vIERFUFJFQ0FURUQKQEAgLTU5LDggKzU5LDE2IEBAIHB1YmxpYzoKIAogICAgIFN0
cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvci0+aWQoKTsgfQogCi0gICAgTWVk
aWFTdHJlYW1UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCkgeyByZXR1cm4gbV9hdWRpb1RyYWNrcy5n
ZXQoKTsgfQotICAgIE1lZGlhU3RyZWFtVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpIHsgcmV0dXJu
IG1fdmlkZW9UcmFja3MuZ2V0KCk7IH0KKyAgICB2b2lkIGFkZFRyYWNrKFBhc3NSZWZQdHI8TWVk
aWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZVRyYWNrKFBh
c3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBNZWRpYVN0
cmVhbVRyYWNrKiBnZXRUcmFja0J5SWQoU3RyaW5nKTsKKworICAgIE1lZGlhU3RyZWFtVHJhY2tW
ZWN0b3IgZ2V0QXVkaW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVHJhY2tzOyB9Cisg
ICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBnZXRWaWRlb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJu
IG1fdmlkZW9UcmFja3M7IH0KKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
ZW5kZWQpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkdHJhY2spOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3ZldHJhY2spOwogCiAgICAg
dmlydHVhbCBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC04Myw2
ICs5MSw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRU
YXJnZXREYXRhKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3Vy
ZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwogCisgICAgLy8gQ29udGV4dERlc3RydWN0aW9u
T2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworCiBwcml2YXRl
OgogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkg
T1ZFUlJJREUgeyByZWYoKTsgfQpAQCAtOTIsMTEgKzEwMywxOSBAQCBwcml2YXRlOgogICAgIHZp
cnR1YWwgdm9pZCBhZGRUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCopIE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCopIE9WRVJSSURF
OwogCisgICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOwor
ICAgIHZvaWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhU3RyZWFtPiopOwor
CisgICAgYm9vbCBtX3N0b3BwZWQ7CisKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdl
dERhdGE7CiAKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IG1fYXVkaW9UcmFja3M7
Ci0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tzOworICAgIE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3IgbV9hdWRpb1RyYWNrczsKKyAgICBNZWRpYVN0cmVhbVRyYWNr
VmVjdG9yIG1fdmlkZW9UcmFja3M7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4g
bV9kZXNjcmlwdG9yOworCisgICAgVGltZXI8TWVkaWFTdHJlYW0+IG1fc2NoZWR1bGVkRXZlbnRU
aW1lcjsKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fc2NoZWR1bGVkRXZlbnRzOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbAppbmRleCAyNzMzYjdlNzY4OGY4NWFiY2I3ZTYz
MDk2ZDI5NWUzY2Q0ZjM0YzVjLi5kMWM3ZThiNjU4MGI3YWFiNzhjZjYyZDFmMzRjZDYwMjI1OTY5
MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtLmlkbApAQCAtMzYsMTMgKzM2LDIyIEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
RE9NU3RyaW5nIGlkOwogCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tM
aXN0IGF1ZGlvVHJhY2tzOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNr
TGlzdCB2aWRlb1RyYWNrczsKKyAgICBzZXF1ZW5jZTxNZWRpYVN0cmVhbVRyYWNrPiBnZXRBdWRp
b1RyYWNrcygpOworICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFtVHJhY2s+IGdldFZpZGVvVHJhY2tz
KCk7CisKKyAgICB2b2lkIGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spCisgICAgICAg
IHJhaXNlcyhET01FeGNlcHRpb24pOworICAgIHZvaWQgcmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1U
cmFjayB0cmFjaykKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgTWVkaWFTdHJl
YW1UcmFjayBnZXRUcmFja0J5SWQoRE9NU3RyaW5nIHRyYWNrSWQpOwogCiAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgTElWRSA9IDE7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU5ERUQgPSAy
OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwotICAg
ICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZW5kZWQ7CisKKyAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmVuZGVkOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
YWRkdHJhY2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKIAog
ICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGIyMDc3OGU3ODNiZTdiOGU1YjdkYTIzMzFhNjcyMjQ5NDNiYzY1ZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKKysrIC9kZXYv
bnVsbApAQCAtMSwxNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29u
IEFCLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
Ci0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNr
TGlzdC5oIgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVN0
cmVhbVRyYWNrRXZlbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2tMaXN0PiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKE1lZGlhU3Ry
ZWFtKiBvd25lciwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYgdHJhY2tWZWN0b3IpCi17
Ci0gICAgQVNTRVJUKG93bmVyKTsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRy
YWNrTGlzdCA9IGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrTGlzdChvd25lciwgdHJhY2tW
ZWN0b3IpKTsKLSAgICB0cmFja0xpc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiB0
cmFja0xpc3QucmVsZWFzZSgpOwotfQotCi1NZWRpYVN0cmVhbVRyYWNrTGlzdDo6TWVkaWFTdHJl
YW1UcmFja0xpc3QoTWVkaWFTdHJlYW0qIG93bmVyLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVj
dG9yJiB0cmFja1ZlY3RvcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChvd25lci0+c2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCgpLCB0aGlzKQotICAgICwgbV9vd25lcihvd25lcikKLSAgICAsIG1fdHJh
Y2tWZWN0b3IodHJhY2tWZWN0b3IpCi17Ci19Ci0KLU1lZGlhU3RyZWFtVHJhY2tMaXN0Ojp+TWVk
aWFTdHJlYW1UcmFja0xpc3QoKQotewotfQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tMaXN0Ojpk
ZXRhY2hPd25lcigpCi17Ci0gICAgbV9vd25lciA9IDA7Ci19Ci0KLXVuc2lnbmVkIE1lZGlhU3Ry
ZWFtVHJhY2tMaXN0OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3RyYWNrVmVjdG9y
LnNpemUoKTsKLX0KLQotTWVkaWFTdHJlYW1UcmFjayogTWVkaWFTdHJlYW1UcmFja0xpc3Q6Oml0
ZW0odW5zaWduZWQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgaWYgKGluZGV4ID49IG1fdHJhY2tWZWN0
b3Iuc2l6ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV90cmFja1ZlY3Rvcltp
bmRleF0uZ2V0KCk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmFkZChQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBpZiAoIW1fb3duZXIgfHwgbV9vd25lci0+cmVhZHlTdGF0ZSgpID09IE1lZGlhU3RyZWFtOjpF
TkRFRCkgewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7
Ci0gICAgaWYgKCF0cmFjaykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fdHJhY2tWZWN0b3IuY29udGFpbnModHJh
Y2spKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RyYWNrVmVjdG9yLmFwcGVuZCh0cmFjayk7
Ci0gICAgaWYgKCFNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRBZGRNZWRpYVN0cmVh
bVRyYWNrKG1fb3duZXItPmRlc2NyaXB0b3IoKSwgdHJhY2stPmNvbXBvbmVudCgpKSkgewotICAg
ICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwotfQotCi12b2lkIE1lZGlh
U3RyZWFtVHJhY2tMaXN0OjpyZW1vdmUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBU
cmFjaywgRXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFtX293bmVyIHx8IG1fb3duZXIt
PnJlYWR5U3RhdGUoKSA9PSBNZWRpYVN0cmVhbTo6RU5ERUQpIHsKLSAgICAgICAgZWMgPSBJTlZB
TElEX1NUQVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiB0cmFjayA9IHBycFRyYWNrOwotICAgIGlmICghdHJhY2spIHsKLSAgICAg
ICAgZWMgPSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAg
IHNpemVfdCBpbmRleCA9IG1fdHJhY2tWZWN0b3IuZmluZCh0cmFjayk7Ci0gICAgaWYgKGluZGV4
ID09IG5vdEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RyYWNrVmVjdG9yLnJlbW92
ZShpbmRleCk7Ci0gICAgaWYgKCFNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRSZW1v
dmVNZWRpYVN0cmVhbVRyYWNrKG1fb3duZXItPmRlc2NyaXB0b3IoKSwgdHJhY2stPmNvbXBvbmVu
dCgpKSkgewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47
Ci0gICAgfQotCi0gICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0
ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwot
fQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpyZW1vdmUoTWVkaWFTdHJlYW1Db21wb25l
bnQqIGNvbXBvbmVudCkKLXsKLSAgICBpZiAoIW1fb3duZXIgfHwgbV9vd25lci0+cmVhZHlTdGF0
ZSgpID09IE1lZGlhU3RyZWFtOjpFTkRFRCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90
IGluZGV4ID0gbm90Rm91bmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdHJhY2tW
ZWN0b3Iuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fdHJhY2tWZWN0b3JbaV0tPmNvbXBv
bmVudCgpID09IGNvbXBvbmVudCkgewotICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9
IG1fdHJhY2tWZWN0b3JbaW5kZXhdOwotICAgIG1fdHJhY2tWZWN0b3IucmVtb3ZlKGluZGV4KTsK
LSAgICBNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRSZW1vdmVNZWRpYVN0cmVhbVRy
YWNrKG1fb3duZXItPmRlc2NyaXB0b3IoKSwgY29tcG9uZW50KTsKLSAgICBkaXNwYXRjaEV2ZW50
KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2
ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xp
c3Q6OnN0b3AoKQotewotICAgIGRldGFjaE93bmVyKCk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAotewotICAgIHJl
dHVybiBldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVkaWFTdHJlYW1UcmFja0xpc3Q7Ci19Ci0K
LVNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogTWVkaWFTdHJlYW1U
cmFja0xpc3Q6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0
RGF0YTsKLX0KLQotRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6ZW5zdXJl
RXZlbnRUYXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFN
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrTGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWEzN2I2
MWI2NTc5ZDI5NDUwZGE2ZjE2MmM1MDM0NjlhZDQ4NzFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0g
KiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMK
LSAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNpZm5kZWYgTWVkaWFTdHJlYW1UcmFja0xpc3RfaAotI2RlZmluZSBN
ZWRpYVN0cmVhbVRyYWNrTGlzdF9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5j
bHVkZSAiQWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNs
dWRlICJNZWRpYVN0cmVhbVRyYWNrLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
TWVkaWFTdHJlYW1UcmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNr
TGlzdD4sIHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7Ci1wdWJs
aWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IGNyZWF0ZShN
ZWRpYVN0cmVhbSosIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKLSAgICB2aXJ0dWFs
IH5NZWRpYVN0cmVhbVRyYWNrTGlzdCgpOwotCi0gICAgdm9pZCBkZXRhY2hPd25lcigpOwotCi0g
ICAgLy8gRE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBNZWRpYVN0cmVhbVRyYWNrTGlzdAot
ICAgIHVuc2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIE1lZGlhU3RyZWFtVHJhY2sqIGl0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0OwotCi0gICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbVRyYWNrPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIERFRklORV9BVFRSSUJV
VEVfRVZFTlRfTElTVEVORVIoYWRkdHJhY2spOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRf
TElTVEVORVIocmVtb3ZldHJhY2spOwotCi0gICAgdm9pZCByZW1vdmUoTWVkaWFTdHJlYW1Db21w
b25lbnQqKTsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZpcnR1YWwgdm9pZCBzdG9w
KCkgT1ZFUlJJREU7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgY29uc3QgQXRv
bWljU3RyaW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZF
UlJJREU7Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tMaXN0Pjo6cmVm
OwotICAgIHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFja0xpc3Q+OjpkZXJlZjsKLQot
cHJpdmF0ZToKLSAgICBNZWRpYVN0cmVhbVRyYWNrTGlzdChNZWRpYVN0cmVhbSosIGNvbnN0IE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVh
bCBFdmVudFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1
YWwgRXZlbnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAg
ICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0KLSAgICAvLyBtX293bmVyIGNh
biBiZWNvbWUgemVyby4KLSAgICBNZWRpYVN0cmVhbSogbV9vd25lcjsKLQotICAgIE1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3IgbV90cmFja1ZlY3RvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBNZWRpYVN0
cmVhbVRyYWNrTGlzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyMDhlMmM2ZTZhNzhhOTY5NzNiY2ZlZmMyZGI5NWNjYmQxYzY0ZTA4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCisrKyAvZGV2L251
bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1F
RElBX1NUUkVBTSwKLSAgICBJbmRleGVkR2V0dGVyLAotICAgIEV2ZW50VGFyZ2V0Ci1dIGludGVy
ZmFjZSBNZWRpYVN0cmVhbVRyYWNrTGlzdCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2ln
bmVkIGxvbmcgbGVuZ3RoOwotICAgIE1lZGlhU3RyZWFtVHJhY2sgaXRlbShpbiBbSXNJbmRleF0g
dW5zaWduZWQgbG9uZyBpbmRleCk7Ci0KLSAgICB2b2lkIGFkZChpbiBNZWRpYVN0cmVhbVRyYWNr
IHRyYWNrKQotICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICB2b2lkIHJlbW92ZShp
biBNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKQotICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
LQotICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7Ci0gICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKLQotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVy
ZmFjZQotICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAg
IHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAg
IGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKLSAgICAgICAgcmFpc2VzKEV2
ZW50RXhjZXB0aW9uKTsKLX07Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcAppbmRleCA5OTRmNjkzNDJmMTM1MDhmMDY1MTI4ZWIyN2JlODEw
ODcyYWZiYzZkLi5mNDZhZDIwZjUwMmI3NWY3ZDRjMjBiMDFlMmU2ZWFmMTFjZTNkOTU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBA
IC0zOTUsNyArMzk1LDcgQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4g
QXVkaW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWQKIAogICAgIEF1ZGlvU291
cmNlUHJvdmlkZXIqIHByb3ZpZGVyID0gMDsKIAotICAgIGlmIChtZWRpYVN0cmVhbS0+aXNMb2Nh
bCgpICYmIG1lZGlhU3RyZWFtLT5hdWRpb1RyYWNrcygpLT5sZW5ndGgoKSkgeworICAgIGlmICht
ZWRpYVN0cmVhbS0+aXNMb2NhbCgpICYmIG1lZGlhU3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpLnNp
emUoKSkgewogICAgICAgICBwcm92aWRlciA9IGRlc3RpbmF0aW9uKCktPmxvY2FsQXVkaW9JbnB1
dFByb3ZpZGVyKCk7CiAgICAgICAgIGRlc3RpbmF0aW9uKCktPmVuYWJsZUlucHV0KCk7CiAgICAg
fSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBlZGQ0YzJkMTk4NTdiMzRiYTY4ZTNjNWVlNWFi
ODJhZGE0MWRlNWExLi5hMWJhYzljZjFhYzhmNjc1Nzc5MWFlMTU2NTkxOGRmNDY0MmFiYWE2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCkBAIC03MSw3ICs3MSw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwnLAotICAgICAgICAgICAgJ01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsJywKICAgICAgICAgICAgICdN
b2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmlkbCcsCiAgICAgICAgICAg
ICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwnLAogICAg
ICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxs
YmFjay5pZGwnLApAQCAtODE0LDggKzgxMyw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCcsCi0gICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAnLAotICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCcsCiAgICAgICAg
ICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oJywKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGY5MGM4YmI1ZTM2NmRi
YmM0NzJjM2Y5YzQ3NDNhM2I4OTJkY2U0ZDkuLjFiNWZkNTgwOGQ0OTU4YzY1MzI2ODZhNzRiZTZj
YWNiZTMxMzBjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpA
QCAtMTksNyArMTksNiBAQCBNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlh
U291cmNlIGNvbmRpdGlvbmFsPU1FRElBX1NPVVJDRQogTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9
TUVESUFfU1RSRUFNCiBNZWRpYVN0cmVhbVRyYWNrIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQot
TWVkaWFTdHJlYW1UcmFja0xpc3QgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9y
dAogTmV0d29ya0luZm9Db25uZWN0aW9uIGNvbmRpdGlvbmFsPU5FVFdPUktfSU5GTwogTm9kZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1EZXNjcmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbURlc2NyaXB0b3IuaAppbmRleCBiM2QyODk5YjVhOGNhZGJhOGE3NDJmNTQ3NWVhNGJl
OWYzYWQ4MDM1Li4xNDNmZjNmNzM4MjgzZDNiM2UxMDI4NmNlMTQxMWY2M2Q5OWYzNzhhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURl
c2NyaXB0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbURlc2NyaXB0b3IuaApAQCAtNjgsOSArNjgsMjMgQEAgcHVibGljOgogCiAgICAgdW5z
aWduZWQgbnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29t
cG9uZW50cy5zaXplKCk7IH0KICAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogYXVkaW9Db21wb25l
bnQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db21wb25lbnRzW2luZGV4
XS5nZXQoKTsgfQorICAgIHZvaWQgYWRkQXVkaW9Db21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0
cmVhbUNvbXBvbmVudD4gY29tcG9uZW50KSB7IG1fYXVkaW9Db21wb25lbnRzLmFwcGVuZChjb21w
b25lbnQpOyB9CisgICAgdm9pZCByZW1vdmVBdWRpb0NvbXBvbmVudChNZWRpYVN0cmVhbUNvbXBv
bmVudCogY29tcG9uZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90IHBvcyA9IG1fYXVkaW9Db21w
b25lbnRzLmZpbmQoY29tcG9uZW50KTsKKyAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAg
ICAgICAgICAgIG1fYXVkaW9Db21wb25lbnRzLnJlbW92ZShwb3MpOworICAgIH0KIAogICAgIHVu
c2lnbmVkIG51bWJlck9mVmlkZW9Db21wb25lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Nv
bXBvbmVudHMuc2l6ZSgpOyB9CiAgICAgTWVkaWFTdHJlYW1Db21wb25lbnQqIHZpZGVvQ29tcG9u
ZW50KHVuc2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZpZGVvQ29tcG9uZW50c1tpbmRl
eF0uZ2V0KCk7IH0KKyAgICB2b2lkIGFkZFZpZGVvQ29tcG9uZW50KFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1Db21wb25lbnQ+IGNvbXBvbmVudCkgeyBtX3ZpZGVvQ29tcG9uZW50cy5hcHBlbmQoY29t
cG9uZW50KTsgfQorICAgIHZvaWQgcmVtb3ZlVmlkZW9Db21wb25lbnQoTWVkaWFTdHJlYW1Db21w
b25lbnQqIGNvbXBvbmVudCkKKyAgICB7CisgICAgICAgIHNpemVfdCBwb3MgPSBtX2F1ZGlvQ29t
cG9uZW50cy5maW5kKGNvbXBvbmVudCk7CisgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisg
ICAgICAgICAgICBtX2F1ZGlvQ29tcG9uZW50cy5yZW1vdmUocG9zKTsKKyAgICB9CiAKICAgICBi
b29sIGVuZGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmRlZDsgfQogICAgIHZvaWQgc2V0RW5kZWQo
KSB7IG1fZW5kZWQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTk1YWFjYWY1ZmU4NWZhZTU3M2ZkMzM2ZWI1
MjNkNGRkZmI3ZjgzNC4uOGE1MmIyMDRlNDYzZjgyMjc2NDMwMWMxNmU3YjFiMGYxZjc4MjdkYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDEzLTAxLTExICBUb21teSBXaWRlbmZseWNodCAgPHRv
bW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIHRoZSB0
cmFjayBhY2Nlc3NvcnMgb24gTWVkaWFTdHJlYW0gdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBV
cGRhdGluZyBhbmQgZXhwYW5kaW5nIHRlc3RzIGZvciB0aGUgbmV3IGdldEF1ZGlvVHJhY2tzKCkv
Z2V0VmlkZW9UcmFja3MoKS4KKworICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrLmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrTGlzdC1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9N
ZWRpYVN0cmVhbVRyYWNrTGlzdC5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRD
UGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWw6CisgICAg
ICAgICogZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0OgorICAgICAg
ICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWw6CisKIDIwMTMtMDEtMTEgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogUmVmYWN0b3JpbmcsIG1vdmUgTmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyIHRvIE5ldHdv
cmtVSVNvdXJjZUNvZGVQcm92aWRlci5qcyBhbmQgcmVuYW1lIGl0cyBwYXJlbnQgdG8gU2ltcGxl
V29ya3NwYWNlUHJvdmlkZXIuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCAy
ODVmZjJjZWNhYmY3ZjRkNWQ1ZjcxYzhmMzFmYTBlMTg4MzAzMDk2Li4yZDU3MGY4OTY2MTYwOWNh
MWNlMGFjZDJjOGU2ZWVkZTkxNzc0MGM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50
eHQKQEAgLTQsMTIgKzQsMTIgQEAgT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIEdv
dCBsb2NhbCBzdHJlYW0uCi1QQVNTIGxvY2FsU3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAx
Ci1QQVNTIGxvY2FsU3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIGxvY2FsU3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1MgbG9jYWxTdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyB0eXBlb2Ygd2Via2l0TWVkaWFTdHJlYW0gPT09
ICdmdW5jdGlvbicgaXMgdHJ1ZQogUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oZG9jdW1lbnQp
IHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBQQVNTIG5ldyB3ZWJraXRN
ZWRpYVN0cmVhbShbZG9jdW1lbnRdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlk
IEFycmF5IGVsZW1lbnQgdHlwZS4KLVBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0u
YXVkaW9UcmFja3NbMF0sIGRvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52
YWxpZCBBcnJheSBlbGVtZW50IHR5cGUuCitQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGRvY3VtZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVF
cnJvcjogSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUuCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0
cmVhbShbbnVsbF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQgQXJyYXkgZWxl
bWVudCB0eXBlLgogUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3VuZGVmaW5lZF0pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlLgogUEFTUyBu
ZXcgd2Via2l0TWVkaWFTdHJlYW0obnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlw
ZSBlcnJvci4KQEAgLTE4LDQ0ICsxOCw0NCBAQCBQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFT
UyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0
cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01l
ZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbwot
UEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBuZXdTdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVhbS5nZXRW
aWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8KIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCiBQ
QVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0IE1lZGlh
U3RyZWFtXSBpcyBkZWZpbmVkLgogUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAn
TWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlv
Ci1QQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIG5ld1N0
cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLmdl
dFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRlbwogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQK
IFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCiBQQVNTIFtvYmplY3QgTWVk
aWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlz
ICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVk
aW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgbmV3
U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3Rl
ZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBN
ZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUg
aXMgJ01lZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5B
dWRpbwotUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBu
ZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVh
bS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8KIFBBU1MgU3RyZWFtIGNvbnN0cnVj
dGVkCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0
IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgogUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFt
ZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMg
bkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNT
IG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRlbwogUEFTUyBTdHJlYW0gY29uc3Ry
dWN0ZWQKIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgbm9uLW51bGwuCiBQQVNTIFtvYmpl
Y3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQQVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5u
YW1lIGlzICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBp
cyBuQXVkaW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BB
U1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdT
dHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZpZGVvCiBQQVNTIFN0cmVhbSBjb25z
dHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29i
amVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9y
Lm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3Ro
IGlzIG5BdWRpbwotUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbwor
UEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5l
d1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8KIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAppbmRleCA3
ZDg0YTNlY2E5ZGNhMjI5OTk0Nzg4NGRlNjhkMTY3MTJjZTU1ZDgzLi42MDY5MjVhNTA4MWU5ZWEx
MjNlNzI4M2RhNDU3MmI0NTlhOTI5NzlkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3IuaHRtbApAQCAtMzMsOCArMzMs
OCBAQCBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGljdGlvbmFyeSwgY2FsbGJhY2spIHsKIGZ1bmN0
aW9uIGdvdFN0cmVhbShzKSB7CiAgICAgbG9jYWxTdHJlYW0gPSBzOwogICAgIHRlc3RQYXNzZWQo
J0dvdCBsb2NhbCBzdHJlYW0uJyk7Ci0gICAgc2hvdWxkQmUoJ2xvY2FsU3RyZWFtLmF1ZGlvVHJh
Y2tzLmxlbmd0aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ2xvY2FsU3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ2xvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tz
KCkubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnbG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGgnLCAnMScpOwogCiAgICAgc2hvdWxkQmVUcnVlKCJ0eXBlb2Ygd2Via2l0TWVk
aWFTdHJlYW0gPT09ICdmdW5jdGlvbiciKTsKIApAQCAtNDcsNyArNDcsNyBAQCBmdW5jdGlvbiB0
ZXN0Q29uc3RydWN0b3IocykgewogICAgIHN0cmVhbSA9IHM7CiAgICAgc2hvdWxkVGhyb3coJ25l
dyB3ZWJraXRNZWRpYVN0cmVhbShkb2N1bWVudCknKTsKICAgICBzaG91bGRUaHJvdygnbmV3IHdl
YmtpdE1lZGlhU3RyZWFtKFtkb2N1bWVudF0pJyk7Ci0gICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJr
aXRNZWRpYVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJhY2tzWzBdLCBkb2N1bWVudF0pJyk7CisgICAg
c2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmdldEF1ZGlvVHJhY2tz
KClbMF0sIGRvY3VtZW50XSknKTsKICAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtudWxsXSknKTsKICAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1
bmRlZmluZWRdKScpOwogICAgIHNob3VsZFRocm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0obnVs
bCknKTsKQEAgLTU2LDEyICs1NiwxMiBAQCBmdW5jdGlvbiB0ZXN0Q29uc3RydWN0b3Iocykgewog
ICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oKSwgMCwgMCk7CiAgICAgdmVy
aWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbXSksIDAsIDApOwogCi0gICAgdmVyaWZ5
U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShzKSwgcy5hdWRpb1RyYWNrcy5sZW5ndGgsIHMu
dmlkZW9UcmFja3MubGVuZ3RoKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKHMpLCBzLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoLCBzLmdldFZpZGVvVHJhY2tzKCkubGVu
Z3RoKTsKIAotICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MuYXVkaW9U
cmFja3NbMF1dKSwgMSwgMCk7Ci0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVh
bShbcy52aWRlb1RyYWNrc1swXV0pLCAwLCAxKTsKLSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtp
dE1lZGlhU3RyZWFtKFtzLmF1ZGlvVHJhY2tzWzBdLCBzLnZpZGVvVHJhY2tzWzBdXSksIDEsIDEp
OwotICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MudmlkZW9UcmFja3Nb
MF0sIHMuYXVkaW9UcmFja3NbMF0sIHMudmlkZW9UcmFja3NbMF1dKSwgMSwgMSk7CisgICAgdmVy
aWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy5nZXRBdWRpb1RyYWNrcygpWzBdXSks
IDEsIDApOworICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MuZ2V0Vmlk
ZW9UcmFja3MoKVswXV0pLCAwLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlh
U3RyZWFtKFtzLmdldEF1ZGlvVHJhY2tzKClbMF0sIHMuZ2V0VmlkZW9UcmFja3MoKVswXV0pLCAx
LCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmdldFZpZGVv
VHJhY2tzKClbMF0sIHMuZ2V0QXVkaW9UcmFja3MoKVswXSwgcy5nZXRWaWRlb1RyYWNrcygpWzBd
XSksIDEsIDEpOwogfQogCiBmdW5jdGlvbiB2ZXJpZnlTdHJlYW0ocywgbnVtQXVkaW9UcmFja3Ms
IG51bVZpZGVvVHJhY2tzKSB7CkBAIC03Myw4ICs3Myw4IEBAIGZ1bmN0aW9uIHZlcmlmeVN0cmVh
bShzLCBudW1BdWRpb1RyYWNrcywgbnVtVmlkZW9UcmFja3MpIHsKICAgICBzaG91bGRCZU5vbk51
bGwobmV3U3RyZWFtKTsKICAgICBzaG91bGRCZURlZmluZWQobmV3U3RyZWFtKTsKICAgICBzaG91
bGRCZSgibmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUiLCAiJ01lZGlhU3RyZWFtJyIpOwotICAg
IHNob3VsZEJlKCduZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJ25BdWRpbycpOwotICAg
IHNob3VsZEJlKCduZXdTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJ25WaWRlbycpOworICAg
IHNob3VsZEJlKCduZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnbkF1ZGlvJyk7
CisgICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICduVmlk
ZW8nKTsKIH0KIAogZ2V0VXNlck1lZGlhKHt2aWRlbzp0cnVlLCBhdWRpbzp0cnVlfSwgZ290U3Ry
ZWFtKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrLmh0bWwKaW5kZXggN2Y1YjZlYjdkZmRlZDY4ZmI1MzgxM2M0YmRjNjFjZTBlNGU3NGQ2MS4u
ZDJmNzZhZjZjNjhkNWZhYzgzMjI5MmI5M2M4YWI4MzRiYmI0NDVkMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwKQEAgLTUzLDcg
KzUzLDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKICAgICB0ZXN0UGFzc2VkKCdnZXRVc2Vy
TWVkaWEgc3VjY2VlZGVkLicpOwogCiAgICAgc3RyZWFtID0gczsKLSAgICB0cmFjayA9IHN0cmVh
bS52aWRlb1RyYWNrc1swXTsKKyAgICB0cmFjayA9IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBd
OwogCiAgICAgdHJhY2sub251bm11dGUgPSBvblRyYWNrVW5tdXRlOwogICAgIHRyYWNrLm9ubXV0
ZSA9IG9uVHJhY2tNdXRlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrTGlzdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LWV4cGVjdGVkLnR4dAppbmRleCA3ODA2MjM1
Y2E2OTQyMmRhN2UxMzdhNmMxNjkwNDZjNzliNDI0MjM4Li4wNDg5ZWJkN2JiOGIxNGMxZmQ3ZTEy
Y2U4NWY2Y2Q4ZmVhNjU1ZjhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LWV4cGVjdGVkLnR4dApAQCAtMywx
MCArMywxMiBAQCBUZXN0cyBNZWRpYVN0cmVhbVRyYWNrTGlzdCBjYWxsYmFja3MuCiBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBzdHJlYW0xLmdldFRyYWNrQnlJZCh0cmFjay5p
ZCkuaWQgaXMgdHJhY2suaWQKK1BBU1Mgc3RyZWFtMi5nZXRUcmFja0J5SWQodHJhY2suaWQpIGlz
IG51bGwKIFBBU1MgQWRkIHRyYWNrIGNhbGxiYWNrIHN1Y2NlZWRlZC4KIFBBU1MgUmVtb3ZlIHRy
YWNrIGNhbGxiYWNrIHN1Y2NlZWRlZC4KLVBBU1Mgc3RyZWFtMS52aWRlb1RyYWNrcy5hZGQoc3Ry
ZWFtMi52aWRlb1RyYWNrc1swXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVF
cnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mgc3RyZWFtMS52aWRlb1RyYWNrcy5yZW1vdmUo
c3RyZWFtMi52aWRlb1RyYWNrc1swXSkgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3Rh
dGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BBU1Mgc3RyZWFtMS5hZGRUcmFjayhzdHJlYW0y
LmdldFZpZGVvVHJhY2tzKClbMF0pIHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRl
RXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCitQQVNTIHN0cmVhbTEucmVtb3ZlVHJhY2soc3RyZWFt
Mi5nZXRWaWRlb1RyYWNrcygpWzBdKSB0aHJldyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0
ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmh0bWwKaW5kZXggNWQzMGYxOWJlYjYyMmVmNWI2MThk
YmZmMmQwN2JjOTNkNWVmMGU2YS4uYjgyYmZiNzk1YTJjNWZjODEyZTU5NGI1MTUxZmExZWM1M2I1
NDBkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrTGlzdC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja0xpc3QuaHRtbApAQCAtMzIsMTggKzMyLDE5IEBAIGZ1bmN0aW9uIG9uUmVtb3Zl
VHJhY2soZSkgewogCiAgICAgLy8gTm93IHRlc3QgdGhhdCBhZGQgZmFpbGVzIHdoZW4gdGhlIHBh
cmVudCBzdHJlYW0gaGFzIGJlZW4gc3RvcHBlZC4KICAgICBzdHJlYW0xLnN0b3AoKTsKLSAgICBz
aG91bGRUaHJvdygnc3RyZWFtMS52aWRlb1RyYWNrcy5hZGQoc3RyZWFtMi52aWRlb1RyYWNrc1sw
XSknKTsKLSAgICBzaG91bGRUaHJvdygnc3RyZWFtMS52aWRlb1RyYWNrcy5yZW1vdmUoc3RyZWFt
Mi52aWRlb1RyYWNrc1swXSknKTsKKyAgICBzaG91bGRUaHJvdygnc3RyZWFtMS5hZGRUcmFjayhz
dHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pJyk7CisgICAgc2hvdWxkVGhyb3coJ3N0cmVhbTEu
cmVtb3ZlVHJhY2soc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpWzBdKScpOwogCiAgICAgZmluaXNo
SlNUZXN0KCk7CiB9CiAKIGZ1bmN0aW9uIG9uQWRkVHJhY2soZSkgewogICAgIHRlc3RQYXNzZWQo
J0FkZCB0cmFjayBjYWxsYmFjayBzdWNjZWVkZWQuJyk7CisgICAgZXZlbnQgPSBlOwogCi0gICAg
c3RyZWFtMS52aWRlb1RyYWNrcy5vbnJlbW92ZXRyYWNrID0gb25SZW1vdmVUcmFjazsKKyAgICBz
dHJlYW0xLm9ucmVtb3ZldHJhY2sgPSBvblJlbW92ZVRyYWNrOwogICAgIHRyeSB7Ci0gICAgICAg
IHN0cmVhbTEudmlkZW9UcmFja3MucmVtb3ZlKGUudHJhY2spOworICAgICAgICBzdHJlYW0xLnJl
bW92ZVRyYWNrKGV2ZW50LnRyYWNrKTsKICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKICAgICAg
ICAgdGVzdEZhaWxlZCgicmVtb3ZlIHRocmV3IGFuIGV4Y2VwdGlvbi4iKTsKICAgICAgICAgZmlu
aXNoSlNUZXN0KCk7CkBAIC01MiwxMSArNTMsMTQgQEAgZnVuY3Rpb24gb25BZGRUcmFjayhlKSB7
CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewogICAgIHN0cmVhbTIgPSBzOworICAgIHN0cmVh
bTEub25hZGR0cmFjayA9IG9uQWRkVHJhY2s7CiAKLSAgICBzdHJlYW0xLnZpZGVvVHJhY2tzLm9u
YWRkdHJhY2sgPSBvbkFkZFRyYWNrOworICAgIHRyYWNrID0gc3RyZWFtMS5nZXRWaWRlb1RyYWNr
cygpWzBdOworICAgIHNob3VsZEJlKCdzdHJlYW0xLmdldFRyYWNrQnlJZCh0cmFjay5pZCkuaWQn
LCAndHJhY2suaWQnKTsKKyAgICBzaG91bGRCZU51bGwoJ3N0cmVhbTIuZ2V0VHJhY2tCeUlkKHRy
YWNrLmlkKScpOwogCiAgICAgdHJ5IHsKLSAgICAgICAgc3RyZWFtMS52aWRlb1RyYWNrcy5hZGQo
c3RyZWFtMi52aWRlb1RyYWNrc1swXSk7CisgICAgICAgIHN0cmVhbTEuYWRkVHJhY2soc3RyZWFt
Mi5nZXRWaWRlb1RyYWNrcygpWzBdKTsKICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKICAgICAg
ICAgdGVzdEZhaWxlZCgiYWRkIHRocmV3IGFuIGV4Y2VwdGlvbi4iKTsKICAgICAgICAgZmluaXNo
SlNUZXN0KCk7CkBAIC02NSw2ICs2OSw3IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewogCiBm
dW5jdGlvbiBnb3RTdHJlYW0xKHMpIHsKICAgICBzdHJlYW0xID0gczsKKwogICAgIGdldFVzZXJN
ZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIpOwogfQogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRz
U2VsZWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCA5YWNmYzIyZDNi
N2Q1ZjJlYzdlMDRmZGZkY2Q0ODc3YmQ1MzFiM2ViLi4wMGM5MDUwMDAwMTNmY2E3YWFiYTFiMzJl
MjU3NzIzMTQ4NWFkZmI5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci1l
eHBlY3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBQQVNT
IHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0aW9uKG51bGwpIGRpZCBub3QgdGhyb3cgZXhj
ZXB0aW9uLgogUEFTUyBnZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBHb3QgYSBzdHJlYW0uCi1QQVNT
IHBjLmdldFN0YXRzKHN0YXRzSGFuZGxlcjIsIHBjLmxvY2FsU3RyZWFtc1swXS52aWRlb1RyYWNr
c1swXSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCitQQVNTIHBjLmdldFN0YXRzKHN0YXRzSGFu
ZGxlcjIsIHBjLmxvY2FsU3RyZWFtc1swXS5nZXRWaWRlb1RyYWNrcygpWzBdKSBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KIFBBU1Mgc3RhdHNIYW5kbGVyMiB3YXMgY2FsbGVkCiBQQVNTIHJlc3Vs
dC5sZW5ndGggaXMgPj0gMQogUEFTUyB0aW1lc3RhbXAgaXMgPj0gc3RhcnRUaW1lCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRz
U2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5l
Y3Rpb24tc3RhdHNTZWxlY3Rvci5odG1sCmluZGV4IDU5OTg2NGE5MTNiZjA4OTAwMTQ3N2VmNGI1
NzQzODllYzZlMDhhNzMuLjhhNzU2NThmZGZlZWFmNjA4M2I5ZTUzZmY4OTQyMTgxNTQ1M2YwMmQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rp
b24tc3RhdHNTZWxlY3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0v
UlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci5odG1sCkBAIC0zMSw3ICszMSw3IEBAIGZ1
bmN0aW9uIGdvdFN0cmVhbShzKSB7CiAgICAgc3RyZWFtID0gczsKIAogICAgIHBjLmFkZFN0cmVh
bShzdHJlYW0pOwotICAgIHNob3VsZE5vdFRocm93KCdwYy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIy
LCBwYy5sb2NhbFN0cmVhbXNbMF0udmlkZW9UcmFja3NbMF0pJyk7CisgICAgc2hvdWxkTm90VGhy
b3coJ3BjLmdldFN0YXRzKHN0YXRzSGFuZGxlcjIsIHBjLmxvY2FsU3RyZWFtc1swXS5nZXRWaWRl
b1RyYWNrcygpWzBdKScpOwogfQogCiBmdW5jdGlvbiBzdGF0c0hhbmRsZXIyKHN0YXR1cykKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVj
dGVkLnR4dAppbmRleCAyZTAzOTYyNWQyOGVlZDE0OWE4N2FiZGE2NGQyMzI3YmQ2NjcwYjc4Li43
MzhkYzI1MjBkOWZmZDZmMWIyOWZlZTU4NTc5YWYxOTgwNzk3NjYxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CkBA
IC02LDI2ICs2LDI2IEBAIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFCiBQQVNTIG5hdmlnYXRvci53
ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNlLCB2aWRlbzpmYWxzZX0sIGVycm9yLCBlcnJv
cik7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRp
b24gOS4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0sIGdv
dFN0cmVhbTEsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBn
ZW5lcmF0ZWQuCi1QQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQotUEFTUyBzdHJl
YW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDAKK1BBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKIFBB
U1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIs
IGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQu
Ci1QQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMAotUEFTUyBzdHJlYW0udmlkZW9U
cmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlz
IDAKK1BBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1MgbmF2aWdh
dG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTMsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0
ZWQuCi1QQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQotUEFTUyBzdHJlYW0udmlk
ZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IGlzIDEKK1BBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1MgbmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6
W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KLVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxl
bmd0aCBpcyAxCi1QQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGggaXMgMQogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0s
IHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9yLCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1MgRXJyb3IgY2FsbGJhY2sgY2FsbGVkLgogUEFTUyBuYXZpZ2F0b3Iud2Vi
a2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8x
JzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vuc3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRy
dWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBT
dHJlYW0gZ2VuZXJhdGVkLgotUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKLVBB
U1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRBdWRpb1Ry
YWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBp
cyAxCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCmluZGV4IDc2
YzQwMzJkZTZlMTBmZTJiMGMxYWIxYmRiZGM5ZTVmNWJiMzU3OTMuLjY0OWQ5ZWJmOGFmMzIyZDBk
MzllZWFiOTUyMmEyY2RiYmIzYTNlYmYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0
cmVhbS9nZXR1c2VybWVkaWEuaHRtbApAQCAtMjUsOCArMjUsOCBAQCBmdW5jdGlvbiBnb3RTdHJl
YW1JbkVycm9yKHMpIHsKIGZ1bmN0aW9uIGdvdFN0cmVhbTUocykgewogICAgIHN0cmVhbSA9IHM7
CiAgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKLSAgICBzaG91bGRCZSgnc3Ry
ZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRl
b1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFj
a3MoKS5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3Mo
KS5sZW5ndGgnLCAnMScpOwogICAgIGZpbmlzaEpTVGVzdCgpOwogfQogCkBAIC0zOSw4ICszOSw4
IEBAIGZ1bmN0aW9uIGVycm9yMSgpIHsKIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewogICAgIHN0
cmVhbSA9IHM7CiAgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKLSAgICBzaG91
bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ3N0
cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0
QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0Vmlk
ZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCiAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRv
ci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBw
b3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3Is
IGVycm9yMSk7Iik7CiB9CkBAIC00OCw4ICs0OCw4IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykg
ewogZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CiAgICAgc3RyZWFtID0gczsKICAgICB0ZXN0UGFz
c2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOwotICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFj
a3MubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0
aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcs
ICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcx
Jyk7CiAKICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7
YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFt
NCwgZXJyb3IpOyIpOwogfQpAQCAtNTcsOCArNTcsOCBAQCBmdW5jdGlvbiBnb3RTdHJlYW0zKHMp
IHsKIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewogICAgIHN0cmVhbSA9IHM7CiAgICAgdGVzdFBh
c3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJh
Y2tzLmxlbmd0aCcsICcwJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5n
dGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgn
LCAnMCcpOworICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAn
MScpOwogCiAgICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEo
e2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0zLCBlcnJvcik7Iik7CiB9CkBAIC02
Niw4ICs2Niw4IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewogZnVuY3Rpb24gZ290U3RyZWFt
MShzKSB7CiAgICAgc3RyZWFtID0gczsKICAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVk
LicpOwotICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAg
ICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxk
QmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUo
J3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CiAKICAgICBzaG91bGROb3RU
aHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7dmlkZW86dHJ1ZX0sIGdvdFN0cmVh
bTIsIGVycm9yKTsiKQogfQo=
</data>
<flag name="review"
          id="200312"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="200356"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182528</attachid>
            <date>2013-01-14 02:05:21 -0800</date>
            <delta_ts>2013-01-14 03:52:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106660-20130114110221.patch</filename>
            <type>text/plain</type>
            <size>53878</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NTg5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGUwNzJkOGJjNjE2ZTVl
ZWI1MjdhYTc1MzdiOTRiZGNiNGJjNmFhOC4uN2E3YWVlN2RkYTliYjBlOTc0ODlmMDZjNzVlNTVh
MDdlYjY4MGFjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAxLTE0ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogVXBkYXRlIHRoZSB0cmFjayBhY2Nlc3NvcnMgb24gTWVkaWFTdHJlYW0gdG8gbWF0Y2gg
dGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgorCisgICAgICAgIFRoZSBzcGVjIGhhcyBzaWduaWZpY2FudGx5IGNoYW5nZWQgaG93IHRyYWNr
cyBhcmUgYWNjZXNzZWQgZnJvbSBhIE1lZGlhU3RyZWFtOgorICAgICAgICBodHRwOi8vZGV2Lncz
Lm9yZy8yMDExL3dlYnJ0Yy9lZGl0b3IvZ2V0dXNlcm1lZGlhLmh0bWwKKworICAgICAgICBJbiBz
aG9ydDogdGhlIGF0dHJpYnV0ZXMgYXVkaW9UcmFjay92aWRlb1RyYWNrIHRoYXQgcmV0dXJuZWQg
c3BlY2lhbCBNZWRpYVN0cmVhbVRyYWNrTGlzdHMgaGF2ZSBiZWVuCisgICAgICAgIHJlcGxhY2Vk
IGJ5IHRoZSBmdW5jdGlvbnMgZ2V0QXVkaW9UcmFja3MoKS9nZXRWaWRlb1RyYWNrcyB0aGF0IHJl
dHVybiBzdGFuZGFyZCBzZXF1ZW5jZXMgb2YKKyAgICAgICAgTWVkaWFTdHJlYW1UcmFja3MuCisK
KyAgICAgICAgRXhpc3RpbmcgdGVzdHMgdXBkYXRlZCBhbmQgZXhwYW5kZWQgdG8gY292ZXIgcGF0
Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06On5NZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVhZHlT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
OjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmdldFRyYWNrQnlJZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6c3RyZWFtRW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW06OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW06OnNjaGVkdWxlRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAgIChNZWRpYVN0cmVhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0QXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW06OmdldFZpZGVvVHJhY2tzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZEF1ZGlvQ29tcG9uZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVtb3ZlQXVkaW9Db21wb25lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRWaWRlb0NvbXBvbmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVZpZGVv
Q29tcG9uZW50KToKKwogMjAxMy0wMS0xMCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTmF0aXZlIE1lbW9yeSBJbnN0cnVt
ZW50YXRpb246IGZpeCBpbnN0cnVtZW50YXRpb24gZm9yIGFscmVhZHkgaW5zdHJ1bWVudGVkIGNs
YXNzZXMgMi9OCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDFiY2U2MjExYzI2NTI4MzljNDhiNTAx
NjhiMzY1MjEwYTZhNTYxZmEuLjY4NGI5YmU2NzM0NTgzNzg1ZTk3YjlhMGRkNmZlYmY1OWZlZDUz
OGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0yMjAsNyArMjIwLDYgQEAgc2V0KFdlYkNvcmVf
SURMX0ZJTEVTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsCiAg
ICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmlkbAogICAgIE1vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmlkbAotICAgIE1vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYVN0cmVhbS5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yLmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNl
ck1lZGlhRXJyb3JDYWxsYmFjay5pZGwKQEAgLTg2MSw3ICs4NjAsNiBAQCBzZXQoV2ViQ29yZV9T
T1VSQ0VTCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVJlZ2lzdHJ5LmNwcAog
ICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5jcHAKICAgICBNb2R1bGVz
L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAKLSAgICBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRh
Q2hhbm5lbC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL1JUQ0RhdGFDaGFubmVsRXZlbnQu
Y3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtIGIvU291
cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCBmYWJmMzUzNTM5MDQ0YWZlYjcw
NDAxZjI2YWMxODEzMTNjY2Q2NzVmLi40MDQ2YTk5OTM5OTZhYjUyYWFmOTRlMTlmZWNhN2ZkMGYy
ZTZhMzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCisr
KyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KQEAgLTUyMSw4ICs1MjEsNiBA
QCB3ZWJjb3JlX2J1aWx0X3NvdXJjZXMgKz0gXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNN
ZWRpYVN0cmVhbVRyYWNrLmggXAogCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVh
bVRyYWNrRXZlbnQuY3BwIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1U
cmFja0V2ZW50LmggXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNr
TGlzdC5jcHAgXAotCURlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNNZWRpYVN0cmVhbVRyYWNrTGlz
dC5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuY3BwIFwKIAlE
ZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFRdWVyeUxpc3QuaCBcCiAJRGVyaXZlZFNvdXJj
ZXMvV2ViQ29yZS9KU01lbW9yeUluZm8uY3BwIFwKQEAgLTEyNDMsNyArMTI0MSw2IEBAIGRvbV9i
aW5kaW5nX2lkbHMgKz0gXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbUxpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJl
YW1UcmFjay5pZGwgXAogCSQoV2ViQ29yZSkvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrRXZlbnQuaWRsIFwKLQkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja0xpc3QuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2
aWdhdG9yTWVkaWFTdHJlYW0uaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFz
dHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5pZGwgXApAQCAtMTkzOSw4ICsx
OTM2LDYgQEAgd2ViY29yZV9tb2R1bGVzX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5oIFwKIAlTb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2ZW50LmggXAotCVNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3Bw
IFwKLQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tM
aXN0LmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVk
aWFTdHJlYW0uY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvck1lZGlhU3RyZWFtLmggXAogCVNvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0v
TmF2aWdhdG9yVXNlck1lZGlhRXJyb3IuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwCmluZGV4IGRiNzhmZGI3ZmFkZGE2MTRkNTli
NzEzMjM0MWE4OTBhNzYyZDY5ODYuLjZhYWRlYmVlM2I2OTVjMDE3MjBlNDFmNzg1MDE5Mjg4MTlk
MDg5NTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW0uY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIk1lZGlhU3RyZWFtQ2VudGVyLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1T
b3VyY2UuaCIKKyNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCIKICNpbmNsdWRlICJV
VUlELmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc4LDExICs3OSwxMSBAQCBQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsIFBhcwogICAgIE1lZGlhU3RyZWFtU291cmNlVmVjdG9yIGF1ZGlvU291cmNl
czsKICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciB2aWRlb1NvdXJjZXM7CiAKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHN0cmVhbS0+YXVkaW9UcmFja3MoKS0+bGVuZ3RoKCk7ICsraSkK
LSAgICAgICAgcHJvY2Vzc1RyYWNrKHN0cmVhbS0+YXVkaW9UcmFja3MoKS0+aXRlbShpKSwgYXVk
aW9Tb3VyY2VzKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmVhbS0+bV9hdWRpb1Ry
YWNrcy5zaXplKCk7ICsraSkKKyAgICAgICAgcHJvY2Vzc1RyYWNrKHN0cmVhbS0+bV9hdWRpb1Ry
YWNrc1tpXS5nZXQoKSwgYXVkaW9Tb3VyY2VzKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgc3RyZWFtLT52aWRlb1RyYWNrcygpLT5sZW5ndGgoKTsgKytpKQotICAgICAgICBwcm9jZXNz
VHJhY2soc3RyZWFtLT52aWRlb1RyYWNrcygpLT5pdGVtKGkpLCB2aWRlb1NvdXJjZXMpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc3RyZWFtLT5tX3ZpZGVvVHJhY2tzLnNpemUoKTsgKytp
KQorICAgICAgICBwcm9jZXNzVHJhY2soc3RyZWFtLT5tX3ZpZGVvVHJhY2tzW2ldLmdldCgpLCB2
aWRlb1NvdXJjZXMpOwogCiAgICAgcmV0dXJuIGNyZWF0ZUZyb21Tb3VyY2VWZWN0b3JzKGNvbnRl
eHQsIGF1ZGlvU291cmNlcywgdmlkZW9Tb3VyY2VzKTsKIH0KQEAgLTEwNSwzNSArMTA2LDExOCBA
QCBQYXNzUmVmUHRyPE1lZGlhU3RyZWFtPiBNZWRpYVN0cmVhbTo6Y3JlYXRlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhcwogCiBNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0oU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2Ny
aXB0b3I+IHN0cmVhbURlc2NyaXB0b3IpCiAgICAgOiBDb250ZXh0RGVzdHJ1Y3Rpb25PYnNlcnZl
cihjb250ZXh0KQorICAgICwgbV9zdG9wcGVkKGZhbHNlKQogICAgICwgbV9kZXNjcmlwdG9yKHN0
cmVhbURlc2NyaXB0b3IpCisgICAgLCBtX3NjaGVkdWxlZEV2ZW50VGltZXIodGhpcywgJk1lZGlh
U3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQpCiB7CiAgICAgbV9kZXNjcmlwdG9yLT5z
ZXRDbGllbnQodGhpcyk7CiAKLSAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yIGF1ZGlvVHJhY2tW
ZWN0b3I7CiAgICAgc2l6ZV90IG51bWJlck9mQXVkaW9UcmFja3MgPSBtX2Rlc2NyaXB0b3ItPm51
bWJlck9mQXVkaW9Db21wb25lbnRzKCk7Ci0gICAgYXVkaW9UcmFja1ZlY3Rvci5yZXNlcnZlQ2Fw
YWNpdHkobnVtYmVyT2ZBdWRpb1RyYWNrcyk7CisgICAgbV9hdWRpb1RyYWNrcy5yZXNlcnZlQ2Fw
YWNpdHkobnVtYmVyT2ZBdWRpb1RyYWNrcyk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBu
dW1iZXJPZkF1ZGlvVHJhY2tzOyBpKyspCi0gICAgICAgIGF1ZGlvVHJhY2tWZWN0b3IuYXBwZW5k
KE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3IsIG1fZGVzY3Jp
cHRvci0+YXVkaW9Db21wb25lbnQoaSkpKTsKLSAgICBtX2F1ZGlvVHJhY2tzID0gTWVkaWFTdHJl
YW1UcmFja0xpc3Q6OmNyZWF0ZSh0aGlzLCBhdWRpb1RyYWNrVmVjdG9yKTsKKyAgICAgICAgbV9h
dWRpb1RyYWNrcy5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKGNvbnRleHQsIG1fZGVz
Y3JpcHRvciwgbV9kZXNjcmlwdG9yLT5hdWRpb0NvbXBvbmVudChpKSkpOwogCi0gICAgTWVkaWFT
dHJlYW1UcmFja1ZlY3RvciB2aWRlb1RyYWNrVmVjdG9yOwogICAgIHNpemVfdCBudW1iZXJPZlZp
ZGVvVHJhY2tzID0gbV9kZXNjcmlwdG9yLT5udW1iZXJPZlZpZGVvQ29tcG9uZW50cygpOwotICAg
IHZpZGVvVHJhY2tWZWN0b3IucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mVmlkZW9UcmFja3MpOwor
ICAgIG1fdmlkZW9UcmFja3MucmVzZXJ2ZUNhcGFjaXR5KG51bWJlck9mVmlkZW9UcmFja3MpOwog
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZWaWRlb1RyYWNrczsgaSsrKQotICAg
ICAgICB2aWRlb1RyYWNrVmVjdG9yLmFwcGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29u
dGV4dCwgbV9kZXNjcmlwdG9yLCBtX2Rlc2NyaXB0b3ItPnZpZGVvQ29tcG9uZW50KGkpKSk7Ci0g
ICAgbV92aWRlb1RyYWNrcyA9IE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgdmlk
ZW9UcmFja1ZlY3Rvcik7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKE1lZGlhU3RyZWFt
VHJhY2s6OmNyZWF0ZShjb250ZXh0LCBtX2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+dmlkZW9D
b21wb25lbnQoaSkpKTsKIH0KIAogTWVkaWFTdHJlYW06On5NZWRpYVN0cmVhbSgpCiB7CiAgICAg
bV9kZXNjcmlwdG9yLT5zZXRDbGllbnQoMCk7Ci0gICAgbV9hdWRpb1RyYWNrcy0+ZGV0YWNoT3du
ZXIoKTsKLSAgICBtX3ZpZGVvVHJhY2tzLT5kZXRhY2hPd25lcigpOwogfQogCiBNZWRpYVN0cmVh
bTo6UmVhZHlTdGF0ZSBNZWRpYVN0cmVhbTo6cmVhZHlTdGF0ZSgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIG1fZGVzY3JpcHRvci0+ZW5kZWQoKSA/IEVOREVEIDogTElWRTsKKyAgICByZXR1cm4gKG1f
c3RvcHBlZCB8fCBtX2Rlc2NyaXB0b3ItPmVuZGVkKCkpID8gRU5ERUQgOiBMSVZFOworfQorCit2
b2lkIE1lZGlhU3RyZWFtOjphZGRUcmFjayhQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBy
cFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKK3sKKyAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVO
REVEKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICBpZiAoIXBycFRyYWNrKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRD
SF9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1U
cmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKKworICAgIGlmIChnZXRUcmFja0J5SWQodHJhY2stPmlk
KCkpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+
IGNvbXBvbmVudCA9IE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUodHJhY2stPmNvbXBvbmVu
dCgpLT5zb3VyY2UoKSk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG5ld1RyYWNrID0g
TWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9kZXNj
cmlwdG9yLCBjb21wb25lbnQuZ2V0KCkpOworCisgICAgc3dpdGNoIChjb21wb25lbnQtPnNvdXJj
ZSgpLT50eXBlKCkpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW86Cisg
ICAgICAgIG1fZGVzY3JpcHRvci0+YWRkQXVkaW9Db21wb25lbnQoY29tcG9uZW50LnJlbGVhc2Uo
KSk7CisgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKG5ld1RyYWNrKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgorICAgICAgICBtX2Rl
c2NyaXB0b3ItPmFkZFZpZGVvQ29tcG9uZW50KGNvbXBvbmVudC5yZWxlYXNlKCkpOworICAgICAg
ICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChuZXdUcmFjayk7CisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZEFkZE1lZGlhU3RyZWFtVHJh
Y2sobV9kZXNjcmlwdG9yLmdldCgpLCBuZXdUcmFjay0+Y29tcG9uZW50KCkpOworICAgIHNjaGVk
dWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVz
KCkuYWRkdHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCBuZXdUcmFjay5yZWxlYXNlKCkpKTsKK30K
Kwordm9pZCBNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiBwcnBUcmFjayAsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChyZWFkeVN0YXRl
KCkgPT0gRU5ERUQpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIGlmICghcHJwVHJhY2spIHsKKyAgICAgICAgZWMgPSBUWVBF
X01JU01BVENIX0VSUjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFJlZlB0cjxNZWRp
YVN0cmVhbVRyYWNrPiB0cmFjayA9IHBycFRyYWNrOworCisgICAgc3dpdGNoICh0cmFjay0+Y29t
cG9uZW50KCktPnNvdXJjZSgpLT50eXBlKCkpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNl
OjpUeXBlQXVkaW86IHsKKyAgICAgICAgc2l6ZV90IHBvcyA9IG1fYXVkaW9UcmFja3MuZmluZCh0
cmFjayk7CisgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKKyAgICAgICAgICAgIG1fYXVk
aW9UcmFja3MucmVtb3ZlKHBvcyk7CisgICAgICAgICAgICBtX2Rlc2NyaXB0b3ItPnJlbW92ZUF1
ZGlvQ29tcG9uZW50KHRyYWNrLT5jb21wb25lbnQoKSk7CisgICAgICAgIH0KKyAgICAgICAgYnJl
YWs7CisgICAgfQorICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzogeworICAg
ICAgICBzaXplX3QgcG9zID0gbV92aWRlb1RyYWNrcy5maW5kKHRyYWNrKTsKKyAgICAgICAgaWYg
KHBvcyAhPSBub3RGb3VuZCkgeworICAgICAgICAgICAgbV92aWRlb1RyYWNrcy5yZW1vdmUocG9z
KTsKKyAgICAgICAgICAgIG1fZGVzY3JpcHRvci0+cmVtb3ZlVmlkZW9Db21wb25lbnQodHJhY2st
PmNvbXBvbmVudCgpKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgfQor
CisgICAgTWVkaWFTdHJlYW1DZW50ZXI6Omluc3RhbmNlKCkuZGlkUmVtb3ZlTWVkaWFTdHJlYW1U
cmFjayhtX2Rlc2NyaXB0b3IuZ2V0KCksIHRyYWNrLT5jb21wb25lbnQoKSk7CisgICAgc2NoZWR1
bGVEaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrLnJlbGVhc2UoKSkpOworfQor
CitNZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbTo6Z2V0VHJhY2tCeUlkKFN0cmluZyBpZCkK
K3sKKyAgICBmb3IgKE1lZGlhU3RyZWFtVHJhY2tWZWN0b3I6Oml0ZXJhdG9yIGl0ZXIgPSBtX2F1
ZGlvVHJhY2tzLmJlZ2luKCk7IGl0ZXIgIT0gbV9hdWRpb1RyYWNrcy5lbmQoKTsgKytpdGVyKSB7
CisgICAgICAgIGlmICgoKml0ZXIpLT5pZCgpID09IGlkKQorICAgICAgICAgICAgcmV0dXJuICgq
aXRlcikuZ2V0KCk7CisgICAgfQorCisgICAgZm9yIChNZWRpYVN0cmVhbVRyYWNrVmVjdG9yOjpp
dGVyYXRvciBpdGVyID0gbV92aWRlb1RyYWNrcy5iZWdpbigpOyBpdGVyICE9IG1fdmlkZW9UcmFj
a3MuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoKCppdGVyKS0+aWQoKSA9PSBpZCkKKyAg
ICAgICAgICAgIHJldHVybiAoKml0ZXIpLmdldCgpOworICAgIH0KKworICAgIHJldHVybiAwOwog
fQogCiB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgpCkBAIC0xNDIsMTAgKzIyNiwxMiBA
QCB2b2lkIE1lZGlhU3RyZWFtOjpzdHJlYW1FbmRlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IG1fZGVzY3JpcHRvci0+c2V0RW5kZWQoKTsKLSAgICBtX2F1ZGlvVHJhY2tzLT5kZXRhY2hPd25l
cigpOwotICAgIG1fdmlkZW9UcmFja3MtPmRldGFjaE93bmVyKCk7CisgICAgc2NoZWR1bGVEaXNw
YXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmVuZGVkRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOworfQogCi0gICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMo
KS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK3ZvaWQgTWVkaWFTdHJlYW06OmNvbnRleHRE
ZXN0cm95ZWQoKQoreworICAgIG1fc3RvcHBlZCA9IHRydWU7CiB9CiAKIGNvbnN0IEF0b21pY1N0
cmluZyYgTWVkaWFTdHJlYW06OmludGVyZmFjZU5hbWUoKSBjb25zdApAQCAtMTcwLDI5ICsyNTYs
NzMgQEAgRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbTo6ZW5zdXJlRXZlbnRUYXJnZXREYXRh
KCkKIAogdm9pZCBNZWRpYVN0cmVhbTo6YWRkVHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNv
bXBvbmVudCkKIHsKKyAgICBpZiAocmVhZHlTdGF0ZSgpID09IEVOREVEKQorICAgICAgICByZXR1
cm47CisKICAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBNZWRpYVN0cmVhbVRy
YWNrOjpjcmVhdGUoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLCBtX2Rlc2NyaXB0b3IsIGNvbXBv
bmVudCk7Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgc3dpdGNoIChjb21wb25lbnQt
PnNvdXJjZSgpLT50eXBlKCkpIHsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVk
aW86Ci0gICAgICAgIG1fYXVkaW9UcmFja3MtPmFkZCh0cmFjaywgZWMpOworICAgICAgICBtX2F1
ZGlvVHJhY2tzLmFwcGVuZCh0cmFjayk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2U6OlR5cGVWaWRlbzoKLSAgICAgICAgbV92aWRlb1RyYWNrcy0+YWRkKHRyYWNr
LCBlYyk7CisgICAgICAgIG1fdmlkZW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQotICAgIEFTU0VSVCghZWMpOworCisgICAgc2NoZWR1bGVEaXNwYXRjaEV2ZW50
KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50
LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7CiB9CiAKIHZvaWQgTWVkaWFTdHJlYW06OnJlbW92ZVRy
YWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCiB7CisgICAgaWYgKHJlYWR5U3Rh
dGUoKSA9PSBFTkRFRCkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFTdHJlYW1UcmFja1Zl
Y3RvciogdHJhY2tzID0gMDsKICAgICBzd2l0Y2ggKGNvbXBvbmVudC0+c291cmNlKCktPnR5cGUo
KSkgewogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKLSAgICAgICAgbV9h
dWRpb1RyYWNrcy0+cmVtb3ZlKGNvbXBvbmVudCk7CisgICAgICAgIHRyYWNrcyA9ICZtX2F1ZGlv
VHJhY2tzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBl
VmlkZW86Ci0gICAgICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZShjb21wb25lbnQpOworICAgICAg
ICB0cmFja3MgPSAmbV92aWRlb1RyYWNrczsKICAgICAgICAgYnJlYWs7CiAgICAgfQorCisgICAg
c2l6ZV90IGluZGV4ID0gbm90Rm91bmQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB0cmFj
a3MtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgoKnRyYWNrcylbaV0tPmNvbXBvbmVudCgp
ID09IGNvbXBvbmVudCkgeworICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSAoKnRyYWNr
cylbaW5kZXhdOworICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVsZURpc3Bh
dGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnJlbW92
ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKK30KKwordm9pZCBNZWRpYVN0cmVh
bTo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQoreworICAg
IG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVuZChldmVudCk7CisKKyAgICBpZiAoIW1fc2NoZWR1bGVk
RXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGltZXIuc3Rh
cnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVudFRpbWVy
RmlyZWQoVGltZXI8TWVkaWFTdHJlYW0+KikKK3sKKyAgICBpZiAobV9zdG9wcGVkKQorICAgICAg
ICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IGV2ZW50czsKKyAgICBldmVu
dHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+
OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBldmVudHMu
ZW5kKCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoKCppdCkucmVsZWFzZSgpKTsKKwor
ICAgIGV2ZW50cy5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5kZXggMDhj
MGEwMWQ5NDNiMzE2MWExNjFjNTI2NGZmZjI4YzE0MzZmNmYzMS4uMTNiY2EwZjRmNmZjZmQ2N2M5
YWZmYTZhNDNkYzFlYmJmMTc1MzNjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMzAsOCArMzAsMTAgQEAKIAogI2luY2x1ZGUg
IkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIK
KyNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1EZXNjcmlw
dG9yLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja0xpc3QuaCIKKyNpbmNsdWRlICJNZWRp
YVN0cmVhbVRyYWNrLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmQ291
bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsOCArNTIsNiBAQCBwdWJs
aWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW0+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbURlc2NyaXB0b3I+KTsKICAgICB2
aXJ0dWFsIH5NZWRpYVN0cmVhbSgpOwogCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNU
RU5FUihlbmRlZCk7Ci0KICAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsKIAogICAg
IC8vIERFUFJFQ0FURUQKQEAgLTU5LDggKzU5LDE2IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBp
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRvci0+aWQoKTsgfQogCi0gICAgTWVkaWFTdHJl
YW1UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCkgeyByZXR1cm4gbV9hdWRpb1RyYWNrcy5nZXQoKTsg
fQotICAgIE1lZGlhU3RyZWFtVHJhY2tMaXN0KiB2aWRlb1RyYWNrcygpIHsgcmV0dXJuIG1fdmlk
ZW9UcmFja3MuZ2V0KCk7IH0KKyAgICB2b2lkIGFkZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICB2b2lkIHJlbW92ZVRyYWNrKFBhc3NSZWZQ
dHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAgICBNZWRpYVN0cmVhbVRy
YWNrKiBnZXRUcmFja0J5SWQoU3RyaW5nKTsKKworICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3Ig
Z2V0QXVkaW9UcmFja3MoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvVHJhY2tzOyB9CisgICAgTWVk
aWFTdHJlYW1UcmFja1ZlY3RvciBnZXRWaWRlb1RyYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlk
ZW9UcmFja3M7IH0KKworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW5kZWQp
OworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkdHJhY2spOworICAgIERF
RklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3ZldHJhY2spOwogCiAgICAgdmlydHVh
bCBib29sIGlzTG9jYWwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogCkBAIC04Myw2ICs5MSw5
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJnZXRE
YXRhKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwogCisgICAgLy8gQ29udGV4dERlc3RydWN0aW9uT2JzZXJ2
ZXIKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3llZCgpOworCiBwcml2YXRlOgogICAg
IC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJ
REUgeyByZWYoKTsgfQpAQCAtOTIsMTEgKzEwMywxOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwg
dm9pZCBhZGRUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCopIE9WRVJSSURFOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVUcmFjayhNZWRpYVN0cmVhbUNvbXBvbmVudCopIE9WRVJSSURFOwogCisg
ICAgdm9pZCBzY2hlZHVsZURpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4pOworICAgIHZv
aWQgc2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKFRpbWVyPE1lZGlhU3RyZWFtPiopOworCisgICAg
Ym9vbCBtX3N0b3BwZWQ7CisKICAgICBFdmVudFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7
CiAKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IG1fYXVkaW9UcmFja3M7Ci0gICAg
UmVmUHRyPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiBtX3ZpZGVvVHJhY2tzOworICAgIE1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3IgbV9hdWRpb1RyYWNrczsKKyAgICBNZWRpYVN0cmVhbVRyYWNrVmVjdG9y
IG1fdmlkZW9UcmFja3M7CiAgICAgUmVmUHRyPE1lZGlhU3RyZWFtRGVzY3JpcHRvcj4gbV9kZXNj
cmlwdG9yOworCisgICAgVGltZXI8TWVkaWFTdHJlYW0+IG1fc2NoZWR1bGVkRXZlbnRUaW1lcjsK
KyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IG1fc2NoZWR1bGVkRXZlbnRzOwogfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmlkbAppbmRleCAyNzMzYjdlNzY4OGY4NWFiY2I3ZTYzMDk2ZDI5
NWUzY2Q0ZjM0YzVjLi5kMWM3ZThiNjU4MGI3YWFiNzhjZjYyZDFmMzRjZDYwMjI1OTY5MzU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmlkbApAQCAtMzYsMTMgKzM2LDIyIEBACiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGlkOwogCi0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE1lZGlhU3RyZWFtVHJhY2tMaXN0IGF1
ZGlvVHJhY2tzOwotICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBNZWRpYVN0cmVhbVRyYWNrTGlzdCB2
aWRlb1RyYWNrczsKKyAgICBzZXF1ZW5jZTxNZWRpYVN0cmVhbVRyYWNrPiBnZXRBdWRpb1RyYWNr
cygpOworICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFtVHJhY2s+IGdldFZpZGVvVHJhY2tzKCk7CisK
KyAgICB2b2lkIGFkZFRyYWNrKE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spCisgICAgICAgIHJhaXNl
cyhET01FeGNlcHRpb24pOworICAgIHZvaWQgcmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1UcmFjayB0
cmFjaykKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgTWVkaWFTdHJlYW1UcmFj
ayBnZXRUcmFja0J5SWQoRE9NU3RyaW5nIHRyYWNrSWQpOwogCiAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgTElWRSA9IDE7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRU5ERUQgPSAyOwogICAg
IHJlYWRvbmx5IGF0dHJpYnV0ZSB1bnNpZ25lZCBzaG9ydCByZWFkeVN0YXRlOwotICAgICAgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZW5kZWQ7CisKKyAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmVuZGVkOworICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJh
Y2s7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKIAogICAgIC8v
IEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01T
dHJpbmcgdHlwZSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJl
YW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGIyMDc3OGU3ODNiZTdiOGU1YjdkYTIzMzFhNjcyMjQ5NDNiYzY1ZjkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKKysrIC9kZXYvbnVsbApA
QCAtMSwxNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDExIEVyaWNzc29uIEFCLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRyYWNrTGlzdC5o
IgotCi0jaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtLmgi
Ci0jaW5jbHVkZSAiTWVkaWFTdHJlYW1DZW50ZXIuaCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbVRy
YWNrRXZlbnQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1QYXNzUmVmUHRyPE1lZGlhU3Ry
ZWFtVHJhY2tMaXN0PiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKE1lZGlhU3RyZWFtKiBv
d25lciwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYgdHJhY2tWZWN0b3IpCi17Ci0gICAg
QVNTRVJUKG93bmVyKTsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IHRyYWNrTGlz
dCA9IGFkb3B0UmVmKG5ldyBNZWRpYVN0cmVhbVRyYWNrTGlzdChvd25lciwgdHJhY2tWZWN0b3Ip
KTsKLSAgICB0cmFja0xpc3QtPnN1c3BlbmRJZk5lZWRlZCgpOwotICAgIHJldHVybiB0cmFja0xp
c3QucmVsZWFzZSgpOwotfQotCi1NZWRpYVN0cmVhbVRyYWNrTGlzdDo6TWVkaWFTdHJlYW1UcmFj
a0xpc3QoTWVkaWFTdHJlYW0qIG93bmVyLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJiB0
cmFja1ZlY3RvcikKLSAgICA6IEFjdGl2ZURPTU9iamVjdChvd25lci0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLCB0aGlzKQotICAgICwgbV9vd25lcihvd25lcikKLSAgICAsIG1fdHJhY2tWZWN0
b3IodHJhY2tWZWN0b3IpCi17Ci19Ci0KLU1lZGlhU3RyZWFtVHJhY2tMaXN0Ojp+TWVkaWFTdHJl
YW1UcmFja0xpc3QoKQotewotfQotCi12b2lkIE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpkZXRhY2hP
d25lcigpCi17Ci0gICAgbV9vd25lciA9IDA7Ci19Ci0KLXVuc2lnbmVkIE1lZGlhU3RyZWFtVHJh
Y2tMaXN0OjpsZW5ndGgoKSBjb25zdAotewotICAgIHJldHVybiBtX3RyYWNrVmVjdG9yLnNpemUo
KTsKLX0KLQotTWVkaWFTdHJlYW1UcmFjayogTWVkaWFTdHJlYW1UcmFja0xpc3Q6Oml0ZW0odW5z
aWduZWQgaW5kZXgpIGNvbnN0Ci17Ci0gICAgaWYgKGluZGV4ID49IG1fdHJhY2tWZWN0b3Iuc2l6
ZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV90cmFja1ZlY3RvcltpbmRleF0u
Z2V0KCk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmFkZChQYXNzUmVmUHRyPE1l
ZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAgICBpZiAo
IW1fb3duZXIgfHwgbV9vd25lci0+cmVhZHlTdGF0ZSgpID09IE1lZGlhU3RyZWFtOjpFTkRFRCkg
ewotICAgICAgICBlYyA9IElOVkFMSURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7Ci0gICAg
aWYgKCF0cmFjaykgewotICAgICAgICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1fdHJhY2tWZWN0b3IuY29udGFpbnModHJhY2spKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RyYWNrVmVjdG9yLmFwcGVuZCh0cmFjayk7Ci0gICAg
aWYgKCFNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRBZGRNZWRpYVN0cmVhbVRyYWNr
KG1fb3duZXItPmRlc2NyaXB0b3IoKSwgdHJhY2stPmNvbXBvbmVudCgpKSkgewotICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgZGlz
cGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRk
dHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwotfQotCi12b2lkIE1lZGlhU3RyZWFt
VHJhY2tMaXN0OjpyZW1vdmUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBUcmFjaywg
RXhjZXB0aW9uQ29kZSYgZWMpCi17Ci0gICAgaWYgKCFtX293bmVyIHx8IG1fb3duZXItPnJlYWR5
U3RhdGUoKSA9PSBNZWRpYVN0cmVhbTo6RU5ERUQpIHsKLSAgICAgICAgZWMgPSBJTlZBTElEX1NU
QVRFX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIFJlZlB0cjxNZWRpYVN0cmVh
bVRyYWNrPiB0cmFjayA9IHBycFRyYWNrOwotICAgIGlmICghdHJhY2spIHsKLSAgICAgICAgZWMg
PSBUWVBFX01JU01BVENIX0VSUjsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHNpemVf
dCBpbmRleCA9IG1fdHJhY2tWZWN0b3IuZmluZCh0cmFjayk7Ci0gICAgaWYgKGluZGV4ID09IG5v
dEZvdW5kKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX3RyYWNrVmVjdG9yLnJlbW92ZShpbmRl
eCk7Ci0gICAgaWYgKCFNZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRSZW1vdmVNZWRp
YVN0cmVhbVRyYWNrKG1fb3duZXItPmRlc2NyaXB0b3IoKSwgdHJhY2stPmNvbXBvbmVudCgpKSkg
ewotICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgZGlzcGF0Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFsc2UsIGZhbHNlLCB0cmFjaykpOwotfQotCi12
b2lkIE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpyZW1vdmUoTWVkaWFTdHJlYW1Db21wb25lbnQqIGNv
bXBvbmVudCkKLXsKLSAgICBpZiAoIW1fb3duZXIgfHwgbV9vd25lci0+cmVhZHlTdGF0ZSgpID09
IE1lZGlhU3RyZWFtOjpFTkRFRCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgc2l6ZV90IGluZGV4
ID0gbm90Rm91bmQ7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdHJhY2tWZWN0b3Iu
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgaWYgKG1fdHJhY2tWZWN0b3JbaV0tPmNvbXBvbmVudCgp
ID09IGNvbXBvbmVudCkgewotICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoaW5kZXggPT0gbm90Rm91bmQpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0cmFjayA9IG1fdHJh
Y2tWZWN0b3JbaW5kZXhdOwotICAgIG1fdHJhY2tWZWN0b3IucmVtb3ZlKGluZGV4KTsKLSAgICBN
ZWRpYVN0cmVhbUNlbnRlcjo6aW5zdGFuY2UoKS5kaWRSZW1vdmVNZWRpYVN0cmVhbVRyYWNrKG1f
b3duZXItPmRlc2NyaXB0b3IoKSwgY29tcG9uZW50KTsKLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlh
U3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBm
YWxzZSwgZmFsc2UsIHRyYWNrKSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OnN0
b3AoKQotewotICAgIGRldGFjaE93bmVyKCk7Ci19Ci0KLWNvbnN0IEF0b21pY1N0cmluZyYgTWVk
aWFTdHJlYW1UcmFja0xpc3Q6OmludGVyZmFjZU5hbWUoKSBjb25zdAotewotICAgIHJldHVybiBl
dmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yTWVkaWFTdHJlYW1UcmFja0xpc3Q7Ci19Ci0KLVNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpzY3JpcHRFeGVjdXRpb25D
b250ZXh0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVj
dXRpb25Db250ZXh0KCk7Ci19Ci0KLUV2ZW50VGFyZ2V0RGF0YSogTWVkaWFTdHJlYW1UcmFja0xp
c3Q6OmV2ZW50VGFyZ2V0RGF0YSgpCi17Ci0gICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsK
LX0KLQotRXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6ZW5zdXJlRXZlbnRU
YXJnZXREYXRhKCkKLXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi19IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBFTkFCTEUoTUVESUFfU1RSRUFNKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrTGlzdC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrTGlzdC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWEzN2I2MWI2NTc5
ZDI5NDUwZGE2ZjE2MmM1MDM0NjlhZDQ4NzFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1UcmFja0xpc3QuaAorKysgL2Rldi9udWxsCkBAIC0xLDg1ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCi0gKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKLSAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotICovCi0KLSNpZm5kZWYgTWVkaWFTdHJlYW1UcmFja0xpc3RfaAotI2RlZmluZSBNZWRpYVN0
cmVhbVRyYWNrTGlzdF9oCi0KLSNpZiBFTkFCTEUoTUVESUFfU1RSRUFNKQotCi0jaW5jbHVkZSAi
QWN0aXZlRE9NT2JqZWN0LmgiCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKLSNpbmNsdWRlICJN
ZWRpYVN0cmVhbVRyYWNrLmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgTWVkaWFT
dHJlYW1UcmFja0xpc3QgOiBwdWJsaWMgUmVmQ291bnRlZDxNZWRpYVN0cmVhbVRyYWNrTGlzdD4s
IHB1YmxpYyBBY3RpdmVET01PYmplY3QsIHB1YmxpYyBFdmVudFRhcmdldCB7Ci1wdWJsaWM6Ci0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IGNyZWF0ZShNZWRpYVN0
cmVhbSosIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3ImKTsKLSAgICB2aXJ0dWFsIH5NZWRp
YVN0cmVhbVRyYWNrTGlzdCgpOwotCi0gICAgdm9pZCBkZXRhY2hPd25lcigpOwotCi0gICAgLy8g
RE9NIG1ldGhvZHMgJiBhdHRyaWJ1dGVzIGZvciBNZWRpYVN0cmVhbVRyYWNrTGlzdAotICAgIHVu
c2lnbmVkIGxlbmd0aCgpIGNvbnN0OwotICAgIE1lZGlhU3RyZWFtVHJhY2sqIGl0ZW0odW5zaWdu
ZWQgaW5kZXgpIGNvbnN0OwotCi0gICAgdm9pZCBhZGQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRy
YWNrPiwgRXhjZXB0aW9uQ29kZSYpOwotICAgIHZvaWQgcmVtb3ZlKFBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKLQotICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoYWRkdHJhY2spOwotICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIocmVtb3ZldHJhY2spOwotCi0gICAgdm9pZCByZW1vdmUoTWVkaWFTdHJlYW1Db21wb25lbnQq
KTsKLQotICAgIC8vIEFjdGl2ZURPTU9iamVjdAotICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgT1ZF
UlJJREU7Ci0KLSAgICAvLyBFdmVudFRhcmdldAotICAgIHZpcnR1YWwgY29uc3QgQXRvbWljU3Ry
aW5nJiBpbnRlcmZhY2VOYW1lKCkgY29uc3QgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QgT1ZFUlJJREU7
Ci0KLSAgICB1c2luZyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tMaXN0Pjo6cmVmOwotICAg
IHVzaW5nIFJlZkNvdW50ZWQ8TWVkaWFTdHJlYW1UcmFja0xpc3Q+OjpkZXJlZjsKLQotcHJpdmF0
ZToKLSAgICBNZWRpYVN0cmVhbVRyYWNrTGlzdChNZWRpYVN0cmVhbSosIGNvbnN0IE1lZGlhU3Ry
ZWFtVHJhY2tWZWN0b3ImKTsKLQotICAgIC8vIEV2ZW50VGFyZ2V0Ci0gICAgdmlydHVhbCBFdmVu
dFRhcmdldERhdGEqIGV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgRXZl
bnRUYXJnZXREYXRhKiBlbnN1cmVFdmVudFRhcmdldERhdGEoKSBPVkVSUklERTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IHJlZigpOyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRlcmVmRXZlbnRUYXJnZXQoKSBPVkVSUklERSB7IGRlcmVmKCk7IH0KLSAgICBFdmVu
dFRhcmdldERhdGEgbV9ldmVudFRhcmdldERhdGE7Ci0KLSAgICAvLyBtX293bmVyIGNhbiBiZWNv
bWUgemVyby4KLSAgICBNZWRpYVN0cmVhbSogbV9vd25lcjsKLQotICAgIE1lZGlhU3RyZWFtVHJh
Y2tWZWN0b3IgbV90cmFja1ZlY3RvcjsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNlbmRpZiAvLyBNZWRpYVN0cmVhbVRy
YWNrTGlzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtVHJhY2tMaXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFz
dHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAyMDhlMmM2ZTZhNzhhOTY5NzNiY2ZlZmMyZGI5NWNjYmQxYzY0ZTA4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsCisrKyAvZGV2L251bGwKQEAg
LTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotWwotICAgIENvbmRpdGlvbmFsPU1FRElBX1NU
UkVBTSwKLSAgICBJbmRleGVkR2V0dGVyLAotICAgIEV2ZW50VGFyZ2V0Ci1dIGludGVyZmFjZSBN
ZWRpYVN0cmVhbVRyYWNrTGlzdCB7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIHVuc2lnbmVkIGxv
bmcgbGVuZ3RoOwotICAgIE1lZGlhU3RyZWFtVHJhY2sgaXRlbShpbiBbSXNJbmRleF0gdW5zaWdu
ZWQgbG9uZyBpbmRleCk7Ci0KLSAgICB2b2lkIGFkZChpbiBNZWRpYVN0cmVhbVRyYWNrIHRyYWNr
KQotICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICB2b2lkIHJlbW92ZShpbiBNZWRp
YVN0cmVhbVRyYWNrIHRyYWNrKQotICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKLQotICAg
IGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYWRkdHJhY2s7Ci0gICAgYXR0cmlidXRlIEV2ZW50
TGlzdGVuZXIgb25yZW1vdmV0cmFjazsKLQotICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQot
ICAgIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIHZvaWQg
cmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaW4gW09wdGlvbmFsXSBib29sZWFuIHVzZUNhcHR1cmUpOwotICAgIGJvb2xl
YW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKLSAgICAgICAgcmFpc2VzKEV2ZW50RXhj
ZXB0aW9uKTsKLX07Ci0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVk
aW8vQXVkaW9Db250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2ViYXVkaW8vQXVk
aW9Db250ZXh0LmNwcAppbmRleCA5OTRmNjkzNDJmMTM1MDhmMDY1MTI4ZWIyN2JlODEwODcyYWZi
YzZkLi5mNDZhZDIwZjUwMmI3NWY3ZDRjMjBiMDFlMmU2ZWFmMTFjZTNkOTU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCkBAIC0zOTUs
NyArMzk1LDcgQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUF1ZGlvU291cmNlTm9kZT4gQXVkaW9D
b250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZShNZWQKIAogICAgIEF1ZGlvU291cmNlUHJv
dmlkZXIqIHByb3ZpZGVyID0gMDsKIAotICAgIGlmIChtZWRpYVN0cmVhbS0+aXNMb2NhbCgpICYm
IG1lZGlhU3RyZWFtLT5hdWRpb1RyYWNrcygpLT5sZW5ndGgoKSkgeworICAgIGlmIChtZWRpYVN0
cmVhbS0+aXNMb2NhbCgpICYmIG1lZGlhU3RyZWFtLT5nZXRBdWRpb1RyYWNrcygpLnNpemUoKSkg
ewogICAgICAgICBwcm92aWRlciA9IGRlc3RpbmF0aW9uKCktPmxvY2FsQXVkaW9JbnB1dFByb3Zp
ZGVyKCk7CiAgICAgICAgIGRlc3RpbmF0aW9uKCktPmVuYWJsZUlucHV0KCk7CiAgICAgfSBlbHNl
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUuZ3lwaQppbmRleCBkYTI5MmMxYmVlODNhZjgwMTc2NTA2NzdmNDgxZWZiZDI4
YzJiOGI5Li5hNGNhZDVmMGM3MDhhMGJiNmIzOTdkNWYxMjU4Yzg0OTMyYTE2YTkzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCkBAIC03MSw3ICs3MSw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbUxpc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2suaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwnLAotICAgICAgICAgICAgJ01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaWRsJywKICAgICAgICAgICAgICdNb2R1bGVz
L21lZGlhc3RyZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmlkbCcsCiAgICAgICAgICAgICAnTW9k
dWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5pZGwnLAogICAgICAgICAg
ICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yVXNlck1lZGlhRXJyb3JDYWxsYmFjay5p
ZGwnLApAQCAtODE0LDggKzgxMyw2IEBACiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9NZWRpYVN0cmVhbVRyYWNrLmgnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0v
TWVkaWFTdHJlYW1UcmFja0V2ZW50LmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuaCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9tZWRp
YXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAnLAotICAgICAgICAgICAgJ01vZHVsZXMv
bWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaCcsCiAgICAgICAgICAgICAnTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAnLAogICAgICAgICAgICAgJ01v
ZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaCcsCiAgICAgICAgICAgICAn
TW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvci5oJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3RvcnkuaW4gYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCmluZGV4IGY5MGM4YmI1ZTM2NmRiYmM0NzJj
M2Y5YzQ3NDNhM2I4OTJkY2U0ZDkuLjFiNWZkNTgwOGQ0OTU4YzY1MzI2ODZhNzRiZTZjYWNiZTMx
MzBjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZhY3Rvcnku
aW4KKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgpAQCAtMTks
NyArMTksNiBAQCBNZWRpYUNvbnRyb2xsZXIgY29uZGl0aW9uYWw9VklERU8KIE1lZGlhU291cmNl
IGNvbmRpdGlvbmFsPU1FRElBX1NPVVJDRQogTWVkaWFTdHJlYW0gY29uZGl0aW9uYWw9TUVESUFf
U1RSRUFNCiBNZWRpYVN0cmVhbVRyYWNrIGNvbmRpdGlvbmFsPU1FRElBX1NUUkVBTQotTWVkaWFT
dHJlYW1UcmFja0xpc3QgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCiBNZXNzYWdlUG9ydAogTmV0
d29ya0luZm9Db25uZWN0aW9uIGNvbmRpdGlvbmFsPU5FVFdPUktfSU5GTwogTm9kZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNj
cmlwdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bURlc2NyaXB0b3IuaAppbmRleCBiM2QyODk5YjVhOGNhZGJhOGE3NDJmNTQ3NWVhNGJlOWYzYWQ4
MDM1Li4xNDNmZjNmNzM4MjgzZDNiM2UxMDI4NmNlMTQxMWY2M2Q5OWYzNzhhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0
b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bURlc2NyaXB0b3IuaApAQCAtNjgsOSArNjgsMjMgQEAgcHVibGljOgogCiAgICAgdW5zaWduZWQg
bnVtYmVyT2ZBdWRpb0NvbXBvbmVudHMoKSBjb25zdCB7IHJldHVybiBtX2F1ZGlvQ29tcG9uZW50
cy5zaXplKCk7IH0KICAgICBNZWRpYVN0cmVhbUNvbXBvbmVudCogYXVkaW9Db21wb25lbnQodW5z
aWduZWQgaW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db21wb25lbnRzW2luZGV4XS5nZXQo
KTsgfQorICAgIHZvaWQgYWRkQXVkaW9Db21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNv
bXBvbmVudD4gY29tcG9uZW50KSB7IG1fYXVkaW9Db21wb25lbnRzLmFwcGVuZChjb21wb25lbnQp
OyB9CisgICAgdm9pZCByZW1vdmVBdWRpb0NvbXBvbmVudChNZWRpYVN0cmVhbUNvbXBvbmVudCog
Y29tcG9uZW50KQorICAgIHsKKyAgICAgICAgc2l6ZV90IHBvcyA9IG1fYXVkaW9Db21wb25lbnRz
LmZpbmQoY29tcG9uZW50KTsKKyAgICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAgICAgICAg
ICAgIG1fYXVkaW9Db21wb25lbnRzLnJlbW92ZShwb3MpOworICAgIH0KIAogICAgIHVuc2lnbmVk
IG51bWJlck9mVmlkZW9Db21wb25lbnRzKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0NvbXBvbmVu
dHMuc2l6ZSgpOyB9CiAgICAgTWVkaWFTdHJlYW1Db21wb25lbnQqIHZpZGVvQ29tcG9uZW50KHVu
c2lnbmVkIGluZGV4KSBjb25zdCB7IHJldHVybiBtX3ZpZGVvQ29tcG9uZW50c1tpbmRleF0uZ2V0
KCk7IH0KKyAgICB2b2lkIGFkZFZpZGVvQ29tcG9uZW50KFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1D
b21wb25lbnQ+IGNvbXBvbmVudCkgeyBtX3ZpZGVvQ29tcG9uZW50cy5hcHBlbmQoY29tcG9uZW50
KTsgfQorICAgIHZvaWQgcmVtb3ZlVmlkZW9Db21wb25lbnQoTWVkaWFTdHJlYW1Db21wb25lbnQq
IGNvbXBvbmVudCkKKyAgICB7CisgICAgICAgIHNpemVfdCBwb3MgPSBtX2F1ZGlvQ29tcG9uZW50
cy5maW5kKGNvbXBvbmVudCk7CisgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpCisgICAgICAg
ICAgICBtX2F1ZGlvQ29tcG9uZW50cy5yZW1vdmUocG9zKTsKKyAgICB9CiAKICAgICBib29sIGVu
ZGVkKCkgY29uc3QgeyByZXR1cm4gbV9lbmRlZDsgfQogICAgIHZvaWQgc2V0RW5kZWQoKSB7IG1f
ZW5kZWQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMDFhMDU2YzFkMDljMWZmNDFkNWYwNDY3MzdjODViZjYx
ODEwMGZjYy4uMzBmZDRiYzc2ZDE0MzMzNjI4YTA0MzI2NzBjZGVjOWM4NGYwNDU2ZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDI0IEBACisyMDEzLTAxLTE0ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bn
b29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogVXBkYXRlIHRoZSB0cmFjayBh
Y2Nlc3NvcnMgb24gTWVkaWFTdHJlYW0gdG8gbWF0Y2ggdGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9u
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDY2NjAK
KworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAgIFVwZGF0aW5nIGFu
ZCBleHBhbmRpbmcgdGVzdHMgZm9yIHRoZSBuZXcgZ2V0QXVkaW9UcmFja3MoKS9nZXRWaWRlb1Ry
YWNrcygpLgorCisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0cnVj
dG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
Q29uc3RydWN0b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2suaHRtbDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tM
aXN0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
VHJhY2tMaXN0Lmh0bWw6CisgICAgICAgICogZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVj
dGlvbi1zdGF0c1NlbGVjdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3IuaHRtbDoKKyAgICAgICAgKiBmYXN0
L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbDoKKyAgICAgICAgKiB3ZWJhdWRpby9tZWRpYXN0
cmVhbWF1ZGlvc291cmNlbm9kZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViYXVkaW8vbWVk
aWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbDoKKwogMjAxMy0wMS0xMyAgTm9lbCBHb3Jkb24g
IDxub2VsLmdvcmRvbkBnbWFpbC5jb20+CiAKICAgICAgICAgW2Nocm9taXVtXSBPcHRpbWl6ZSBz
dmcvVzNDLVNWRy0xLjEvYW5pbWF0ZS1lbGVtLTgwLXQuc3ZnIGV2ZXJ5d2hlcmUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29u
c3RydWN0b3ItZXhwZWN0ZWQudHh0CmluZGV4IDI4NWZmMmNlY2FiZjdmNGQ1ZDVmNzFjOGYzMWZh
MGUxODgzMDMwOTYuLjJkNTcwZjg5NjYxNjA5Y2ExY2UwYWNkMmM4ZTZlZWRlOTE3NzQwYzcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1
Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbUNvbnN0cnVjdG9yLWV4cGVjdGVkLnR4dApAQCAtNCwxMiArNCwxMiBAQCBPbiBzdWNj
ZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBi
eSAiVEVTVCBDT01QTEVURQogCiAKIFBBU1MgR290IGxvY2FsIHN0cmVhbS4KLVBBU1MgbG9jYWxT
dHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKLVBBU1MgbG9jYWxTdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoIGlzIDEKK1BBU1MgbG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgg
aXMgMQorUEFTUyBsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNT
IHR5cGVvZiB3ZWJraXRNZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJyBpcyB0cnVlCiBQQVNTIG5l
dyB3ZWJraXRNZWRpYVN0cmVhbShkb2N1bWVudCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjog
VHlwZSBlcnJvci4KIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtkb2N1bWVudF0pIHRocmV3
IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlLgotUEFTUyBu
ZXcgd2Via2l0TWVkaWFTdHJlYW0oW3N0cmVhbS5hdWRpb1RyYWNrc1swXSwgZG9jdW1lbnRdKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KK1BB
U1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgZG9j
dW1lbnRdKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQg
dHlwZS4KIFBBU1MgbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtudWxsXSkgdGhyZXcgZXhjZXB0aW9u
IFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUuCiBQQVNTIG5ldyB3ZWJraXRN
ZWRpYVN0cmVhbShbdW5kZWZpbmVkXSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxp
ZCBBcnJheSBlbGVtZW50IHR5cGUuCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShudWxsKSB0
aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgpAQCAtMTgsNDQgKzE4LDQ0IEBA
IFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5v
bi1udWxsLgogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgogUEFTUyBuZXdT
dHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0cmVhbS5h
dWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5s
ZW5ndGggaXMgblZpZGVvCitQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBp
cyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRl
bwogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMg
bm9uLW51bGwuCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQQVNTIG5l
d1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3U3RyZWFt
LmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZp
ZGVvCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBp
cyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1Mg
bmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJl
YW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbwotUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBu
VmlkZW8KIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1d
IGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgogUEFT
UyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0
cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52aWRlb1Ry
YWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlz
IG5WaWRlbwogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKIFBBU1MgW29iamVjdCBNZWRpYVN0cmVh
bV0gaXMgbm9uLW51bGwuCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQ
QVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3
U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVv
VHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgblZpZGVvCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3Ry
ZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4K
IFBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBu
ZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbwotUEFTUyBuZXdTdHJlYW0udmlk
ZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0
aCBpcyBuVmlkZW8KIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCiBQQVNTIFtvYmplY3QgTWVkaWFT
dHJlYW1dIGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVk
LgogUEFTUyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNT
IG5ld1N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52
aWRlb1RyYWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVu
Z3RoIGlzIG5WaWRlbwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ29uc3RydWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Db25zdHJ1Y3Rvci5odG1sCmluZGV4IDdkODRhM2VjYTlkY2EyMjk5OTQ3ODg0ZGU2OGQx
NjcxMmNlNTVkODMuLjYwNjkyNWE1MDgxZTllYTEyM2U3MjgzZGE0NTcyYjQ1OWE5Mjk3OWQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1
Y3Rvci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1D
b25zdHJ1Y3Rvci5odG1sCkBAIC0zMyw4ICszMyw4IEBAIGZ1bmN0aW9uIGdldFVzZXJNZWRpYShk
aWN0aW9uYXJ5LCBjYWxsYmFjaykgewogZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKICAgICBsb2Nh
bFN0cmVhbSA9IHM7CiAgICAgdGVzdFBhc3NlZCgnR290IGxvY2FsIHN0cmVhbS4nKTsKLSAgICBz
aG91bGRCZSgnbG9jYWxTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91
bGRCZSgnbG9jYWxTdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRC
ZSgnbG9jYWxTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgIHNob3Vs
ZEJlKCdsb2NhbFN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKICAgICBz
aG91bGRCZVRydWUoInR5cGVvZiB3ZWJraXRNZWRpYVN0cmVhbSA9PT0gJ2Z1bmN0aW9uJyIpOwog
CkBAIC00Nyw3ICs0Nyw3IEBAIGZ1bmN0aW9uIHRlc3RDb25zdHJ1Y3RvcihzKSB7CiAgICAgc3Ry
ZWFtID0gczsKICAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKGRvY3VtZW50
KScpOwogICAgIHNob3VsZFRocm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0oW2RvY3VtZW50XSkn
KTsKLSAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uYXVkaW9U
cmFja3NbMF0sIGRvY3VtZW50XSknKTsKKyAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlh
U3RyZWFtKFtzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKVswXSwgZG9jdW1lbnRdKScpOwogICAgIHNo
b3VsZFRocm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0oW251bGxdKScpOwogICAgIHNob3VsZFRo
cm93KCduZXcgd2Via2l0TWVkaWFTdHJlYW0oW3VuZGVmaW5lZF0pJyk7CiAgICAgc2hvdWxkVGhy
b3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShudWxsKScpOwpAQCAtNTYsMTIgKzU2LDEyIEBAIGZ1
bmN0aW9uIHRlc3RDb25zdHJ1Y3RvcihzKSB7CiAgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRN
ZWRpYVN0cmVhbSgpLCAwLCAwKTsKICAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtdKSwgMCwgMCk7CiAKLSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFt
KHMpLCBzLmF1ZGlvVHJhY2tzLmxlbmd0aCwgcy52aWRlb1RyYWNrcy5sZW5ndGgpOworICAgIHZl
cmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0ocyksIHMuZ2V0QXVkaW9UcmFja3MoKS5s
ZW5ndGgsIHMuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgpOwogCi0gICAgdmVyaWZ5U3RyZWFtKG5l
dyB3ZWJraXRNZWRpYVN0cmVhbShbcy5hdWRpb1RyYWNrc1swXV0pLCAxLCAwKTsKLSAgICB2ZXJp
ZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLnZpZGVvVHJhY2tzWzBdXSksIDAsIDEp
OwotICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MuYXVkaW9UcmFja3Nb
MF0sIHMudmlkZW9UcmFja3NbMF1dKSwgMSwgMSk7Ci0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJr
aXRNZWRpYVN0cmVhbShbcy52aWRlb1RyYWNrc1swXSwgcy5hdWRpb1RyYWNrc1swXSwgcy52aWRl
b1RyYWNrc1swXV0pLCAxLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3Ry
ZWFtKFtzLmdldEF1ZGlvVHJhY2tzKClbMF1dKSwgMSwgMCk7CisgICAgdmVyaWZ5U3RyZWFtKG5l
dyB3ZWJraXRNZWRpYVN0cmVhbShbcy5nZXRWaWRlb1RyYWNrcygpWzBdXSksIDAsIDEpOworICAg
IHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVkaWFTdHJlYW0oW3MuZ2V0QXVkaW9UcmFja3MoKVsw
XSwgcy5nZXRWaWRlb1RyYWNrcygpWzBdXSksIDEsIDEpOworICAgIHZlcmlmeVN0cmVhbShuZXcg
d2Via2l0TWVkaWFTdHJlYW0oW3MuZ2V0VmlkZW9UcmFja3MoKVswXSwgcy5nZXRBdWRpb1RyYWNr
cygpWzBdLCBzLmdldFZpZGVvVHJhY2tzKClbMF1dKSwgMSwgMSk7CiB9CiAKIGZ1bmN0aW9uIHZl
cmlmeVN0cmVhbShzLCBudW1BdWRpb1RyYWNrcywgbnVtVmlkZW9UcmFja3MpIHsKQEAgLTczLDgg
KzczLDggQEAgZnVuY3Rpb24gdmVyaWZ5U3RyZWFtKHMsIG51bUF1ZGlvVHJhY2tzLCBudW1WaWRl
b1RyYWNrcykgewogICAgIHNob3VsZEJlTm9uTnVsbChuZXdTdHJlYW0pOwogICAgIHNob3VsZEJl
RGVmaW5lZChuZXdTdHJlYW0pOwogICAgIHNob3VsZEJlKCJuZXdTdHJlYW0uY29uc3RydWN0b3Iu
bmFtZSIsICInTWVkaWFTdHJlYW0nIik7Ci0gICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5hdWRpb1Ry
YWNrcy5sZW5ndGgnLCAnbkF1ZGlvJyk7Ci0gICAgc2hvdWxkQmUoJ25ld1N0cmVhbS52aWRlb1Ry
YWNrcy5sZW5ndGgnLCAnblZpZGVvJyk7CisgICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5nZXRBdWRp
b1RyYWNrcygpLmxlbmd0aCcsICduQXVkaW8nKTsKKyAgICBzaG91bGRCZSgnbmV3U3RyZWFtLmdl
dFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJ25WaWRlbycpOwogfQogCiBnZXRVc2VyTWVkaWEoe3Zp
ZGVvOnRydWUsIGF1ZGlvOnRydWV9LCBnb3RTdHJlYW0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaHRtbAppbmRleCA3ZjViNmViN2RmZGVk
NjhmYjUzODEzYzRiZGM2MWNlMGU0ZTc0ZDYxLi5kMmY3NmFmNmM2OGQ1ZmFjODMyMjkyYjkzYzhh
YjgzNGJiYjQ0NWQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2suaHRtbApAQCAtNTMsNyArNTMsNyBAQCBmdW5jdGlvbiBnb3RTdHJlYW0o
cykgewogICAgIHRlc3RQYXNzZWQoJ2dldFVzZXJNZWRpYSBzdWNjZWVkZWQuJyk7CiAKICAgICBz
dHJlYW0gPSBzOwotICAgIHRyYWNrID0gc3RyZWFtLnZpZGVvVHJhY2tzWzBdOworICAgIHRyYWNr
ID0gc3RyZWFtLmdldFZpZGVvVHJhY2tzKClbMF07CiAKICAgICB0cmFjay5vbnVubXV0ZSA9IG9u
VHJhY2tVbm11dGU7CiAgICAgdHJhY2sub25tdXRlID0gb25UcmFja011dGU7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xp
c3QtZXhwZWN0ZWQudHh0CmluZGV4IDc4MDYyMzVjYTY5NDIyZGE3ZTEzN2E2YzE2OTA0NmM3OWI0
MjQyMzguLjA0ODllYmQ3YmI4YjE0YzFmZDdlMTJjZTg1ZjZjZDhmZWE2NTVmOGUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1U
cmFja0xpc3QtZXhwZWN0ZWQudHh0CkBAIC0zLDEwICszLDEyIEBAIFRlc3RzIE1lZGlhU3RyZWFt
VHJhY2tMaXN0IGNhbGxiYWNrcy4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogCitQQVNT
IHN0cmVhbTEuZ2V0VHJhY2tCeUlkKHRyYWNrLmlkKS5pZCBpcyB0cmFjay5pZAorUEFTUyBzdHJl
YW0yLmdldFRyYWNrQnlJZCh0cmFjay5pZCkgaXMgbnVsbAogUEFTUyBBZGQgdHJhY2sgY2FsbGJh
Y2sgc3VjY2VlZGVkLgogUEFTUyBSZW1vdmUgdHJhY2sgY2FsbGJhY2sgc3VjY2VlZGVkLgotUEFT
UyBzdHJlYW0xLnZpZGVvVHJhY2tzLmFkZChzdHJlYW0yLnZpZGVvVHJhY2tzWzBdKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgotUEFT
UyBzdHJlYW0xLnZpZGVvVHJhY2tzLnJlbW92ZShzdHJlYW0yLnZpZGVvVHJhY2tzWzBdKSB0aHJl
dyBleGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgor
UEFTUyBzdHJlYW0xLmFkZFRyYWNrKHN0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKVswXSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BB
U1Mgc3RyZWFtMS5yZW1vdmVUcmFjayhzdHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pIHRocmV3
IGV4Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaHRt
bAppbmRleCA1ZDMwZjE5YmViNjIyZWY1YjYxOGRiZmYyZDA3YmM5M2Q1ZWYwZTZhLi5iODJiZmI3
OTVhMmM1ZmM4MTJlNTk0YjUxNTFmYTFlYzUzYjU0MGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5odG1sCkBAIC0zMiwx
OCArMzIsMTkgQEAgZnVuY3Rpb24gb25SZW1vdmVUcmFjayhlKSB7CiAKICAgICAvLyBOb3cgdGVz
dCB0aGF0IGFkZCBmYWlsZXMgd2hlbiB0aGUgcGFyZW50IHN0cmVhbSBoYXMgYmVlbiBzdG9wcGVk
LgogICAgIHN0cmVhbTEuc3RvcCgpOwotICAgIHNob3VsZFRocm93KCdzdHJlYW0xLnZpZGVvVHJh
Y2tzLmFkZChzdHJlYW0yLnZpZGVvVHJhY2tzWzBdKScpOwotICAgIHNob3VsZFRocm93KCdzdHJl
YW0xLnZpZGVvVHJhY2tzLnJlbW92ZShzdHJlYW0yLnZpZGVvVHJhY2tzWzBdKScpOworICAgIHNo
b3VsZFRocm93KCdzdHJlYW0xLmFkZFRyYWNrKHN0cmVhbTIuZ2V0VmlkZW9UcmFja3MoKVswXSkn
KTsKKyAgICBzaG91bGRUaHJvdygnc3RyZWFtMS5yZW1vdmVUcmFjayhzdHJlYW0yLmdldFZpZGVv
VHJhY2tzKClbMF0pJyk7CiAKICAgICBmaW5pc2hKU1Rlc3QoKTsKIH0KIAogZnVuY3Rpb24gb25B
ZGRUcmFjayhlKSB7CiAgICAgdGVzdFBhc3NlZCgnQWRkIHRyYWNrIGNhbGxiYWNrIHN1Y2NlZWRl
ZC4nKTsKKyAgICBldmVudCA9IGU7CiAKLSAgICBzdHJlYW0xLnZpZGVvVHJhY2tzLm9ucmVtb3Zl
dHJhY2sgPSBvblJlbW92ZVRyYWNrOworICAgIHN0cmVhbTEub25yZW1vdmV0cmFjayA9IG9uUmVt
b3ZlVHJhY2s7CiAgICAgdHJ5IHsKLSAgICAgICAgc3RyZWFtMS52aWRlb1RyYWNrcy5yZW1vdmUo
ZS50cmFjayk7CisgICAgICAgIHN0cmVhbTEucmVtb3ZlVHJhY2soZXZlbnQudHJhY2spOwogICAg
IH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAgICAgICB0ZXN0RmFpbGVkKCJyZW1vdmUgdGhyZXcg
YW4gZXhjZXB0aW9uLiIpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTUyLDExICs1Mywx
NCBAQCBmdW5jdGlvbiBvbkFkZFRyYWNrKGUpIHsKIAogZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7
CiAgICAgc3RyZWFtMiA9IHM7CisgICAgc3RyZWFtMS5vbmFkZHRyYWNrID0gb25BZGRUcmFjazsK
IAotICAgIHN0cmVhbTEudmlkZW9UcmFja3Mub25hZGR0cmFjayA9IG9uQWRkVHJhY2s7CisgICAg
dHJhY2sgPSBzdHJlYW0xLmdldFZpZGVvVHJhY2tzKClbMF07CisgICAgc2hvdWxkQmUoJ3N0cmVh
bTEuZ2V0VHJhY2tCeUlkKHRyYWNrLmlkKS5pZCcsICd0cmFjay5pZCcpOworICAgIHNob3VsZEJl
TnVsbCgnc3RyZWFtMi5nZXRUcmFja0J5SWQodHJhY2suaWQpJyk7CiAKICAgICB0cnkgewotICAg
ICAgICBzdHJlYW0xLnZpZGVvVHJhY2tzLmFkZChzdHJlYW0yLnZpZGVvVHJhY2tzWzBdKTsKKyAg
ICAgICAgc3RyZWFtMS5hZGRUcmFjayhzdHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pOwogICAg
IH0gY2F0Y2ggKGV4Y2VwdGlvbikgewogICAgICAgICB0ZXN0RmFpbGVkKCJhZGQgdGhyZXcgYW4g
ZXhjZXB0aW9uLiIpOwogICAgICAgICBmaW5pc2hKU1Rlc3QoKTsKQEAgLTY1LDYgKzY5LDcgQEAg
ZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbTEocykgewogICAg
IHN0cmVhbTEgPSBzOworCiAgICAgZ2V0VXNlck1lZGlhKHthdWRpbzp0cnVlLCB2aWRlbzp0cnVl
fSwgZ290U3RyZWFtMik7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3It
ZXhwZWN0ZWQudHh0CmluZGV4IDlhY2ZjMjJkM2I3ZDVmMmVjN2UwNGZkZmRjZDQ4NzdiZDUzMWIz
ZWIuLjAwYzkwNTAwMDAxM2ZjYTdhYWJhMWIzMmUyNTc3MjMxNDg1YWRmYjkgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxl
Y3Rvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQ
ZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLWV4cGVjdGVkLnR4dApAQCAtNiw3ICs2LDcgQEAg
T24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9s
bG93ZWQgYnkgIlRFU1QgQ09NUExFVEUKIFBBU1MgcGMgPSBuZXcgd2Via2l0UlRDUGVlckNvbm5l
Y3Rpb24obnVsbCkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIGdldFVzZXJNZWRpYSh7
YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbSkgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIEdvdCBhIHN0cmVhbS4KLVBBU1MgcGMuZ2V0U3RhdHMoc3RhdHNIYW5kbGVyMiwg
cGMubG9jYWxTdHJlYW1zWzBdLnZpZGVvVHJhY2tzWzBdKSBkaWQgbm90IHRocm93IGV4Y2VwdGlv
bi4KK1BBU1MgcGMuZ2V0U3RhdHMoc3RhdHNIYW5kbGVyMiwgcGMubG9jYWxTdHJlYW1zWzBdLmdl
dFZpZGVvVHJhY2tzKClbMF0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBzdGF0c0hh
bmRsZXIyIHdhcyBjYWxsZWQKIFBBU1MgcmVzdWx0Lmxlbmd0aCBpcyA+PSAxCiBQQVNTIHRpbWVz
dGFtcCBpcyA+PSBzdGFydFRpbWUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFz
dHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci5odG1sIGIvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwKaW5k
ZXggNTk5ODY0YTkxM2JmMDg5MDAxNDc3ZWY0YjU3NDM4OWVjNmUwOGE3My4uOGE3NTY1OGZkZmVl
YWY2MDgzYjllNTNmZjg5NDIxODE1NDUzZjAyZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVj
dG9yLmh0bWwKQEAgLTMxLDcgKzMxLDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMpIHsKICAgICBz
dHJlYW0gPSBzOwogCiAgICAgcGMuYWRkU3RyZWFtKHN0cmVhbSk7Ci0gICAgc2hvdWxkTm90VGhy
b3coJ3BjLmdldFN0YXRzKHN0YXRzSGFuZGxlcjIsIHBjLmxvY2FsU3RyZWFtc1swXS52aWRlb1Ry
YWNrc1swXSknKTsKKyAgICBzaG91bGROb3RUaHJvdygncGMuZ2V0U3RhdHMoc3RhdHNIYW5kbGVy
MiwgcGMubG9jYWxTdHJlYW1zWzBdLmdldFZpZGVvVHJhY2tzKClbMF0pJyk7CiB9CiAKIGZ1bmN0
aW9uIHN0YXRzSGFuZGxlcjIoc3RhdHVzKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CmluZGV4IDJlMDM5NjI1ZDI4ZWVk
MTQ5YTg3YWJkYTY0ZDIzMjdiZDY2NzBiNzguLjczOGRjMjUyMGQ5ZmZkNmYxYjI5ZmVlNTg1Nzlh
ZjE5ODA3OTc2NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0
dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS1leHBlY3RlZC50eHQKQEAgLTYsMjYgKzYsMjYgQEAgT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUKIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86ZmFs
c2UsIHZpZGVvOmZhbHNlfSwgZXJyb3IsIGVycm9yKTsgdGhyZXcgZXhjZXB0aW9uIEVycm9yOiBO
b3RTdXBwb3J0ZWRFcnJvcjogRE9NIEV4Y2VwdGlvbiA5LgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0
R2V0VXNlck1lZGlhKHthdWRpbzp0cnVlfSwgZ290U3RyZWFtMSwgZXJyb3IpOyBkaWQgbm90IHRo
cm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KLVBBU1Mgc3RyZWFtLmF1ZGlv
VHJhY2tzLmxlbmd0aCBpcyAxCi1QQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMAor
UEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0
VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1l
ZGlhKHt2aWRlbzp0cnVlfSwgZ290U3RyZWFtMiwgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2Vw
dGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KLVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxl
bmd0aCBpcyAwCi1QQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMAorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFj
a3MoKS5sZW5ndGggaXMgMQogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRp
bzp0cnVlLCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtMywgZXJyb3IpOyBkaWQgbm90IHRocm93IGV4
Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4KLVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tz
Lmxlbmd0aCBpcyAxCi1QQVNTIHN0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGggaXMgMQorUEFTUyBz
dHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9U
cmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHth
dWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00
LCBlcnJvcik7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVk
LgotUEFTUyBzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtLnZpZGVv
VHJhY2tzLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBp
cyAxCitQQVNTIHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIG5hdmln
YXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5kYXRvcnk6eyd2YWxpZF9idXRfdW5z
dXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJy
b3IsIGVycm9yMSk7IGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBFcnJvciBjYWxsYmFj
ayBjYWxsZWQuCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnttYW5k
YXRvcnk6eyd2YWxpZF9hbmRfc3VwcG9ydGVkXzEnOjF9LCBvcHRpb25hbDpbeyd2YWxpZF9idXRf
dW5zdXBwb3J0ZWRfMSc6MH1dfSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTUsIGVycm9yKTsgZGlk
IG5vdCB0aHJvdyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCi1QQVNTIHN0cmVh
bS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgMQotUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3Ro
IGlzIDEKK1BBU1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1Mgc3Ry
ZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDEKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9t
ZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJl
YW0vZ2V0dXNlcm1lZGlhLmh0bWwKaW5kZXggNzZjNDAzMmRlNmUxMGZlMmIwYzFhYjFiZGJkYzll
NWY1YmIzNTc5My4uNjQ5ZDllYmY4YWYzMjJkMGQzOWVlYWI5NTIyYTJjZGJiYjNhM2ViZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRpYS5odG1sCkBAIC0y
NSw4ICsyNSw4IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbUluRXJyb3IocykgewogZnVuY3Rpb24gZ290
U3RyZWFtNShzKSB7CiAgICAgc3RyZWFtID0gczsKICAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2Vu
ZXJhdGVkLicpOwotICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEn
KTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAg
c2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hv
dWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAgICAgZmluaXNo
SlNUZXN0KCk7CiB9CiAKQEAgLTM5LDggKzM5LDggQEAgZnVuY3Rpb24gZXJyb3IxKCkgewogZnVu
Y3Rpb24gZ290U3RyZWFtNChzKSB7CiAgICAgc3RyZWFtID0gczsKICAgICB0ZXN0UGFzc2VkKCdT
dHJlYW0gZ2VuZXJhdGVkLicpOwotICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVu
Z3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcx
Jyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7
CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAK
ICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
e21hbmRhdG9yeTp7J3ZhbGlkX2J1dF91bnN1cHBvcnRlZF8xJzowfSwgb3B0aW9uYWw6W119LCB2
aWRlbzp0cnVlfSwgZ290U3RyZWFtSW5FcnJvciwgZXJyb3IxKTsiKTsKIH0KQEAgLTQ4LDggKzQ4
LDggQEAgZnVuY3Rpb24gZ290U3RyZWFtNChzKSB7CiBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsK
ICAgICBzdHJlYW0gPSBzOwogICAgIHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7Ci0g
ICAgc2hvdWxkQmUoJ3N0cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOwotICAgIHNob3Vs
ZEJlKCdzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFt
LmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKIAogICAgIHNob3VsZE5vdFRocm93KCJu
YXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5Ont9LCBvcHRpb25h
bDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW00LCBlcnJvcik7Iik7CiB9CkBAIC01Nyw4ICs1
Nyw4IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbTMocykgewogZnVuY3Rpb24gZ290U3RyZWFtMihzKSB7
CiAgICAgc3RyZWFtID0gczsKICAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOwot
ICAgIHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzAnKTsKLSAgICBzaG91
bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0
cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVh
bS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKICAgICBzaG91bGROb3RUaHJvdygi
bmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdv
dFN0cmVhbTMsIGVycm9yKTsiKTsKIH0KQEAgLTY2LDggKzY2LDggQEAgZnVuY3Rpb24gZ290U3Ry
ZWFtMihzKSB7CiBmdW5jdGlvbiBnb3RTdHJlYW0xKHMpIHsKICAgICBzdHJlYW0gPSBzOwogICAg
IHRlc3RQYXNzZWQoJ1N0cmVhbSBnZW5lcmF0ZWQuJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS5h
dWRpb1RyYWNrcy5sZW5ndGgnLCAnMScpOwotICAgIHNob3VsZEJlKCdzdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoJywgJzAnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgnc3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVu
Z3RoJywgJzAnKTsKIAogICAgIHNob3VsZE5vdFRocm93KCJuYXZpZ2F0b3Iud2Via2l0R2V0VXNl
ck1lZGlhKHt2aWRlbzp0cnVlfSwgZ290U3RyZWFtMiwgZXJyb3IpOyIpCiB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS1l
eHBlY3RlZC50eHQKaW5kZXggNTkyNzcyNDc2ODdmZGUzMTIwMTY3NGM5Nzk1MjFjZDc4NDllNWM3
ZC4uYjM2Njg4OWI4NzgyOTYxM2ExYzAxNTk0YWRiZjVjNTBhMDU3M2I1ZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2Rl
LWV4cGVjdGVkLnR4dApAQCAtMyw4ICszLDggQEAgQmFzaWMgdGVzdHMgZm9yIE1lZGlhU3RyZWFt
QXVkaW9Tb3VyY2VOb2RlIEFQSS4KIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIAogUEFTUyB7
YXVkaW86dHJ1ZX0gZ2VuZXJhdGVkIHN0cmVhbQotUEFTUyBzLmF1ZGlvVHJhY2tzLmxlbmd0aCBp
cyAxCi1QQVNTIHMudmlkZW9UcmFja3MubGVuZ3RoIGlzIDAKK1BBU1Mgcy5nZXRBdWRpb1RyYWNr
cygpLmxlbmd0aCBpcyAxCitQQVNTIHMuZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMAogUEFT
UyBTb3VyY2UgQXVkaW9Ob2RlIGhhcyBubyBpbnB1dHMuCiBQQVNTIFNvdXJjZSBBdWRpb05vZGUg
aGFzIG9uZSBvdXRwdXQuCiBQQVNTIGNvbm5lY3QoKSBleGNlcHRpb24gdGhyb3duIGZvciBpbGxl
Z2FsIGRlc3RpbmF0aW9uIEF1ZGlvTm9kZS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3dlYmF1
ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy93ZWJhdWRp
by9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sCmluZGV4IDBhN2E1NTI2ZWRjMzI5OWEx
ZGEwOTkyZWUxYjIxYjdiNzBkZjFiODkuLmUxMjJjYzNmZjI4ZWUzOWJlN2FjOThlNDAxZWI3YjYx
YzIyZDhmMTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVk
aW9zb3VyY2Vub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1h
dWRpb3NvdXJjZW5vZGUuaHRtbApAQCAtMzIsOCArMzIsOCBAQCBmdW5jdGlvbiBnZXRVc2VyTWVk
aWEoZGljdGlvbmFyeSwgY2FsbGJhY2spIHsKIGZ1bmN0aW9uIGdvdFN0cmVhbShzdHJlYW0pIHsK
ICAgICBzID0gc3RyZWFtOwogICAgIHRlc3RQYXNzZWQoJ3thdWRpbzp0cnVlfSBnZW5lcmF0ZWQg
c3RyZWFtJyk7Ci0gICAgc2hvdWxkQmUoJ3MuYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAg
ICBzaG91bGRCZSgncy52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMCcpOworICAgIHNob3VsZEJlKCdz
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRCZSgncy5nZXRWaWRl
b1RyYWNrcygpLmxlbmd0aCcsICcwJyk7CiAKICAgICBjb250ZXh0ID0gbmV3IHdlYmtpdEF1ZGlv
Q29udGV4dCgpOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182543</attachid>
            <date>2013-01-14 03:58:01 -0800</date>
            <delta_ts>2013-01-14 05:32:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-106660-20130114125501.patch</filename>
            <type>text/plain</type>
            <size>53363</size>
            <attacher name="Tommy Widenflycht">tommyw</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5NjAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjdlYmVlZjJkMzk5ZTU1
MGNlNzk2YzhiYjgzNDg4MWNjNGMxMTgyNS4uYTZkMmQ4NGQ0ZDNlMTRjYmExOGIzZTM5MzQ2Yzk4
MTRjNzliOWIyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEzLTAxLTE0ICBUb21t
eSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUuY29tPgorCisgICAgICAgIE1lZGlhU3RyZWFt
IEFQSTogVXBkYXRlIHRoZSB0cmFjayBhY2Nlc3NvcnMgb24gTWVkaWFTdHJlYW0gdG8gbWF0Y2gg
dGhlIGxhdGVzdCBzcGVjaWZpY2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDY2NjAKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRo
LgorCisgICAgICAgIFRoZSBzcGVjIGhhcyBzaWduaWZpY2FudGx5IGNoYW5nZWQgaG93IHRyYWNr
cyBhcmUgYWNjZXNzZWQgZnJvbSBhIE1lZGlhU3RyZWFtOgorICAgICAgICBodHRwOi8vZGV2Lncz
Lm9yZy8yMDExL3dlYnJ0Yy9lZGl0b3IvZ2V0dXNlcm1lZGlhLmh0bWwKKworICAgICAgICBJbiBz
aG9ydDogdGhlIGF0dHJpYnV0ZXMgYXVkaW9UcmFjay92aWRlb1RyYWNrIHRoYXQgcmV0dXJuZWQg
c3BlY2lhbCBNZWRpYVN0cmVhbVRyYWNrTGlzdHMgaGF2ZSBiZWVuCisgICAgICAgIHJlcGxhY2Vk
IGJ5IHRoZSBmdW5jdGlvbnMgZ2V0QXVkaW9UcmFja3MoKS9nZXRWaWRlb1RyYWNrcyB0aGF0IHJl
dHVybiBzdGFuZGFyZCBzZXF1ZW5jZXMgb2YKKyAgICAgICAgTWVkaWFTdHJlYW1UcmFja3MuCisK
KyAgICAgICAgRXhpc3RpbmcgdGVzdHMgdXBkYXRlZCBhbmQgZXhwYW5kZWQgdG8gY292ZXIgcGF0
Y2guCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5s
aXN0LmFtOgorICAgICAgICAqIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVN0cmVhbTo6TWVkaWFTdHJlYW0pOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJl
YW06On5NZWRpYVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVhZHlT
dGF0ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhU3RyZWFt
OjphZGRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW06OmdldFRyYWNrQnlJZCk6CisgICAgICAg
IChXZWJDb3JlOjpNZWRpYVN0cmVhbTo6c3RyZWFtRW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW06OmNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFT
dHJlYW06OnNjaGVkdWxlRGlzcGF0Y2hFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0
cmVhbTo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlh
c3RyZWFtL01lZGlhU3RyZWFtLmg6CisgICAgICAgIChNZWRpYVN0cmVhbSk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVN0cmVhbTo6Z2V0QXVkaW9UcmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFTdHJlYW06OmdldFZpZGVvVHJhY2tzKToKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2tMaXN0LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBNb2R1bGVzL21lZGlhc3Ry
ZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmg6IFJlbW92ZWQuCisgICAgICAgICogTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5pZGw6IFJlbW92ZWQuCisgICAgICAgICog
TW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXVk
aW9Db250ZXh0OjpjcmVhdGVNZWRpYVN0cmVhbVNvdXJjZSk6CisgICAgICAgICogV2ViQ29yZS5n
eXBpOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldEZhY3RvcnkuaW46CisgICAgICAgICogcGxh
dGZvcm0vbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1EZXNjcmlwdG9yLmg6CisgICAgICAgIChXZWJD
b3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OmFkZEF1ZGlvQ29tcG9uZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lZGlhU3RyZWFtRGVzY3JpcHRvcjo6cmVtb3ZlQXVkaW9Db21wb25lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFTdHJlYW1EZXNjcmlwdG9yOjphZGRWaWRlb0NvbXBvbmVu
dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVN0cmVhbURlc2NyaXB0b3I6OnJlbW92ZVZpZGVv
Q29tcG9uZW50KToKKwogMjAxMy0wMS0xNCAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW1Y4XSBQYXNzIGFuIElzb2xhdGUgdG8gYXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCAxYmNlNjIxMWMyNjUyODM5YzQ4
YjUwMTY4YjM2NTIxMGE2YTU2MWZhLi42ODRiOWJlNjczNDU4Mzc4NWU5N2I5YTBkZDZmZWJmNTlm
ZWQ1MzhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjIwLDcgKzIyMCw2IEBAIHNldChXZWJD
b3JlX0lETF9GSUxFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1MaXN0Lmlk
bAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5pZGwKICAgICBNb2R1
bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5pZGwKLSAgICBNb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmlkbAogICAgIE1vZHVsZXMvbWVkaWFzdHJl
YW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uaWRsCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JVc2VyTWVkaWFFcnJvci5pZGwKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
clVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsCkBAIC04NjEsNyArODYwLDYgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1SZWdpc3RyeS5j
cHAKICAgICBNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suY3BwCiAgICAgTW9k
dWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwCi0gICAgTW9kdWxlcy9t
ZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAKICAgICBNb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvck1lZGlhU3RyZWFtLmNwcAogICAgIE1vZHVsZXMvbWVkaWFzdHJlYW0vUlRD
RGF0YUNoYW5uZWwuY3BwCiAgICAgTW9kdWxlcy9tZWRpYXN0cmVhbS9SVENEYXRhQ2hhbm5lbEV2
ZW50LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZmFiZjM1MzUzOTA0NGFm
ZWI3MDQwMWYyNmFjMTgxMzEzY2NkNjc1Zi4uNDA0NmE5OTkzOTk2YWI1MmFhZjk0ZTE5ZmVjYTdm
ZDBmMmU2YTMyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01MjEsOCArNTIx
LDYgQEAgd2ViY29yZV9idWlsdF9zb3VyY2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3Jl
L0pTTWVkaWFTdHJlYW1UcmFjay5oIFwKIAlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFT
dHJlYW1UcmFja0V2ZW50LmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhU3Ry
ZWFtVHJhY2tFdmVudC5oIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1U
cmFja0xpc3QuY3BwIFwKLQlEZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTTWVkaWFTdHJlYW1UcmFj
a0xpc3QuaCBcCiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0LmNwcCBc
CiAJRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU01lZGlhUXVlcnlMaXN0LmggXAogCURlcml2ZWRT
b3VyY2VzL1dlYkNvcmUvSlNNZW1vcnlJbmZvLmNwcCBcCkBAIC0xMjQzLDcgKzEyNDEsNiBAQCBk
b21fYmluZGluZ19pZGxzICs9IFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVk
aWFTdHJlYW1MaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlh
U3RyZWFtVHJhY2suaWRsIFwKIAkkKFdlYkNvcmUpL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1UcmFja0V2ZW50LmlkbCBcCi0JJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFtL01l
ZGlhU3RyZWFtVHJhY2tMaXN0LmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3RyZWFt
L05hdmlnYXRvck1lZGlhU3RyZWFtLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmlkbCBcCiAJJChXZWJDb3JlKS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yQ2FsbGJhY2suaWRsIFwKQEAgLTE5Mzks
OCArMTkzNiw2IEBAIHdlYmNvcmVfbW9kdWxlc19zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCBcCiAJU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQuY3BwIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tFdmVudC5oIFwK
LQlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrTGlzdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhU3RyZWFtLmNwcCBcCiAJU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYVN0cmVhbS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3Ry
ZWFtL05hdmlnYXRvclVzZXJNZWRpYUVycm9yLmggXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmNwcAppbmRleCAwZTFjZTRkNDBjZTQwYmZm
ZmJlOWM0Y2JkNWQ1MDhmMzY1NTA3OTVmLi5jMTU5MDQyMzMyNzEwMjEyZDRhOTRmNGNiYWMxZmYw
ZjQwNTI0Zjk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFt
L01lZGlhU3RyZWFtLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKICNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgogI2luY2x1ZGUgIk1lZGlhU3Ry
ZWFtU291cmNlLmgiCisjaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja0V2ZW50LmgiCiAjaW5jbHVk
ZSAiVVVJRC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03OCwxMSArNzksMTEgQEAgUGFz
c1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXMKICAgICBNZWRpYVN0cmVhbVNvdXJjZVZlY3RvciBhdWRpb1Nv
dXJjZXM7CiAgICAgTWVkaWFTdHJlYW1Tb3VyY2VWZWN0b3IgdmlkZW9Tb3VyY2VzOwogCi0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW0tPmF1ZGlvVHJhY2tzKCktPmxlbmd0aCgpOyAr
K2kpCi0gICAgICAgIHByb2Nlc3NUcmFjayhzdHJlYW0tPmF1ZGlvVHJhY2tzKCktPml0ZW0oaSks
IGF1ZGlvU291cmNlcyk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdHJlYW0tPm1fYXVk
aW9UcmFja3Muc2l6ZSgpOyArK2kpCisgICAgICAgIHByb2Nlc3NUcmFjayhzdHJlYW0tPm1fYXVk
aW9UcmFja3NbaV0uZ2V0KCksIGF1ZGlvU291cmNlcyk7CiAKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHN0cmVhbS0+dmlkZW9UcmFja3MoKS0+bGVuZ3RoKCk7ICsraSkKLSAgICAgICAgcHJv
Y2Vzc1RyYWNrKHN0cmVhbS0+dmlkZW9UcmFja3MoKS0+aXRlbShpKSwgdmlkZW9Tb3VyY2VzKTsK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHN0cmVhbS0+bV92aWRlb1RyYWNrcy5zaXplKCk7
ICsraSkKKyAgICAgICAgcHJvY2Vzc1RyYWNrKHN0cmVhbS0+bV92aWRlb1RyYWNrc1tpXS5nZXQo
KSwgdmlkZW9Tb3VyY2VzKTsKIAogICAgIHJldHVybiBjcmVhdGVGcm9tU291cmNlVmVjdG9ycyhj
b250ZXh0LCBhdWRpb1NvdXJjZXMsIHZpZGVvU291cmNlcyk7CiB9CkBAIC0xMDUsMzUgKzEwNiwx
MTggQEAgUGFzc1JlZlB0cjxNZWRpYVN0cmVhbT4gTWVkaWFTdHJlYW06OmNyZWF0ZShTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBQYXMKIAogTWVkaWFTdHJlYW06Ok1lZGlhU3RyZWFt
KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1E
ZXNjcmlwdG9yPiBzdHJlYW1EZXNjcmlwdG9yKQogICAgIDogQ29udGV4dERlc3RydWN0aW9uT2Jz
ZXJ2ZXIoY29udGV4dCkKKyAgICAsIG1fc3RvcHBlZChmYWxzZSkKICAgICAsIG1fZGVzY3JpcHRv
cihzdHJlYW1EZXNjcmlwdG9yKQorICAgICwgbV9zY2hlZHVsZWRFdmVudFRpbWVyKHRoaXMsICZN
ZWRpYVN0cmVhbTo6c2NoZWR1bGVkRXZlbnRUaW1lckZpcmVkKQogewogICAgIG1fZGVzY3JpcHRv
ci0+c2V0Q2xpZW50KHRoaXMpOwogCi0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBhdWRpb1Ry
YWNrVmVjdG9yOwogICAgIHNpemVfdCBudW1iZXJPZkF1ZGlvVHJhY2tzID0gbV9kZXNjcmlwdG9y
LT5udW1iZXJPZkF1ZGlvQ29tcG9uZW50cygpOwotICAgIGF1ZGlvVHJhY2tWZWN0b3IucmVzZXJ2
ZUNhcGFjaXR5KG51bWJlck9mQXVkaW9UcmFja3MpOworICAgIG1fYXVkaW9UcmFja3MucmVzZXJ2
ZUNhcGFjaXR5KG51bWJlck9mQXVkaW9UcmFja3MpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZBdWRpb1RyYWNrczsgaSsrKQotICAgICAgICBhdWRpb1RyYWNrVmVjdG9yLmFw
cGVuZChNZWRpYVN0cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBtX2Rl
c2NyaXB0b3ItPmF1ZGlvQ29tcG9uZW50KGkpKSk7Ci0gICAgbV9hdWRpb1RyYWNrcyA9IE1lZGlh
U3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUodGhpcywgYXVkaW9UcmFja1ZlY3Rvcik7CisgICAgICAg
IG1fYXVkaW9UcmFja3MuYXBwZW5kKE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShjb250ZXh0LCBt
X2Rlc2NyaXB0b3IsIG1fZGVzY3JpcHRvci0+YXVkaW9Db21wb25lbnQoaSkpKTsKIAotICAgIE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3IgdmlkZW9UcmFja1ZlY3RvcjsKICAgICBzaXplX3QgbnVtYmVy
T2ZWaWRlb1RyYWNrcyA9IG1fZGVzY3JpcHRvci0+bnVtYmVyT2ZWaWRlb0NvbXBvbmVudHMoKTsK
LSAgICB2aWRlb1RyYWNrVmVjdG9yLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tz
KTsKKyAgICBtX3ZpZGVvVHJhY2tzLnJlc2VydmVDYXBhY2l0eShudW1iZXJPZlZpZGVvVHJhY2tz
KTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVmlkZW9UcmFja3M7IGkrKykK
LSAgICAgICAgdmlkZW9UcmFja1ZlY3Rvci5hcHBlbmQoTWVkaWFTdHJlYW1UcmFjazo6Y3JlYXRl
KGNvbnRleHQsIG1fZGVzY3JpcHRvciwgbV9kZXNjcmlwdG9yLT52aWRlb0NvbXBvbmVudChpKSkp
OwotICAgIG1fdmlkZW9UcmFja3MgPSBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6Y3JlYXRlKHRoaXMs
IHZpZGVvVHJhY2tWZWN0b3IpOworICAgICAgICBtX3ZpZGVvVHJhY2tzLmFwcGVuZChNZWRpYVN0
cmVhbVRyYWNrOjpjcmVhdGUoY29udGV4dCwgbV9kZXNjcmlwdG9yLCBtX2Rlc2NyaXB0b3ItPnZp
ZGVvQ29tcG9uZW50KGkpKSk7CiB9CiAKIE1lZGlhU3RyZWFtOjp+TWVkaWFTdHJlYW0oKQogewog
ICAgIG1fZGVzY3JpcHRvci0+c2V0Q2xpZW50KDApOwotICAgIG1fYXVkaW9UcmFja3MtPmRldGFj
aE93bmVyKCk7Ci0gICAgbV92aWRlb1RyYWNrcy0+ZGV0YWNoT3duZXIoKTsKIH0KIAogYm9vbCBN
ZWRpYVN0cmVhbTo6ZW5kZWQoKSBjb25zdAogewotICAgIHJldHVybiBtX2Rlc2NyaXB0b3ItPmVu
ZGVkKCk7CisgICAgcmV0dXJuIG1fc3RvcHBlZCB8fCBtX2Rlc2NyaXB0b3ItPmVuZGVkKCk7Cit9
CisKK3ZvaWQgTWVkaWFTdHJlYW06OmFkZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFj
az4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChlbmRlZCgpKSB7Cisg
ICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBpZiAoIXBycFRyYWNrKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJh
Y2sgPSBwcnBUcmFjazsKKworICAgIGlmIChnZXRUcmFja0J5SWQodHJhY2stPmlkKCkpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1Db21wb25lbnQ+IGNvbXBvbmVu
dCA9IE1lZGlhU3RyZWFtQ29tcG9uZW50OjpjcmVhdGUodHJhY2stPmNvbXBvbmVudCgpLT5zb3Vy
Y2UoKSk7CisgICAgUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+IG5ld1RyYWNrID0gTWVkaWFTdHJl
YW1UcmFjazo6Y3JlYXRlKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSwgbV9kZXNjcmlwdG9yLCBj
b21wb25lbnQuZ2V0KCkpOworCisgICAgc3dpdGNoIChjb21wb25lbnQtPnNvdXJjZSgpLT50eXBl
KCkpIHsKKyAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNlOjpUeXBlQXVkaW86CisgICAgICAgIG1f
ZGVzY3JpcHRvci0+YWRkQXVkaW9Db21wb25lbnQoY29tcG9uZW50LnJlbGVhc2UoKSk7CisgICAg
ICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKG5ld1RyYWNrKTsKKyAgICAgICAgYnJlYWs7CisgICAg
Y2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgorICAgICAgICBtX2Rlc2NyaXB0b3It
PmFkZFZpZGVvQ29tcG9uZW50KGNvbXBvbmVudC5yZWxlYXNlKCkpOworICAgICAgICBtX3ZpZGVv
VHJhY2tzLmFwcGVuZChuZXdUcmFjayk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIE1l
ZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZEFkZE1lZGlhU3RyZWFtVHJhY2sobV9kZXNj
cmlwdG9yLmdldCgpLCBuZXdUcmFjay0+Y29tcG9uZW50KCkpOworICAgIHNjaGVkdWxlRGlzcGF0
Y2hFdmVudChNZWRpYVN0cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuYWRkdHJh
Y2tFdmVudCwgZmFsc2UsIGZhbHNlLCBuZXdUcmFjay5yZWxlYXNlKCkpKTsKK30KKwordm9pZCBN
ZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiBwcnBU
cmFjayAsIEV4Y2VwdGlvbkNvZGUmIGVjKQoreworICAgIGlmIChlbmRlZCgpKSB7CisgICAgICAg
IGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBp
ZiAoIXBycFRyYWNrKSB7CisgICAgICAgIGVjID0gVFlQRV9NSVNNQVRDSF9FUlI7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSBw
cnBUcmFjazsKKworICAgIHN3aXRjaCAodHJhY2stPmNvbXBvbmVudCgpLT5zb3VyY2UoKS0+dHlw
ZSgpKSB7CisgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZUF1ZGlvOiB7CisgICAgICAg
IHNpemVfdCBwb3MgPSBtX2F1ZGlvVHJhY2tzLmZpbmQodHJhY2spOworICAgICAgICBpZiAocG9z
ICE9IG5vdEZvdW5kKSB7CisgICAgICAgICAgICBtX2F1ZGlvVHJhY2tzLnJlbW92ZShwb3MpOwor
ICAgICAgICAgICAgbV9kZXNjcmlwdG9yLT5yZW1vdmVBdWRpb0NvbXBvbmVudCh0cmFjay0+Y29t
cG9uZW50KCkpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIE1l
ZGlhU3RyZWFtU291cmNlOjpUeXBlVmlkZW86IHsKKyAgICAgICAgc2l6ZV90IHBvcyA9IG1fdmlk
ZW9UcmFja3MuZmluZCh0cmFjayk7CisgICAgICAgIGlmIChwb3MgIT0gbm90Rm91bmQpIHsKKyAg
ICAgICAgICAgIG1fdmlkZW9UcmFja3MucmVtb3ZlKHBvcyk7CisgICAgICAgICAgICBtX2Rlc2Ny
aXB0b3ItPnJlbW92ZVZpZGVvQ29tcG9uZW50KHRyYWNrLT5jb21wb25lbnQoKSk7CisgICAgICAg
IH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIH0KKworICAgIE1lZGlhU3RyZWFtQ2VudGVy
OjppbnN0YW5jZSgpLmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2sobV9kZXNjcmlwdG9yLmdldCgp
LCB0cmFjay0+Y29tcG9uZW50KCkpOworICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChNZWRpYVN0
cmVhbVRyYWNrRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVtb3ZldHJhY2tFdmVudCwgZmFs
c2UsIGZhbHNlLCB0cmFjay5yZWxlYXNlKCkpKTsKK30KKworTWVkaWFTdHJlYW1UcmFjayogTWVk
aWFTdHJlYW06OmdldFRyYWNrQnlJZChTdHJpbmcgaWQpCit7CisgICAgZm9yIChNZWRpYVN0cmVh
bVRyYWNrVmVjdG9yOjppdGVyYXRvciBpdGVyID0gbV9hdWRpb1RyYWNrcy5iZWdpbigpOyBpdGVy
ICE9IG1fYXVkaW9UcmFja3MuZW5kKCk7ICsraXRlcikgeworICAgICAgICBpZiAoKCppdGVyKS0+
aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiAoKml0ZXIpLmdldCgpOworICAgIH0KKwor
ICAgIGZvciAoTWVkaWFTdHJlYW1UcmFja1ZlY3Rvcjo6aXRlcmF0b3IgaXRlciA9IG1fdmlkZW9U
cmFja3MuYmVnaW4oKTsgaXRlciAhPSBtX3ZpZGVvVHJhY2tzLmVuZCgpOyArK2l0ZXIpIHsKKyAg
ICAgICAgaWYgKCgqaXRlciktPmlkKCkgPT0gaWQpCisgICAgICAgICAgICByZXR1cm4gKCppdGVy
KS5nZXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKIH0KIAogdm9pZCBNZWRpYVN0cmVhbTo6
c3RyZWFtRW5kZWQoKQpAQCAtMTQyLDEwICsyMjYsMTIgQEAgdm9pZCBNZWRpYVN0cmVhbTo6c3Ry
ZWFtRW5kZWQoKQogICAgICAgICByZXR1cm47CiAKICAgICBtX2Rlc2NyaXB0b3ItPnNldEVuZGVk
KCk7Ci0gICAgbV9hdWRpb1RyYWNrcy0+ZGV0YWNoT3duZXIoKTsKLSAgICBtX3ZpZGVvVHJhY2tz
LT5kZXRhY2hPd25lcigpOworICAgIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5lbmRlZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKK30KIAotICAgIGRpc3Bh
dGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZW5kZWRFdmVudCwgZmFsc2UsIGZh
bHNlKSk7Cit2b2lkIE1lZGlhU3RyZWFtOjpjb250ZXh0RGVzdHJveWVkKCkKK3sKKyAgICBtX3N0
b3BwZWQgPSB0cnVlOwogfQogCiBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhU3RyZWFtOjppbnRl
cmZhY2VOYW1lKCkgY29uc3QKQEAgLTE3MCwyOSArMjU2LDczIEBAIEV2ZW50VGFyZ2V0RGF0YSog
TWVkaWFTdHJlYW06OmVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpCiAKIHZvaWQgTWVkaWFTdHJlYW06
OmFkZFRyYWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCiB7CisgICAgaWYgKGVu
ZGVkKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiB0
cmFjayA9IE1lZGlhU3RyZWFtVHJhY2s6OmNyZWF0ZShzY3JpcHRFeGVjdXRpb25Db250ZXh0KCks
IG1fZGVzY3JpcHRvciwgY29tcG9uZW50KTsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAg
ICBzd2l0Y2ggKGNvbXBvbmVudC0+c291cmNlKCktPnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFT
dHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKLSAgICAgICAgbV9hdWRpb1RyYWNrcy0+YWRkKHRyYWNr
LCBlYyk7CisgICAgICAgIG1fYXVkaW9UcmFja3MuYXBwZW5kKHRyYWNrKTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBNZWRpYVN0cmVhbVNvdXJjZTo6VHlwZVZpZGVvOgotICAgICAgICBtX3Zp
ZGVvVHJhY2tzLT5hZGQodHJhY2ssIGVjKTsKKyAgICAgICAgbV92aWRlb1RyYWNrcy5hcHBlbmQo
dHJhY2spOwogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgQVNTRVJUKCFlYyk7CisKKyAgICBz
Y2hlZHVsZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnRO
YW1lcygpLmFkZHRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKIH0KIAogdm9pZCBN
ZWRpYVN0cmVhbTo6cmVtb3ZlVHJhY2soTWVkaWFTdHJlYW1Db21wb25lbnQqIGNvbXBvbmVudCkK
IHsKKyAgICBpZiAoZW5kZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTWVkaWFTdHJlYW1U
cmFja1ZlY3RvciogdHJhY2tzID0gMDsKICAgICBzd2l0Y2ggKGNvbXBvbmVudC0+c291cmNlKCkt
PnR5cGUoKSkgewogICAgIGNhc2UgTWVkaWFTdHJlYW1Tb3VyY2U6OlR5cGVBdWRpbzoKLSAgICAg
ICAgbV9hdWRpb1RyYWNrcy0+cmVtb3ZlKGNvbXBvbmVudCk7CisgICAgICAgIHRyYWNrcyA9ICZt
X2F1ZGlvVHJhY2tzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIE1lZGlhU3RyZWFtU291cmNl
OjpUeXBlVmlkZW86Ci0gICAgICAgIG1fdmlkZW9UcmFja3MtPnJlbW92ZShjb21wb25lbnQpOwor
ICAgICAgICB0cmFja3MgPSAmbV92aWRlb1RyYWNrczsKICAgICAgICAgYnJlYWs7CiAgICAgfQor
CisgICAgc2l6ZV90IGluZGV4ID0gbm90Rm91bmQ7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCB0cmFja3MtPnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICgoKnRyYWNrcylbaV0tPmNvbXBv
bmVudCgpID09IGNvbXBvbmVudCkgeworICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGluZGV4ID09IG5vdEZvdW5kKQor
ICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4gdHJhY2sgPSAo
KnRyYWNrcylbaW5kZXhdOworICAgIHRyYWNrcy0+cmVtb3ZlKGluZGV4KTsKKyAgICBzY2hlZHVs
ZURpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsKK30KKwordm9pZCBNZWRp
YVN0cmVhbTo6c2NoZWR1bGVEaXNwYXRjaEV2ZW50KFBhc3NSZWZQdHI8RXZlbnQ+IGV2ZW50KQor
eworICAgIG1fc2NoZWR1bGVkRXZlbnRzLmFwcGVuZChldmVudCk7CisKKyAgICBpZiAoIW1fc2No
ZWR1bGVkRXZlbnRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICBtX3NjaGVkdWxlZEV2ZW50VGlt
ZXIuc3RhcnRPbmVTaG90KDApOworfQorCit2b2lkIE1lZGlhU3RyZWFtOjpzY2hlZHVsZWRFdmVu
dFRpbWVyRmlyZWQoVGltZXI8TWVkaWFTdHJlYW0+KikKK3sKKyAgICBpZiAobV9zdG9wcGVkKQor
ICAgICAgICByZXR1cm47CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2ZW50PiA+IGV2ZW50czsKKyAg
ICBldmVudHMuc3dhcChtX3NjaGVkdWxlZEV2ZW50cyk7CisKKyAgICBWZWN0b3I8UmVmUHRyPEV2
ZW50PiA+OjppdGVyYXRvciBpdCA9IGV2ZW50cy5iZWdpbigpOworICAgIGZvciAoOyBpdCAhPSBl
dmVudHMuZW5kKCk7ICsraXQpCisgICAgICAgIGRpc3BhdGNoRXZlbnQoKCppdCkucmVsZWFzZSgp
KTsKKworICAgIGV2ZW50cy5jbGVhcigpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFt
LmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmgKaW5k
ZXggMTQ1NTYxYjhiNjVmZDkwN2ZlOWVhYWU3MzAwMDRmZDgxNDhhNTdiMy4uZjQ5YjdmNzY0MjQx
ODlhMTE1NWM2ZjhjODJkOGZlNDEyNGM1ODRmMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaApAQCAtMzAsOCArMzAsMTAgQEAKIAogI2lu
Y2x1ZGUgIkNvbnRleHREZXN0cnVjdGlvbk9ic2VydmVyLmgiCiAjaW5jbHVkZSAiRXZlbnRUYXJn
ZXQuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25CYXNlLmgiCiAjaW5jbHVkZSAiTWVkaWFTdHJlYW1E
ZXNjcmlwdG9yLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW1UcmFja0xpc3QuaCIKKyNpbmNsdWRl
ICJNZWRpYVN0cmVhbVRyYWNrLmgiCisjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIApAQCAtNTAsMTIgKzUyLDE4
IEBAIHB1YmxpYzoKIAogICAgIFN0cmluZyBpZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGVzY3JpcHRv
ci0+aWQoKTsgfQogCi0gICAgTWVkaWFTdHJlYW1UcmFja0xpc3QqIGF1ZGlvVHJhY2tzKCkgeyBy
ZXR1cm4gbV9hdWRpb1RyYWNrcy5nZXQoKTsgfQotICAgIE1lZGlhU3RyZWFtVHJhY2tMaXN0KiB2
aWRlb1RyYWNrcygpIHsgcmV0dXJuIG1fdmlkZW9UcmFja3MuZ2V0KCk7IH0KKyAgICB2b2lkIGFk
ZFRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlvbkNvZGUmKTsKKyAg
ICB2b2lkIHJlbW92ZVRyYWNrKFBhc3NSZWZQdHI8TWVkaWFTdHJlYW1UcmFjaz4sIEV4Y2VwdGlv
bkNvZGUmKTsKKyAgICBNZWRpYVN0cmVhbVRyYWNrKiBnZXRUcmFja0J5SWQoU3RyaW5nKTsKKwor
ICAgIE1lZGlhU3RyZWFtVHJhY2tWZWN0b3IgZ2V0QXVkaW9UcmFja3MoKSBjb25zdCB7IHJldHVy
biBtX2F1ZGlvVHJhY2tzOyB9CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBnZXRWaWRlb1Ry
YWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fdmlkZW9UcmFja3M7IH0KIAogICAgIGJvb2wgZW5kZWQo
KSBjb25zdDsKIAogICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoZW5kZWQpOwor
ICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIoYWRkdHJhY2spOworICAgIERFRklO
RV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIocmVtb3ZldHJhY2spOwogCiAgICAgLy8gTWVkaWFT
dHJlYW1EZXNjcmlwdG9yQ2xpZW50CiAgICAgdmlydHVhbCB2b2lkIHN0cmVhbUVuZGVkKCkgT1ZF
UlJJREU7CkBAIC03OCw2ICs4Niw5IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZXZlbnRUYXJnZXREYXRhKCkgT1ZFUlJJREU7CiAgICAgdmlydHVhbCBFdmVudFRh
cmdldERhdGEqIGVuc3VyZUV2ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwogCisgICAgLy8gQ29u
dGV4dERlc3RydWN0aW9uT2JzZXJ2ZXIKKyAgICB2aXJ0dWFsIHZvaWQgY29udGV4dERlc3Ryb3ll
ZCgpOworCiBwcml2YXRlOgogICAgIC8vIEV2ZW50VGFyZ2V0CiAgICAgdmlydHVhbCB2b2lkIHJl
ZkV2ZW50VGFyZ2V0KCkgT1ZFUlJJREUgeyByZWYoKTsgfQpAQCAtODcsMTEgKzk4LDE5IEBAIHBy
aXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZFRyYWNrKE1lZGlhU3RyZWFtQ29tcG9uZW50Kikg
T1ZFUlJJREU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZVRyYWNrKE1lZGlhU3RyZWFtQ29tcG9u
ZW50KikgT1ZFUlJJREU7CiAKKyAgICB2b2lkIHNjaGVkdWxlRGlzcGF0Y2hFdmVudChQYXNzUmVm
UHRyPEV2ZW50Pik7CisgICAgdm9pZCBzY2hlZHVsZWRFdmVudFRpbWVyRmlyZWQoVGltZXI8TWVk
aWFTdHJlYW0+Kik7CisKKyAgICBib29sIG1fc3RvcHBlZDsKKwogICAgIEV2ZW50VGFyZ2V0RGF0
YSBtX2V2ZW50VGFyZ2V0RGF0YTsKIAotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4g
bV9hdWRpb1RyYWNrczsKLSAgICBSZWZQdHI8TWVkaWFTdHJlYW1UcmFja0xpc3Q+IG1fdmlkZW9U
cmFja3M7CisgICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBtX2F1ZGlvVHJhY2tzOworICAgIE1l
ZGlhU3RyZWFtVHJhY2tWZWN0b3IgbV92aWRlb1RyYWNrczsKICAgICBSZWZQdHI8TWVkaWFTdHJl
YW1EZXNjcmlwdG9yPiBtX2Rlc2NyaXB0b3I7CisKKyAgICBUaW1lcjxNZWRpYVN0cmVhbT4gbV9z
Y2hlZHVsZWRFdmVudFRpbWVyOworICAgIFZlY3RvcjxSZWZQdHI8RXZlbnQ+ID4gbV9zY2hlZHVs
ZWRFdmVudHM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCmluZGV4IDNlZTJiYjQx
OWEwNGJjYWI4YzYzOTM4MTIzYWY5MTI1YWFkZTM4NGEuLjcwZDZmMTJjY2Q2YWY1MDBjOGQ3NmMz
MDNiNTA1YzlhMGVlOTA3ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVk
aWFzdHJlYW0vTWVkaWFTdHJlYW0uaWRsCkBAIC0zNiwxMiArMzYsMjAgQEAKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBET01TdHJpbmcgaWQ7CiAKLSAgICByZWFkb25seSBhdHRyaWJ1dGUgTWVk
aWFTdHJlYW1UcmFja0xpc3QgYXVkaW9UcmFja3M7Ci0gICAgcmVhZG9ubHkgYXR0cmlidXRlIE1l
ZGlhU3RyZWFtVHJhY2tMaXN0IHZpZGVvVHJhY2tzOworICAgIHNlcXVlbmNlPE1lZGlhU3RyZWFt
VHJhY2s+IGdldEF1ZGlvVHJhY2tzKCk7CisgICAgc2VxdWVuY2U8TWVkaWFTdHJlYW1UcmFjaz4g
Z2V0VmlkZW9UcmFja3MoKTsKKworICAgIHZvaWQgYWRkVHJhY2soTWVkaWFTdHJlYW1UcmFjayB0
cmFjaykKKyAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CisgICAgdm9pZCByZW1vdmVUcmFj
ayhNZWRpYVN0cmVhbVRyYWNrIHRyYWNrKQorICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsK
KyAgICBNZWRpYVN0cmVhbVRyYWNrIGdldFRyYWNrQnlJZChET01TdHJpbmcgdHJhY2tJZCk7CiAK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgYm9vbGVhbiBlbmRlZDsKIAogICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uZW5kZWQ7CisgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25hZGR0
cmFjazsKKyAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNrOwogCiAgICAg
Ly8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCiAgICAgdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERP
TVN0cmluZyB0eXBlLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0
cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL21l
ZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYjEzOWVmMmU1MjI4YTYwZTU5ODJlZjYzZDFmMTc0NTJlNDUyNjFiNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDE3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEgRXJpY3Nzb24gQUIu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKLQotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2tMaXN0
LmgiCi0KLSNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCi0jaW5jbHVkZSAiTWVkaWFTdHJlYW0u
aCIKLSNpbmNsdWRlICJNZWRpYVN0cmVhbUNlbnRlci5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFt
VHJhY2tFdmVudC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVBhc3NSZWZQdHI8TWVkaWFT
dHJlYW1UcmFja0xpc3Q+IE1lZGlhU3RyZWFtVHJhY2tMaXN0OjpjcmVhdGUoTWVkaWFTdHJlYW0q
IG93bmVyLCBjb25zdCBNZWRpYVN0cmVhbVRyYWNrVmVjdG9yJiB0cmFja1ZlY3RvcikKLXsKLSAg
ICBBU1NFUlQob3duZXIpOwotICAgIFJlZlB0cjxNZWRpYVN0cmVhbVRyYWNrTGlzdD4gdHJhY2tM
aXN0ID0gYWRvcHRSZWYobmV3IE1lZGlhU3RyZWFtVHJhY2tMaXN0KG93bmVyLCB0cmFja1ZlY3Rv
cikpOwotICAgIHRyYWNrTGlzdC0+c3VzcGVuZElmTmVlZGVkKCk7Ci0gICAgcmV0dXJuIHRyYWNr
TGlzdC5yZWxlYXNlKCk7Ci19Ci0KLU1lZGlhU3RyZWFtVHJhY2tMaXN0OjpNZWRpYVN0cmVhbVRy
YWNrTGlzdChNZWRpYVN0cmVhbSogb3duZXIsIGNvbnN0IE1lZGlhU3RyZWFtVHJhY2tWZWN0b3Im
IHRyYWNrVmVjdG9yKQotICAgIDogQWN0aXZlRE9NT2JqZWN0KG93bmVyLT5zY3JpcHRFeGVjdXRp
b25Db250ZXh0KCksIHRoaXMpCi0gICAgLCBtX293bmVyKG93bmVyKQotICAgICwgbV90cmFja1Zl
Y3Rvcih0cmFja1ZlY3RvcikKLXsKLX0KLQotTWVkaWFTdHJlYW1UcmFja0xpc3Q6On5NZWRpYVN0
cmVhbVRyYWNrTGlzdCgpCi17Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OmRldGFj
aE93bmVyKCkKLXsKLSAgICBtX293bmVyID0gMDsKLX0KLQotdW5zaWduZWQgTWVkaWFTdHJlYW1U
cmFja0xpc3Q6Omxlbmd0aCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fdHJhY2tWZWN0b3Iuc2l6
ZSgpOwotfQotCi1NZWRpYVN0cmVhbVRyYWNrKiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6aXRlbSh1
bnNpZ25lZCBpbmRleCkgY29uc3QKLXsKLSAgICBpZiAoaW5kZXggPj0gbV90cmFja1ZlY3Rvci5z
aXplKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBtX3RyYWNrVmVjdG9yW2luZGV4
XS5nZXQoKTsKLX0KLQotdm9pZCBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6YWRkKFBhc3NSZWZQdHI8
TWVkaWFTdHJlYW1UcmFjaz4gcHJwVHJhY2ssIEV4Y2VwdGlvbkNvZGUmIGVjKQotewotICAgIGlm
ICghbV9vd25lciB8fCBtX293bmVyLT5lbmRlZCgpKSB7Ci0gICAgICAgIGVjID0gSU5WQUxJRF9T
VEFURV9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBSZWZQdHI8TWVkaWFTdHJl
YW1UcmFjaz4gdHJhY2sgPSBwcnBUcmFjazsKLSAgICBpZiAoIXRyYWNrKSB7Ci0gICAgICAgIGVj
ID0gVFlQRV9NSVNNQVRDSF9FUlI7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAo
bV90cmFja1ZlY3Rvci5jb250YWlucyh0cmFjaykpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1f
dHJhY2tWZWN0b3IuYXBwZW5kKHRyYWNrKTsKLSAgICBpZiAoIU1lZGlhU3RyZWFtQ2VudGVyOjpp
bnN0YW5jZSgpLmRpZEFkZE1lZGlhU3RyZWFtVHJhY2sobV9vd25lci0+ZGVzY3JpcHRvcigpLCB0
cmFjay0+Y29tcG9uZW50KCkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJh
Y2tFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5hZGR0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2Us
IHRyYWNrKSk7Ci19Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OnJlbW92ZShQYXNzUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+IHBycFRyYWNrLCBFeGNlcHRpb25Db2RlJiBlYykKLXsKLSAg
ICBpZiAoIW1fb3duZXIgfHwgbV9vd25lci0+ZW5kZWQoKSkgewotICAgICAgICBlYyA9IElOVkFM
SURfU1RBVEVfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgUmVmUHRyPE1lZGlh
U3RyZWFtVHJhY2s+IHRyYWNrID0gcHJwVHJhY2s7Ci0gICAgaWYgKCF0cmFjaykgewotICAgICAg
ICBlYyA9IFRZUEVfTUlTTUFUQ0hfRVJSOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
c2l6ZV90IGluZGV4ID0gbV90cmFja1ZlY3Rvci5maW5kKHRyYWNrKTsKLSAgICBpZiAoaW5kZXgg
PT0gbm90Rm91bmQpCi0gICAgICAgIHJldHVybjsKLQotICAgIG1fdHJhY2tWZWN0b3IucmVtb3Zl
KGluZGV4KTsKLSAgICBpZiAoIU1lZGlhU3RyZWFtQ2VudGVyOjppbnN0YW5jZSgpLmRpZFJlbW92
ZU1lZGlhU3RyZWFtVHJhY2sobV9vd25lci0+ZGVzY3JpcHRvcigpLCB0cmFjay0+Y29tcG9uZW50
KCkpKSB7Ci0gICAgICAgIGVjID0gTk9UX1NVUFBPUlRFRF9FUlI7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBkaXNwYXRjaEV2ZW50KE1lZGlhU3RyZWFtVHJhY2tFdmVudDo6Y3JlYXRl
KGV2ZW50TmFtZXMoKS5yZW1vdmV0cmFja0V2ZW50LCBmYWxzZSwgZmFsc2UsIHRyYWNrKSk7Ci19
Ci0KLXZvaWQgTWVkaWFTdHJlYW1UcmFja0xpc3Q6OnJlbW92ZShNZWRpYVN0cmVhbUNvbXBvbmVu
dCogY29tcG9uZW50KQotewotICAgIGlmICghbV9vd25lciB8fCBtX293bmVyLT5lbmRlZCgpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBzaXplX3QgaW5kZXggPSBub3RGb3VuZDsKLSAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV90cmFja1ZlY3Rvci5zaXplKCk7ICsraSkgewotICAgICAg
ICBpZiAobV90cmFja1ZlY3RvcltpXS0+Y29tcG9uZW50KCkgPT0gY29tcG9uZW50KSB7Ci0gICAg
ICAgICAgICBpbmRleCA9IGk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0K
LQotICAgIGlmIChpbmRleCA9PSBub3RGb3VuZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVm
UHRyPE1lZGlhU3RyZWFtVHJhY2s+IHRyYWNrID0gbV90cmFja1ZlY3RvcltpbmRleF07Ci0gICAg
bV90cmFja1ZlY3Rvci5yZW1vdmUoaW5kZXgpOwotICAgIE1lZGlhU3RyZWFtQ2VudGVyOjppbnN0
YW5jZSgpLmRpZFJlbW92ZU1lZGlhU3RyZWFtVHJhY2sobV9vd25lci0+ZGVzY3JpcHRvcigpLCBj
b21wb25lbnQpOwotICAgIGRpc3BhdGNoRXZlbnQoTWVkaWFTdHJlYW1UcmFja0V2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnJlbW92ZXRyYWNrRXZlbnQsIGZhbHNlLCBmYWxzZSwgdHJhY2spKTsK
LX0KLQotdm9pZCBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6c3RvcCgpCi17Ci0gICAgZGV0YWNoT3du
ZXIoKTsKLX0KLQotY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6aW50
ZXJmYWNlTmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGV2ZW50TmFtZXMoKS5pbnRlcmZhY2VG
b3JNZWRpYVN0cmVhbVRyYWNrTGlzdDsKLX0KLQotU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogTWVk
aWFTdHJlYW1UcmFja0xpc3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAotewotICAg
IHJldHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKLX0KLQot
RXZlbnRUYXJnZXREYXRhKiBNZWRpYVN0cmVhbVRyYWNrTGlzdDo6ZXZlbnRUYXJnZXREYXRhKCkK
LXsKLSAgICByZXR1cm4gJm1fZXZlbnRUYXJnZXREYXRhOwotfQotCi1FdmVudFRhcmdldERhdGEq
IE1lZGlhU3RyZWFtVHJhY2tMaXN0OjplbnN1cmVFdmVudFRhcmdldERhdGEoKQotewotICAgIHJl
dHVybiAmbV9ldmVudFRhcmdldERhdGE7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmIC8vIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YTM3YjYxYjY1NzlkMjk0NTBkYTZmMTYyYzUwMzQ2OWFk
NDg3MWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5oCisr
KyAvZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KLSAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwotICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBNZWRp
YVN0cmVhbVRyYWNrTGlzdF9oCi0jZGVmaW5lIE1lZGlhU3RyZWFtVHJhY2tMaXN0X2gKLQotI2lm
IEVOQUJMRShNRURJQV9TVFJFQU0pCi0KLSNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKLSNp
bmNsdWRlICJFdmVudFRhcmdldC5oIgotI2luY2x1ZGUgIk1lZGlhU3RyZWFtVHJhY2suaCIKLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBNZWRpYVN0cmVhbVRyYWNrTGlzdCA6IHB1Ymxp
YyBSZWZDb3VudGVkPE1lZGlhU3RyZWFtVHJhY2tMaXN0PiwgcHVibGljIEFjdGl2ZURPTU9iamVj
dCwgcHVibGljIEV2ZW50VGFyZ2V0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxN
ZWRpYVN0cmVhbVRyYWNrTGlzdD4gY3JlYXRlKE1lZGlhU3RyZWFtKiwgY29uc3QgTWVkaWFTdHJl
YW1UcmFja1ZlY3RvciYpOwotICAgIHZpcnR1YWwgfk1lZGlhU3RyZWFtVHJhY2tMaXN0KCk7Ci0K
LSAgICB2b2lkIGRldGFjaE93bmVyKCk7Ci0KLSAgICAvLyBET00gbWV0aG9kcyAmIGF0dHJpYnV0
ZXMgZm9yIE1lZGlhU3RyZWFtVHJhY2tMaXN0Ci0gICAgdW5zaWduZWQgbGVuZ3RoKCkgY29uc3Q7
Ci0gICAgTWVkaWFTdHJlYW1UcmFjayogaXRlbSh1bnNpZ25lZCBpbmRleCkgY29uc3Q7Ci0KLSAg
ICB2b2lkIGFkZChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtVHJhY2s+LCBFeGNlcHRpb25Db2RlJik7
Ci0gICAgdm9pZCByZW1vdmUoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbVRyYWNrPiwgRXhjZXB0aW9u
Q29kZSYpOwotCi0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihhZGR0cmFjayk7
Ci0gICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihyZW1vdmV0cmFjayk7Ci0KLSAg
ICB2b2lkIHJlbW92ZShNZWRpYVN0cmVhbUNvbXBvbmVudCopOwotCi0gICAgLy8gQWN0aXZlRE9N
T2JqZWN0Ci0gICAgdmlydHVhbCB2b2lkIHN0b3AoKSBPVkVSUklERTsKLQotICAgIC8vIEV2ZW50
VGFyZ2V0Ci0gICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcmIGludGVyZmFjZU5hbWUoKSBj
b25zdCBPVkVSUklERTsKLSAgICB2aXJ0dWFsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdCBPVkVSUklERTsKLQotICAgIHVzaW5nIFJlZkNvdW50
ZWQ8TWVkaWFTdHJlYW1UcmFja0xpc3Q+OjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDxNZWRp
YVN0cmVhbVRyYWNrTGlzdD46OmRlcmVmOwotCi1wcml2YXRlOgotICAgIE1lZGlhU3RyZWFtVHJh
Y2tMaXN0KE1lZGlhU3RyZWFtKiwgY29uc3QgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciYpOwotCi0g
ICAgLy8gRXZlbnRUYXJnZXQKLSAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0YSogZXZlbnRUYXJn
ZXREYXRhKCkgT1ZFUlJJREU7Ci0gICAgdmlydHVhbCBFdmVudFRhcmdldERhdGEqIGVuc3VyZUV2
ZW50VGFyZ2V0RGF0YSgpIE9WRVJSSURFOwotICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdl
dCgpIE9WRVJSSURFIHsgcmVmKCk7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdl
dCgpIE9WRVJSSURFIHsgZGVyZWYoKTsgfQotICAgIEV2ZW50VGFyZ2V0RGF0YSBtX2V2ZW50VGFy
Z2V0RGF0YTsKLQotICAgIC8vIG1fb3duZXIgY2FuIGJlY29tZSB6ZXJvLgotICAgIE1lZGlhU3Ry
ZWFtKiBtX293bmVyOwotCi0gICAgTWVkaWFTdHJlYW1UcmFja1ZlY3RvciBtX3RyYWNrVmVjdG9y
OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gRU5BQkxFKE1FRElB
X1NUUkVBTSkKLQotI2VuZGlmIC8vIE1lZGlhU3RyZWFtVHJhY2tMaXN0X2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3Qu
aWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNr
TGlzdC5pZGwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwOGUyYzZlNmE3OGE5Njk3
M2JjZmVmYzJkYjk1Y2NiZDFjNjRlMDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0
cmVhbVRyYWNrTGlzdC5pZGwKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgot
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi1bCi0gICAgQ29uZGl0aW9uYWw9TUVESUFfU1RSRUFNLAotICAgIEluZGV4ZWRHZXR0
ZXIsCi0gICAgRXZlbnRUYXJnZXQKLV0gaW50ZXJmYWNlIE1lZGlhU3RyZWFtVHJhY2tMaXN0IHsK
LSAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7Ci0gICAgTWVkaWFT
dHJlYW1UcmFjayBpdGVtKGluIFtJc0luZGV4XSB1bnNpZ25lZCBsb25nIGluZGV4KTsKLQotICAg
IHZvaWQgYWRkKGluIE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spCi0gICAgICAgIHJhaXNlcyhET01F
eGNlcHRpb24pOwotICAgIHZvaWQgcmVtb3ZlKGluIE1lZGlhU3RyZWFtVHJhY2sgdHJhY2spCi0g
ICAgICAgIHJhaXNlcyhET01FeGNlcHRpb24pOwotCi0gICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25hZGR0cmFjazsKLSAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlbW92ZXRyYWNr
OwotCi0gICAgLy8gRXZlbnRUYXJnZXQgaW50ZXJmYWNlCi0gICAgdm9pZCBhZGRFdmVudExpc3Rl
bmVyKGluIERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVu
dExpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGlu
IERPTVN0cmluZyB0eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExp
c3RlbmVyIGxpc3RlbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBbT3B0aW9u
YWxdIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgYm9vbGVhbiBkaXNwYXRjaEV2ZW50KGluIEV2
ZW50IGV2ZW50KQotICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwotfTsKLQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJhdWRpby9BdWRpb0NvbnRleHQuY3BwCmluZGV4IDk5
NGY2OTM0MmYxMzUwOGYwNjUxMjhlYjI3YmU4MTA4NzJhZmJjNmQuLmY0NmFkMjBmNTAyYjc1Zjdk
NGMyMGIwMWUyZTZlYWYxMWNlM2Q5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2ViYXVkaW8vQXVkaW9Db250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYmF1ZGlvL0F1ZGlvQ29udGV4dC5jcHAKQEAgLTM5NSw3ICszOTUsNyBAQCBQYXNzUmVmUHRy
PE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2VOb2RlPiBBdWRpb0NvbnRleHQ6OmNyZWF0ZU1lZGlhU3Ry
ZWFtU291cmNlKE1lZAogCiAgICAgQXVkaW9Tb3VyY2VQcm92aWRlciogcHJvdmlkZXIgPSAwOwog
Ci0gICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVkaWFTdHJlYW0tPmF1ZGlvVHJh
Y2tzKCktPmxlbmd0aCgpKSB7CisgICAgaWYgKG1lZGlhU3RyZWFtLT5pc0xvY2FsKCkgJiYgbWVk
aWFTdHJlYW0tPmdldEF1ZGlvVHJhY2tzKCkuc2l6ZSgpKSB7CiAgICAgICAgIHByb3ZpZGVyID0g
ZGVzdGluYXRpb24oKS0+bG9jYWxBdWRpb0lucHV0UHJvdmlkZXIoKTsKICAgICAgICAgZGVzdGlu
YXRpb24oKS0+ZW5hYmxlSW5wdXQoKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCmluZGV4
IGRhMjkyYzFiZWU4M2FmODAxNzY1MDY3N2Y0ODFlZmJkMjhjMmI4YjkuLmE0Y2FkNWYwYzcwOGEw
YmI2YjM5N2Q1ZjEyNThjODQ5MzJhMTZhOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKQEAgLTcxLDcgKzcx
LDYgQEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtTGlzdC5p
ZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5p
ZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0V2
ZW50LmlkbCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRy
YWNrTGlzdC5pZGwnLAogICAgICAgICAgICAgJ01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9y
TWVkaWFTdHJlYW0uaWRsJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmln
YXRvclVzZXJNZWRpYUVycm9yLmlkbCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVh
bS9OYXZpZ2F0b3JVc2VyTWVkaWFFcnJvckNhbGxiYWNrLmlkbCcsCkBAIC04MTQsOCArODEzLDYg
QEAKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2suaCcs
CiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrRXZlbnQu
Y3BwJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tF
dmVudC5oJywKLSAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tMaXN0LmNwcCcsCi0gICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bVRyYWNrTGlzdC5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05hdmlnYXRv
ck1lZGlhU3RyZWFtLmNwcCcsCiAgICAgICAgICAgICAnTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZp
Z2F0b3JNZWRpYVN0cmVhbS5oJywKICAgICAgICAgICAgICdNb2R1bGVzL21lZGlhc3RyZWFtL05h
dmlnYXRvclVzZXJNZWRpYUVycm9yLmgnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0RmFjdG9yeS5pbiBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldEZh
Y3RvcnkuaW4KaW5kZXggZjkwYzhiYjVlMzY2ZGJiYzQ3MmMzZjljNDc0M2EzYjg5MmRjZTRkOS4u
MWI1ZmQ1ODA4ZDQ5NThjNjUzMjY4NmE3NGJlNmNhY2JlMzEzMGNmZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0RmFjdG9yeS5pbgorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRXZlbnRUYXJnZXRGYWN0b3J5LmluCkBAIC0xOSw3ICsxOSw2IEBAIE1lZGlhQ29udHJv
bGxlciBjb25kaXRpb25hbD1WSURFTwogTWVkaWFTb3VyY2UgY29uZGl0aW9uYWw9TUVESUFfU09V
UkNFCiBNZWRpYVN0cmVhbSBjb25kaXRpb25hbD1NRURJQV9TVFJFQU0KIE1lZGlhU3RyZWFtVHJh
Y2sgY29uZGl0aW9uYWw9TUVESUFfU1RSRUFNCi1NZWRpYVN0cmVhbVRyYWNrTGlzdCBjb25kaXRp
b25hbD1NRURJQV9TVFJFQU0KIE1lc3NhZ2VQb3J0CiBOZXR3b3JrSW5mb0Nvbm5lY3Rpb24gY29u
ZGl0aW9uYWw9TkVUV09SS19JTkZPCiBOb2RlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbURlc2NyaXB0b3IuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCmluZGV4IGIz
ZDI4OTliNWE4Y2FkYmE4YTc0MmY1NDc1ZWE0YmU5ZjNhZDgwMzUuLjE0M2ZmM2Y3MzgyODNkM2Iz
ZTEwMjg2Y2UxNDExZjYzZDk5ZjM3OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21lZGlhc3RyZWFtL01lZGlhU3RyZWFtRGVzY3JpcHRvci5oCkBAIC02OCw5
ICs2OCwyMyBAQCBwdWJsaWM6CiAKICAgICB1bnNpZ25lZCBudW1iZXJPZkF1ZGlvQ29tcG9uZW50
cygpIGNvbnN0IHsgcmV0dXJuIG1fYXVkaW9Db21wb25lbnRzLnNpemUoKTsgfQogICAgIE1lZGlh
U3RyZWFtQ29tcG9uZW50KiBhdWRpb0NvbXBvbmVudCh1bnNpZ25lZCBpbmRleCkgY29uc3QgeyBy
ZXR1cm4gbV9hdWRpb0NvbXBvbmVudHNbaW5kZXhdLmdldCgpOyB9CisgICAgdm9pZCBhZGRBdWRp
b0NvbXBvbmVudChQYXNzUmVmUHRyPE1lZGlhU3RyZWFtQ29tcG9uZW50PiBjb21wb25lbnQpIHsg
bV9hdWRpb0NvbXBvbmVudHMuYXBwZW5kKGNvbXBvbmVudCk7IH0KKyAgICB2b2lkIHJlbW92ZUF1
ZGlvQ29tcG9uZW50KE1lZGlhU3RyZWFtQ29tcG9uZW50KiBjb21wb25lbnQpCisgICAgeworICAg
ICAgICBzaXplX3QgcG9zID0gbV9hdWRpb0NvbXBvbmVudHMuZmluZChjb21wb25lbnQpOworICAg
ICAgICBpZiAocG9zICE9IG5vdEZvdW5kKQorICAgICAgICAgICAgbV9hdWRpb0NvbXBvbmVudHMu
cmVtb3ZlKHBvcyk7CisgICAgfQogCiAgICAgdW5zaWduZWQgbnVtYmVyT2ZWaWRlb0NvbXBvbmVu
dHMoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvQ29tcG9uZW50cy5zaXplKCk7IH0KICAgICBNZWRp
YVN0cmVhbUNvbXBvbmVudCogdmlkZW9Db21wb25lbnQodW5zaWduZWQgaW5kZXgpIGNvbnN0IHsg
cmV0dXJuIG1fdmlkZW9Db21wb25lbnRzW2luZGV4XS5nZXQoKTsgfQorICAgIHZvaWQgYWRkVmlk
ZW9Db21wb25lbnQoUGFzc1JlZlB0cjxNZWRpYVN0cmVhbUNvbXBvbmVudD4gY29tcG9uZW50KSB7
IG1fdmlkZW9Db21wb25lbnRzLmFwcGVuZChjb21wb25lbnQpOyB9CisgICAgdm9pZCByZW1vdmVW
aWRlb0NvbXBvbmVudChNZWRpYVN0cmVhbUNvbXBvbmVudCogY29tcG9uZW50KQorICAgIHsKKyAg
ICAgICAgc2l6ZV90IHBvcyA9IG1fYXVkaW9Db21wb25lbnRzLmZpbmQoY29tcG9uZW50KTsKKyAg
ICAgICAgaWYgKHBvcyAhPSBub3RGb3VuZCkKKyAgICAgICAgICAgIG1fYXVkaW9Db21wb25lbnRz
LnJlbW92ZShwb3MpOworICAgIH0KIAogICAgIGJvb2wgZW5kZWQoKSBjb25zdCB7IHJldHVybiBt
X2VuZGVkOyB9CiAgICAgdm9pZCBzZXRFbmRlZCgpIHsgbV9lbmRlZCA9IHRydWU7IH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBhMzdjZjgzNmVjMmIzM2VhN2JmZmZlMTI2YjI1YzRkNDg2NTQyNzQxLi4yNzVlYzg5MmQ3ZmY4
ZDY2NzAyMGUzMjAyYzA2NTNmYjI4NWIzNTYzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjYgQEAKIDIwMTMt
MDEtMTQgIFRvbW15IFdpZGVuZmx5Y2h0ICA8dG9tbXl3QGdvb2dsZS5jb20+CiAKKyAgICAgICAg
TWVkaWFTdHJlYW0gQVBJOiBVcGRhdGUgdGhlIHRyYWNrIGFjY2Vzc29ycyBvbiBNZWRpYVN0cmVh
bSB0byBtYXRjaCB0aGUgbGF0ZXN0IHNwZWNpZmljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjY2MAorCisgICAgICAgIFJldmlld2VkIGJ5
IEFkYW0gQmFydGguCisKKyAgICAgICAgVXBkYXRpbmcgYW5kIGV4cGFuZGluZyB0ZXN0cyBmb3Ig
dGhlIG5ldyBnZXRBdWRpb1RyYWNrcygpL2dldFZpZGVvVHJhY2tzKCkuCisKKyAgICAgICAgKiBm
YXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1Db25zdHJ1Y3Rvci5odG1sOgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sOgorICAgICAgICAq
IGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaHRtbDoKKyAgICAg
ICAgKiBmYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3ItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24t
c3RhdHNTZWxlY3Rvci5odG1sOgorICAgICAgICAqIGZhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1l
ZGlhLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L21lZGlhc3RyZWFtL2dldHVzZXJtZWRp
YS5odG1sOgorICAgICAgICAqIHdlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiB3ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9k
ZS5odG1sOgorCisyMDEzLTAxLTE0ICBUb21teSBXaWRlbmZseWNodCAgPHRvbW15d0Bnb29nbGUu
Y29tPgorCiAgICAgICAgIE1lZGlhU3RyZWFtIEFQSTogQ2hhbmdlIE1lZGlhU3RyZWFtOjpyZWFk
eVN0YXRlIHRvIGFuIGJvb2xlYW4gYXR0cmlidXRlIGNhbGxlZCBlbmRlZC4KICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNjU2OAogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0b3ItZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbUNvbnN0
cnVjdG9yLWV4cGVjdGVkLnR4dAppbmRleCAyODVmZjJjZWNhYmY3ZjRkNWQ1ZjcxYzhmMzFmYTBl
MTg4MzAzMDk2Li4yZDU3MGY4OTY2MTYwOWNhMWNlMGFjZDJjOGU2ZWVkZTkxNzc0MGM3IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0
b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFT
dHJlYW1Db25zdHJ1Y3Rvci1leHBlY3RlZC50eHQKQEAgLTQsMTIgKzQsMTIgQEAgT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUKIAogCiBQQVNTIEdvdCBsb2NhbCBzdHJlYW0uCi1QQVNTIGxvY2FsU3Ry
ZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCi1QQVNTIGxvY2FsU3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCBpcyAxCitQQVNTIGxvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlz
IDEKK1BBU1MgbG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyB0
eXBlb2Ygd2Via2l0TWVkaWFTdHJlYW0gPT09ICdmdW5jdGlvbicgaXMgdHJ1ZQogUEFTUyBuZXcg
d2Via2l0TWVkaWFTdHJlYW0oZG9jdW1lbnQpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbZG9jdW1lbnRdKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBJbnZhbGlkIEFycmF5IGVsZW1lbnQgdHlwZS4KLVBBU1MgbmV3
IHdlYmtpdE1lZGlhU3RyZWFtKFtzdHJlYW0uYXVkaW9UcmFja3NbMF0sIGRvY3VtZW50XSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBlbGVtZW50IHR5cGUuCitQQVNT
IG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGRvY3Vt
ZW50XSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogSW52YWxpZCBBcnJheSBlbGVtZW50IHR5
cGUuCiBQQVNTIG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbbnVsbF0pIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IEludmFsaWQgQXJyYXkgZWxlbWVudCB0eXBlLgogUEFTUyBuZXcgd2Via2l0TWVk
aWFTdHJlYW0oW3VuZGVmaW5lZF0pIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludmFsaWQg
QXJyYXkgZWxlbWVudCB0eXBlLgogUEFTUyBuZXcgd2Via2l0TWVkaWFTdHJlYW0obnVsbCkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KQEAgLTE4LDQ0ICsxOCw0NCBAQCBQ
QVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBub24t
bnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1MgbmV3U3Ry
ZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJlYW0uYXVk
aW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbwotUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFja3MubGVu
Z3RoIGlzIG5WaWRlbworUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMg
bkF1ZGlvCitQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBuVmlkZW8K
IFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIG5v
bi1udWxsLgogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgogUEFTUyBuZXdT
dHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0cmVhbS5h
dWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52aWRlb1RyYWNrcy5s
ZW5ndGggaXMgblZpZGVvCitQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBp
cyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIG5WaWRl
bwogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMg
bm9uLW51bGwuCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQQVNTIG5l
d1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3U3RyZWFt
LmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3Ro
IGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgblZp
ZGVvCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBp
cyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4KIFBBU1Mg
bmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBuZXdTdHJl
YW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbwotUEFTUyBuZXdTdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5n
dGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyBu
VmlkZW8KIFBBU1MgU3RyZWFtIGNvbnN0cnVjdGVkCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1d
IGlzIG5vbi1udWxsLgogUEFTUyBbb2JqZWN0IE1lZGlhU3RyZWFtXSBpcyBkZWZpbmVkLgogUEFT
UyBuZXdTdHJlYW0uY29uc3RydWN0b3IubmFtZSBpcyAnTWVkaWFTdHJlYW0nCi1QQVNTIG5ld1N0
cmVhbS5hdWRpb1RyYWNrcy5sZW5ndGggaXMgbkF1ZGlvCi1QQVNTIG5ld1N0cmVhbS52aWRlb1Ry
YWNrcy5sZW5ndGggaXMgblZpZGVvCitQQVNTIG5ld1N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCBpcyBuQXVkaW8KK1BBU1MgbmV3U3RyZWFtLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlz
IG5WaWRlbwogUEFTUyBTdHJlYW0gY29uc3RydWN0ZWQKIFBBU1MgW29iamVjdCBNZWRpYVN0cmVh
bV0gaXMgbm9uLW51bGwuCiBQQVNTIFtvYmplY3QgTWVkaWFTdHJlYW1dIGlzIGRlZmluZWQuCiBQ
QVNTIG5ld1N0cmVhbS5jb25zdHJ1Y3Rvci5uYW1lIGlzICdNZWRpYVN0cmVhbScKLVBBU1MgbmV3
U3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyBuQXVkaW8KLVBBU1MgbmV3U3RyZWFtLnZpZGVv
VHJhY2tzLmxlbmd0aCBpcyBuVmlkZW8KK1BBU1MgbmV3U3RyZWFtLmdldEF1ZGlvVHJhY2tzKCku
bGVuZ3RoIGlzIG5BdWRpbworUEFTUyBuZXdTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgg
aXMgblZpZGVvCiBQQVNTIFN0cmVhbSBjb25zdHJ1Y3RlZAogUEFTUyBbb2JqZWN0IE1lZGlhU3Ry
ZWFtXSBpcyBub24tbnVsbC4KIFBBU1MgW29iamVjdCBNZWRpYVN0cmVhbV0gaXMgZGVmaW5lZC4K
IFBBU1MgbmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5hbWUgaXMgJ01lZGlhU3RyZWFtJwotUEFTUyBu
ZXdTdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoIGlzIG5BdWRpbwotUEFTUyBuZXdTdHJlYW0udmlk
ZW9UcmFja3MubGVuZ3RoIGlzIG5WaWRlbworUEFTUyBuZXdTdHJlYW0uZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGggaXMgbkF1ZGlvCitQQVNTIG5ld1N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0
aCBpcyBuVmlkZW8KIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVh
bUNvbnN0cnVjdG9yLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3Ry
ZWFtQ29uc3RydWN0b3IuaHRtbAppbmRleCA3ZDg0YTNlY2E5ZGNhMjI5OTk0Nzg4NGRlNjhkMTY3
MTJjZTU1ZDgzLi42MDY5MjVhNTA4MWU5ZWExMjNlNzI4M2RhNDU3MmI0NTlhOTI5NzlkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29uc3RydWN0
b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtQ29u
c3RydWN0b3IuaHRtbApAQCAtMzMsOCArMzMsOCBAQCBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoZGlj
dGlvbmFyeSwgY2FsbGJhY2spIHsKIGZ1bmN0aW9uIGdvdFN0cmVhbShzKSB7CiAgICAgbG9jYWxT
dHJlYW0gPSBzOwogICAgIHRlc3RQYXNzZWQoJ0dvdCBsb2NhbCBzdHJlYW0uJyk7Ci0gICAgc2hv
dWxkQmUoJ2xvY2FsU3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7Ci0gICAgc2hvdWxk
QmUoJ2xvY2FsU3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUo
J2xvY2FsU3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoJywgJzEnKTsKKyAgICBzaG91bGRC
ZSgnbG9jYWxTdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCiAgICAgc2hv
dWxkQmVUcnVlKCJ0eXBlb2Ygd2Via2l0TWVkaWFTdHJlYW0gPT09ICdmdW5jdGlvbiciKTsKIApA
QCAtNDcsNyArNDcsNyBAQCBmdW5jdGlvbiB0ZXN0Q29uc3RydWN0b3IocykgewogICAgIHN0cmVh
bSA9IHM7CiAgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShkb2N1bWVudCkn
KTsKICAgICBzaG91bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtkb2N1bWVudF0pJyk7
Ci0gICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0cmVhbShbc3RyZWFtLmF1ZGlvVHJh
Y2tzWzBdLCBkb2N1bWVudF0pJyk7CisgICAgc2hvdWxkVGhyb3coJ25ldyB3ZWJraXRNZWRpYVN0
cmVhbShbc3RyZWFtLmdldEF1ZGlvVHJhY2tzKClbMF0sIGRvY3VtZW50XSknKTsKICAgICBzaG91
bGRUaHJvdygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtudWxsXSknKTsKICAgICBzaG91bGRUaHJv
dygnbmV3IHdlYmtpdE1lZGlhU3RyZWFtKFt1bmRlZmluZWRdKScpOwogICAgIHNob3VsZFRocm93
KCduZXcgd2Via2l0TWVkaWFTdHJlYW0obnVsbCknKTsKQEAgLTU2LDEyICs1NiwxMiBAQCBmdW5j
dGlvbiB0ZXN0Q29uc3RydWN0b3IocykgewogICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0TWVk
aWFTdHJlYW0oKSwgMCwgMCk7CiAgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVh
bShbXSksIDAsIDApOwogCi0gICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShz
KSwgcy5hdWRpb1RyYWNrcy5sZW5ndGgsIHMudmlkZW9UcmFja3MubGVuZ3RoKTsKKyAgICB2ZXJp
ZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKHMpLCBzLmdldEF1ZGlvVHJhY2tzKCkubGVu
Z3RoLCBzLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoKTsKIAotICAgIHZlcmlmeVN0cmVhbShuZXcg
d2Via2l0TWVkaWFTdHJlYW0oW3MuYXVkaW9UcmFja3NbMF1dKSwgMSwgMCk7Ci0gICAgdmVyaWZ5
U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVhbShbcy52aWRlb1RyYWNrc1swXV0pLCAwLCAxKTsK
LSAgICB2ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmF1ZGlvVHJhY2tzWzBd
LCBzLnZpZGVvVHJhY2tzWzBdXSksIDEsIDEpOwotICAgIHZlcmlmeVN0cmVhbShuZXcgd2Via2l0
TWVkaWFTdHJlYW0oW3MudmlkZW9UcmFja3NbMF0sIHMuYXVkaW9UcmFja3NbMF0sIHMudmlkZW9U
cmFja3NbMF1dKSwgMSwgMSk7CisgICAgdmVyaWZ5U3RyZWFtKG5ldyB3ZWJraXRNZWRpYVN0cmVh
bShbcy5nZXRBdWRpb1RyYWNrcygpWzBdXSksIDEsIDApOworICAgIHZlcmlmeVN0cmVhbShuZXcg
d2Via2l0TWVkaWFTdHJlYW0oW3MuZ2V0VmlkZW9UcmFja3MoKVswXV0pLCAwLCAxKTsKKyAgICB2
ZXJpZnlTdHJlYW0obmV3IHdlYmtpdE1lZGlhU3RyZWFtKFtzLmdldEF1ZGlvVHJhY2tzKClbMF0s
IHMuZ2V0VmlkZW9UcmFja3MoKVswXV0pLCAxLCAxKTsKKyAgICB2ZXJpZnlTdHJlYW0obmV3IHdl
YmtpdE1lZGlhU3RyZWFtKFtzLmdldFZpZGVvVHJhY2tzKClbMF0sIHMuZ2V0QXVkaW9UcmFja3Mo
KVswXSwgcy5nZXRWaWRlb1RyYWNrcygpWzBdXSksIDEsIDEpOwogfQogCiBmdW5jdGlvbiB2ZXJp
ZnlTdHJlYW0ocywgbnVtQXVkaW9UcmFja3MsIG51bVZpZGVvVHJhY2tzKSB7CkBAIC03Myw4ICs3
Myw4IEBAIGZ1bmN0aW9uIHZlcmlmeVN0cmVhbShzLCBudW1BdWRpb1RyYWNrcywgbnVtVmlkZW9U
cmFja3MpIHsKICAgICBzaG91bGRCZU5vbk51bGwobmV3U3RyZWFtKTsKICAgICBzaG91bGRCZURl
ZmluZWQobmV3U3RyZWFtKTsKICAgICBzaG91bGRCZSgibmV3U3RyZWFtLmNvbnN0cnVjdG9yLm5h
bWUiLCAiJ01lZGlhU3RyZWFtJyIpOwotICAgIHNob3VsZEJlKCduZXdTdHJlYW0uYXVkaW9UcmFj
a3MubGVuZ3RoJywgJ25BdWRpbycpOwotICAgIHNob3VsZEJlKCduZXdTdHJlYW0udmlkZW9UcmFj
a3MubGVuZ3RoJywgJ25WaWRlbycpOworICAgIHNob3VsZEJlKCduZXdTdHJlYW0uZ2V0QXVkaW9U
cmFja3MoKS5sZW5ndGgnLCAnbkF1ZGlvJyk7CisgICAgc2hvdWxkQmUoJ25ld1N0cmVhbS5nZXRW
aWRlb1RyYWNrcygpLmxlbmd0aCcsICduVmlkZW8nKTsKIH0KIAogZ2V0VXNlck1lZGlhKHt2aWRl
bzp0cnVlLCBhdWRpbzp0cnVlfSwgZ290U3RyZWFtKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrLmh0bWwKaW5kZXggN2Y1YjZlYjdkZmRlZDY4
ZmI1MzgxM2M0YmRjNjFjZTBlNGU3NGQ2MS4uZDJmNzZhZjZjNjhkNWZhYzgzMjI5MmI5M2M4YWI4
MzRiYmI0NDVkMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRp
YVN0cmVhbVRyYWNrLmh0bWwKQEAgLTUzLDcgKzUzLDcgQEAgZnVuY3Rpb24gZ290U3RyZWFtKHMp
IHsKICAgICB0ZXN0UGFzc2VkKCdnZXRVc2VyTWVkaWEgc3VjY2VlZGVkLicpOwogCiAgICAgc3Ry
ZWFtID0gczsKLSAgICB0cmFjayA9IHN0cmVhbS52aWRlb1RyYWNrc1swXTsKKyAgICB0cmFjayA9
IHN0cmVhbS5nZXRWaWRlb1RyYWNrcygpWzBdOwogCiAgICAgdHJhY2sub251bm11dGUgPSBvblRy
YWNrVW5tdXRlOwogICAgIHRyYWNrLm9ubXV0ZSA9IG9uVHJhY2tNdXRlOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0
LWV4cGVjdGVkLnR4dAppbmRleCA3ODA2MjM1Y2E2OTQyMmRhN2UxMzdhNmMxNjkwNDZjNzliNDI0
MjM4Li4wNDg5ZWJkN2JiOGIxNGMxZmQ3ZTEyY2U4NWY2Y2Q4ZmVhNjU1ZjhlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0LWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJh
Y2tMaXN0LWV4cGVjdGVkLnR4dApAQCAtMywxMCArMywxMiBAQCBUZXN0cyBNZWRpYVN0cmVhbVRy
YWNrTGlzdCBjYWxsYmFja3MuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIAorUEFTUyBz
dHJlYW0xLmdldFRyYWNrQnlJZCh0cmFjay5pZCkuaWQgaXMgdHJhY2suaWQKK1BBU1Mgc3RyZWFt
Mi5nZXRUcmFja0J5SWQodHJhY2suaWQpIGlzIG51bGwKIFBBU1MgQWRkIHRyYWNrIGNhbGxiYWNr
IHN1Y2NlZWRlZC4KIFBBU1MgUmVtb3ZlIHRyYWNrIGNhbGxiYWNrIHN1Y2NlZWRlZC4KLVBBU1Mg
c3RyZWFtMS52aWRlb1RyYWNrcy5hZGQoc3RyZWFtMi52aWRlb1RyYWNrc1swXSkgdGhyZXcgZXhj
ZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KLVBBU1Mg
c3RyZWFtMS52aWRlb1RyYWNrcy5yZW1vdmUoc3RyZWFtMi52aWRlb1RyYWNrc1swXSkgdGhyZXcg
ZXhjZXB0aW9uIEVycm9yOiBJbnZhbGlkU3RhdGVFcnJvcjogRE9NIEV4Y2VwdGlvbiAxMS4KK1BB
U1Mgc3RyZWFtMS5hZGRUcmFjayhzdHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pIHRocmV3IGV4
Y2VwdGlvbiBFcnJvcjogSW52YWxpZFN0YXRlRXJyb3I6IERPTSBFeGNlcHRpb24gMTEuCitQQVNT
IHN0cmVhbTEucmVtb3ZlVHJhY2soc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpWzBdKSB0aHJldyBl
eGNlcHRpb24gRXJyb3I6IEludmFsaWRTdGF0ZUVycm9yOiBET00gRXhjZXB0aW9uIDExLgogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL01lZGlhU3RyZWFtVHJhY2tMaXN0Lmh0bWwK
aW5kZXggNWQzMGYxOWJlYjYyMmVmNWI2MThkYmZmMmQwN2JjOTNkNWVmMGU2YS4uYjgyYmZiNzk1
YTJjNWZjODEyZTU5NGI1MTUxZmExZWM1M2I1NDBkMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZmFzdC9tZWRpYXN0cmVhbS9NZWRpYVN0cmVhbVRyYWNrTGlzdC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvbWVkaWFzdHJlYW0vTWVkaWFTdHJlYW1UcmFja0xpc3QuaHRtbApAQCAtMzIsMTgg
KzMyLDE5IEBAIGZ1bmN0aW9uIG9uUmVtb3ZlVHJhY2soZSkgewogCiAgICAgLy8gTm93IHRlc3Qg
dGhhdCBhZGQgZmFpbGVzIHdoZW4gdGhlIHBhcmVudCBzdHJlYW0gaGFzIGJlZW4gc3RvcHBlZC4K
ICAgICBzdHJlYW0xLnN0b3AoKTsKLSAgICBzaG91bGRUaHJvdygnc3RyZWFtMS52aWRlb1RyYWNr
cy5hZGQoc3RyZWFtMi52aWRlb1RyYWNrc1swXSknKTsKLSAgICBzaG91bGRUaHJvdygnc3RyZWFt
MS52aWRlb1RyYWNrcy5yZW1vdmUoc3RyZWFtMi52aWRlb1RyYWNrc1swXSknKTsKKyAgICBzaG91
bGRUaHJvdygnc3RyZWFtMS5hZGRUcmFjayhzdHJlYW0yLmdldFZpZGVvVHJhY2tzKClbMF0pJyk7
CisgICAgc2hvdWxkVGhyb3coJ3N0cmVhbTEucmVtb3ZlVHJhY2soc3RyZWFtMi5nZXRWaWRlb1Ry
YWNrcygpWzBdKScpOwogCiAgICAgZmluaXNoSlNUZXN0KCk7CiB9CiAKIGZ1bmN0aW9uIG9uQWRk
VHJhY2soZSkgewogICAgIHRlc3RQYXNzZWQoJ0FkZCB0cmFjayBjYWxsYmFjayBzdWNjZWVkZWQu
Jyk7CisgICAgZXZlbnQgPSBlOwogCi0gICAgc3RyZWFtMS52aWRlb1RyYWNrcy5vbnJlbW92ZXRy
YWNrID0gb25SZW1vdmVUcmFjazsKKyAgICBzdHJlYW0xLm9ucmVtb3ZldHJhY2sgPSBvblJlbW92
ZVRyYWNrOwogICAgIHRyeSB7Ci0gICAgICAgIHN0cmVhbTEudmlkZW9UcmFja3MucmVtb3ZlKGUu
dHJhY2spOworICAgICAgICBzdHJlYW0xLnJlbW92ZVRyYWNrKGV2ZW50LnRyYWNrKTsKICAgICB9
IGNhdGNoIChleGNlcHRpb24pIHsKICAgICAgICAgdGVzdEZhaWxlZCgicmVtb3ZlIHRocmV3IGFu
IGV4Y2VwdGlvbi4iKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CkBAIC01MiwxMSArNTMsMTQg
QEAgZnVuY3Rpb24gb25BZGRUcmFjayhlKSB7CiAKIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewog
ICAgIHN0cmVhbTIgPSBzOworICAgIHN0cmVhbTEub25hZGR0cmFjayA9IG9uQWRkVHJhY2s7CiAK
LSAgICBzdHJlYW0xLnZpZGVvVHJhY2tzLm9uYWRkdHJhY2sgPSBvbkFkZFRyYWNrOworICAgIHRy
YWNrID0gc3RyZWFtMS5nZXRWaWRlb1RyYWNrcygpWzBdOworICAgIHNob3VsZEJlKCdzdHJlYW0x
LmdldFRyYWNrQnlJZCh0cmFjay5pZCkuaWQnLCAndHJhY2suaWQnKTsKKyAgICBzaG91bGRCZU51
bGwoJ3N0cmVhbTIuZ2V0VHJhY2tCeUlkKHRyYWNrLmlkKScpOwogCiAgICAgdHJ5IHsKLSAgICAg
ICAgc3RyZWFtMS52aWRlb1RyYWNrcy5hZGQoc3RyZWFtMi52aWRlb1RyYWNrc1swXSk7CisgICAg
ICAgIHN0cmVhbTEuYWRkVHJhY2soc3RyZWFtMi5nZXRWaWRlb1RyYWNrcygpWzBdKTsKICAgICB9
IGNhdGNoIChleGNlcHRpb24pIHsKICAgICAgICAgdGVzdEZhaWxlZCgiYWRkIHRocmV3IGFuIGV4
Y2VwdGlvbi4iKTsKICAgICAgICAgZmluaXNoSlNUZXN0KCk7CkBAIC02NSw2ICs2OSw3IEBAIGZ1
bmN0aW9uIGdvdFN0cmVhbTIocykgewogCiBmdW5jdGlvbiBnb3RTdHJlYW0xKHMpIHsKICAgICBz
dHJlYW0xID0gczsKKwogICAgIGdldFVzZXJNZWRpYSh7YXVkaW86dHJ1ZSwgdmlkZW86dHJ1ZX0s
IGdvdFN0cmVhbTIpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9SVENQZWVyQ29ubmVjdGlvbi1zdGF0c1NlbGVjdG9yLWV4
cGVjdGVkLnR4dAppbmRleCA5YWNmYzIyZDNiN2Q1ZjJlYzdlMDRmZGZkY2Q0ODc3YmQ1MzFiM2Vi
Li4wMGM5MDUwMDAwMTNmY2E3YWFiYTFiMzJlMjU3NzIzMTQ4NWFkZmI5IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0
b3ItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVl
ckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci1leHBlY3RlZC50eHQKQEAgLTYsNyArNiw3IEBAIE9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFCiBQQVNTIHBjID0gbmV3IHdlYmtpdFJUQ1BlZXJDb25uZWN0
aW9uKG51bGwpIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBnZXRVc2VyTWVkaWEoe2F1
ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RTdHJlYW0pIGRpZCBub3QgdGhyb3cgZXhjZXB0aW9u
LgogUEFTUyBHb3QgYSBzdHJlYW0uCi1QQVNTIHBjLmdldFN0YXRzKHN0YXRzSGFuZGxlcjIsIHBj
LmxvY2FsU3RyZWFtc1swXS52aWRlb1RyYWNrc1swXSkgZGlkIG5vdCB0aHJvdyBleGNlcHRpb24u
CitQQVNTIHBjLmdldFN0YXRzKHN0YXRzSGFuZGxlcjIsIHBjLmxvY2FsU3RyZWFtc1swXS5nZXRW
aWRlb1RyYWNrcygpWzBdKSBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1Mgc3RhdHNIYW5k
bGVyMiB3YXMgY2FsbGVkCiBQQVNTIHJlc3VsdC5sZW5ndGggaXMgPj0gMQogUEFTUyB0aW1lc3Rh
bXAgaXMgPj0gc3RhcnRUaW1lCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3Ry
ZWFtL1JUQ1BlZXJDb25uZWN0aW9uLXN0YXRzU2VsZWN0b3IuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci5odG1sCmluZGV4
IDU5OTg2NGE5MTNiZjA4OTAwMTQ3N2VmNGI1NzQzODllYzZlMDhhNzMuLjhhNzU2NThmZGZlZWFm
NjA4M2I5ZTUzZmY4OTQyMTgxNTQ1M2YwMmQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
bWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rvci5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vUlRDUGVlckNvbm5lY3Rpb24tc3RhdHNTZWxlY3Rv
ci5odG1sCkBAIC0zMSw3ICszMSw3IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbShzKSB7CiAgICAgc3Ry
ZWFtID0gczsKIAogICAgIHBjLmFkZFN0cmVhbShzdHJlYW0pOwotICAgIHNob3VsZE5vdFRocm93
KCdwYy5nZXRTdGF0cyhzdGF0c0hhbmRsZXIyLCBwYy5sb2NhbFN0cmVhbXNbMF0udmlkZW9UcmFj
a3NbMF0pJyk7CisgICAgc2hvdWxkTm90VGhyb3coJ3BjLmdldFN0YXRzKHN0YXRzSGFuZGxlcjIs
IHBjLmxvY2FsU3RyZWFtc1swXS5nZXRWaWRlb1RyYWNrcygpWzBdKScpOwogfQogCiBmdW5jdGlv
biBzdGF0c0hhbmRsZXIyKHN0YXR1cykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLWV4cGVjdGVkLnR4dAppbmRleCAyZTAzOTYyNWQyOGVlZDE0
OWE4N2FiZGE2NGQyMzI3YmQ2NjcwYjc4Li43MzhkYzI1MjBkOWZmZDZmMWIyOWZlZTU4NTc5YWYx
OTgwNzk3NjYxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFtL2dldHVz
ZXJtZWRpYS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9n
ZXR1c2VybWVkaWEtZXhwZWN0ZWQudHh0CkBAIC02LDI2ICs2LDI2IEBAIE9uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFCiBQQVNTIG5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOmZhbHNl
LCB2aWRlbzpmYWxzZX0sIGVycm9yLCBlcnJvcik7IHRocmV3IGV4Y2VwdGlvbiBFcnJvcjogTm90
U3VwcG9ydGVkRXJyb3I6IERPTSBFeGNlcHRpb24gOS4KIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdl
dFVzZXJNZWRpYSh7YXVkaW86dHJ1ZX0sIGdvdFN0cmVhbTEsIGVycm9yKTsgZGlkIG5vdCB0aHJv
dyBleGNlcHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCi1QQVNTIHN0cmVhbS5hdWRpb1Ry
YWNrcy5sZW5ndGggaXMgMQotUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDAKK1BB
U1Mgc3RyZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLmdldFZp
ZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRp
YSh7dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNlcHRp
b24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCi1QQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5sZW5n
dGggaXMgMAotUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFt
LmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDAKK1BBU1Mgc3RyZWFtLmdldFZpZGVvVHJhY2tz
KCkubGVuZ3RoIGlzIDEKIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86
dHJ1ZSwgdmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTMsIGVycm9yKTsgZGlkIG5vdCB0aHJvdyBleGNl
cHRpb24uCiBQQVNTIFN0cmVhbSBnZW5lcmF0ZWQuCi1QQVNTIHN0cmVhbS5hdWRpb1RyYWNrcy5s
ZW5ndGggaXMgMQotUEFTUyBzdHJlYW0udmlkZW9UcmFja3MubGVuZ3RoIGlzIDEKK1BBU1Mgc3Ry
ZWFtLmdldEF1ZGlvVHJhY2tzKCkubGVuZ3RoIGlzIDEKK1BBU1Mgc3RyZWFtLmdldFZpZGVvVHJh
Y2tzKCkubGVuZ3RoIGlzIDEKIFBBU1MgbmF2aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVk
aW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwg
ZXJyb3IpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgU3RyZWFtIGdlbmVyYXRlZC4K
LVBBU1Mgc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCBpcyAxCi1QQVNTIHN0cmVhbS52aWRlb1Ry
YWNrcy5sZW5ndGggaXMgMQorUEFTUyBzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGggaXMg
MQorUEFTUyBzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGggaXMgMQogUEFTUyBuYXZpZ2F0
b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0b3J5OnsndmFsaWRfYnV0X3Vuc3Vw
cG9ydGVkXzEnOjB9LCBvcHRpb25hbDpbXX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW1JbkVycm9y
LCBlcnJvcjEpOyBkaWQgbm90IHRocm93IGV4Y2VwdGlvbi4KIFBBU1MgRXJyb3IgY2FsbGJhY2sg
Y2FsbGVkLgogUEFTUyBuYXZpZ2F0b3Iud2Via2l0R2V0VXNlck1lZGlhKHthdWRpbzp7bWFuZGF0
b3J5OnsndmFsaWRfYW5kX3N1cHBvcnRlZF8xJzoxfSwgb3B0aW9uYWw6W3sndmFsaWRfYnV0X3Vu
c3VwcG9ydGVkXzEnOjB9XX0sIHZpZGVvOnRydWV9LCBnb3RTdHJlYW01LCBlcnJvcik7IGRpZCBu
b3QgdGhyb3cgZXhjZXB0aW9uLgogUEFTUyBTdHJlYW0gZ2VuZXJhdGVkLgotUEFTUyBzdHJlYW0u
YXVkaW9UcmFja3MubGVuZ3RoIGlzIDEKLVBBU1Mgc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCBp
cyAxCitQQVNTIHN0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCBpcyAxCitQQVNTIHN0cmVh
bS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0aCBpcyAxCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBp
cyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvbWVk
aWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L21lZGlhc3RyZWFt
L2dldHVzZXJtZWRpYS5odG1sCmluZGV4IDc2YzQwMzJkZTZlMTBmZTJiMGMxYWIxYmRiZGM5ZTVm
NWJiMzU3OTMuLjY0OWQ5ZWJmOGFmMzIyZDBkMzllZWFiOTUyMmEyY2RiYmIzYTNlYmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvbWVkaWFzdHJlYW0vZ2V0dXNlcm1lZGlhLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvZmFzdC9tZWRpYXN0cmVhbS9nZXR1c2VybWVkaWEuaHRtbApAQCAtMjUs
OCArMjUsOCBAQCBmdW5jdGlvbiBnb3RTdHJlYW1JbkVycm9yKHMpIHsKIGZ1bmN0aW9uIGdvdFN0
cmVhbTUocykgewogICAgIHN0cmVhbSA9IHM7CiAgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGdlbmVy
YXRlZC4nKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7
Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNo
b3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOworICAgIHNob3Vs
ZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogICAgIGZpbmlzaEpT
VGVzdCgpOwogfQogCkBAIC0zOSw4ICszOSw4IEBAIGZ1bmN0aW9uIGVycm9yMSgpIHsKIGZ1bmN0
aW9uIGdvdFN0cmVhbTQocykgewogICAgIHN0cmVhbSA9IHM7CiAgICAgdGVzdFBhc3NlZCgnU3Ry
ZWFtIGdlbmVyYXRlZC4nKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0
aCcsICcxJyk7Ci0gICAgc2hvdWxkQmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScp
OworICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwor
ICAgIHNob3VsZEJlKCdzdHJlYW0uZ2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCiAg
ICAgc2hvdWxkTm90VGhyb3coIm5hdmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOntt
YW5kYXRvcnk6eyd2YWxpZF9idXRfdW5zdXBwb3J0ZWRfMSc6MH0sIG9wdGlvbmFsOltdfSwgdmlk
ZW86dHJ1ZX0sIGdvdFN0cmVhbUluRXJyb3IsIGVycm9yMSk7Iik7CiB9CkBAIC00OCw4ICs0OCw4
IEBAIGZ1bmN0aW9uIGdvdFN0cmVhbTQocykgewogZnVuY3Rpb24gZ290U3RyZWFtMyhzKSB7CiAg
ICAgc3RyZWFtID0gczsKICAgICB0ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOwotICAg
IHNob3VsZEJlKCdzdHJlYW0uYXVkaW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRC
ZSgnc3RyZWFtLnZpZGVvVHJhY2tzLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVh
bS5nZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5n
ZXRWaWRlb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CiAKICAgICBzaG91bGROb3RUaHJvdygibmF2
aWdhdG9yLndlYmtpdEdldFVzZXJNZWRpYSh7YXVkaW86e21hbmRhdG9yeTp7fSwgb3B0aW9uYWw6
W119LCB2aWRlbzp0cnVlfSwgZ290U3RyZWFtNCwgZXJyb3IpOyIpOwogfQpAQCAtNTcsOCArNTcs
OCBAQCBmdW5jdGlvbiBnb3RTdHJlYW0zKHMpIHsKIGZ1bmN0aW9uIGdvdFN0cmVhbTIocykgewog
ICAgIHN0cmVhbSA9IHM7CiAgICAgdGVzdFBhc3NlZCgnU3RyZWFtIGdlbmVyYXRlZC4nKTsKLSAg
ICBzaG91bGRCZSgnc3RyZWFtLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcwJyk7Ci0gICAgc2hvdWxk
QmUoJ3N0cmVhbS52aWRlb1RyYWNrcy5sZW5ndGgnLCAnMScpOworICAgIHNob3VsZEJlKCdzdHJl
YW0uZ2V0QXVkaW9UcmFja3MoKS5sZW5ndGgnLCAnMCcpOworICAgIHNob3VsZEJlKCdzdHJlYW0u
Z2V0VmlkZW9UcmFja3MoKS5sZW5ndGgnLCAnMScpOwogCiAgICAgc2hvdWxkTm90VGhyb3coIm5h
dmlnYXRvci53ZWJraXRHZXRVc2VyTWVkaWEoe2F1ZGlvOnRydWUsIHZpZGVvOnRydWV9LCBnb3RT
dHJlYW0zLCBlcnJvcik7Iik7CiB9CkBAIC02Niw4ICs2Niw4IEBAIGZ1bmN0aW9uIGdvdFN0cmVh
bTIocykgewogZnVuY3Rpb24gZ290U3RyZWFtMShzKSB7CiAgICAgc3RyZWFtID0gczsKICAgICB0
ZXN0UGFzc2VkKCdTdHJlYW0gZ2VuZXJhdGVkLicpOwotICAgIHNob3VsZEJlKCdzdHJlYW0uYXVk
aW9UcmFja3MubGVuZ3RoJywgJzEnKTsKLSAgICBzaG91bGRCZSgnc3RyZWFtLnZpZGVvVHJhY2tz
Lmxlbmd0aCcsICcwJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRBdWRpb1RyYWNrcygpLmxl
bmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3N0cmVhbS5nZXRWaWRlb1RyYWNrcygpLmxlbmd0
aCcsICcwJyk7CiAKICAgICBzaG91bGROb3RUaHJvdygibmF2aWdhdG9yLndlYmtpdEdldFVzZXJN
ZWRpYSh7dmlkZW86dHJ1ZX0sIGdvdFN0cmVhbTIsIGVycm9yKTsiKQogfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8vbWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUtZXhw
ZWN0ZWQudHh0CmluZGV4IDU5Mjc3MjQ3Njg3ZmRlMzEyMDE2NzRjOTc5NTIxY2Q3ODQ5ZTVjN2Qu
LmIzNjY4ODliODc4Mjk2MTNhMWMwMTU5NGFkYmY1YzUwYTA1NzNiNWYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVkaW9zb3VyY2Vub2RlLWV4cGVjdGVkLnR4
dAorKysgYi9MYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS1l
eHBlY3RlZC50eHQKQEAgLTMsOCArMyw4IEBAIEJhc2ljIHRlc3RzIGZvciBNZWRpYVN0cmVhbUF1
ZGlvU291cmNlTm9kZSBBUEkuCiBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCiAKIFBBU1Mge2F1
ZGlvOnRydWV9IGdlbmVyYXRlZCBzdHJlYW0KLVBBU1Mgcy5hdWRpb1RyYWNrcy5sZW5ndGggaXMg
MQotUEFTUyBzLnZpZGVvVHJhY2tzLmxlbmd0aCBpcyAwCitQQVNTIHMuZ2V0QXVkaW9UcmFja3Mo
KS5sZW5ndGggaXMgMQorUEFTUyBzLmdldFZpZGVvVHJhY2tzKCkubGVuZ3RoIGlzIDAKIFBBU1Mg
U291cmNlIEF1ZGlvTm9kZSBoYXMgbm8gaW5wdXRzLgogUEFTUyBTb3VyY2UgQXVkaW9Ob2RlIGhh
cyBvbmUgb3V0cHV0LgogUEFTUyBjb25uZWN0KCkgZXhjZXB0aW9uIHRocm93biBmb3IgaWxsZWdh
bCBkZXN0aW5hdGlvbiBBdWRpb05vZGUuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy93ZWJhdWRp
by9tZWRpYXN0cmVhbWF1ZGlvc291cmNlbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvd2ViYXVkaW8v
bWVkaWFzdHJlYW1hdWRpb3NvdXJjZW5vZGUuaHRtbAppbmRleCAwYTdhNTUyNmVkYzMyOTlhMWRh
MDk5MmVlMWIyMWI3YjcwZGYxYjg5Li5lMTIyY2MzZmYyOGVlMzliZTdhYzk4ZTQwMWViN2I2MWMy
MmQ4ZjE1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy93ZWJhdWRpby9tZWRpYXN0cmVhbWF1ZGlv
c291cmNlbm9kZS5odG1sCisrKyBiL0xheW91dFRlc3RzL3dlYmF1ZGlvL21lZGlhc3RyZWFtYXVk
aW9zb3VyY2Vub2RlLmh0bWwKQEAgLTMyLDggKzMyLDggQEAgZnVuY3Rpb24gZ2V0VXNlck1lZGlh
KGRpY3Rpb25hcnksIGNhbGxiYWNrKSB7CiBmdW5jdGlvbiBnb3RTdHJlYW0oc3RyZWFtKSB7CiAg
ICAgcyA9IHN0cmVhbTsKICAgICB0ZXN0UGFzc2VkKCd7YXVkaW86dHJ1ZX0gZ2VuZXJhdGVkIHN0
cmVhbScpOwotICAgIHNob3VsZEJlKCdzLmF1ZGlvVHJhY2tzLmxlbmd0aCcsICcxJyk7Ci0gICAg
c2hvdWxkQmUoJ3MudmlkZW9UcmFja3MubGVuZ3RoJywgJzAnKTsKKyAgICBzaG91bGRCZSgncy5n
ZXRBdWRpb1RyYWNrcygpLmxlbmd0aCcsICcxJyk7CisgICAgc2hvdWxkQmUoJ3MuZ2V0VmlkZW9U
cmFja3MoKS5sZW5ndGgnLCAnMCcpOwogCiAgICAgY29udGV4dCA9IG5ldyB3ZWJraXRBdWRpb0Nv
bnRleHQoKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>