<?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>109026</bug_id>
          
          <creation_ts>2013-02-06 01:09:04 -0800</creation_ts>
          <short_desc>[V8] Make an Isolate parameter mandatory in GetTemplate() and GetRawTemplate()</short_desc>
          <delta_ts>2013-02-06 18:45:37 -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 JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>826190</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 01:09:04 -0800</bug_when>
    <thetext>Now it&apos;s time to kill an optional Isolate parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826191</commentid>
    <comment_count>1</comment_count>
      <attachid>186780</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 01:10:03 -0800</bug_when>
    <thetext>Created attachment 186780
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826250</commentid>
    <comment_count>2</comment_count>
      <attachid>186780</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 02:20:48 -0800</bug_when>
    <thetext>Comment on attachment 186780
Patch

Attachment 186780 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16397068</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826258</commentid>
    <comment_count>3</comment_count>
      <attachid>186780</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 02:28:25 -0800</bug_when>
    <thetext>Comment on attachment 186780
Patch

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

New failing tests:
accessibility/aria-checkbox-checked.html
animations/3d/matrix-transform-type-animation.html
http/tests/appcache/cyrillic-uri.html
accessibility/anchor-linked-anonymous-block-crash.html
animations/animation-add-events-in-handler.html
http/tests/appcache/deferred-events-delete-while-raising.html
animations/additive-transform-animations.html
animations/3d/replace-filling-transform.html
http/tests/appcache/deferred-events-delete-while-raising-timer.html
accessibility/aria-describedby-on-input.html
http/tests/appcache/crash-when-navigating-away-then-back.html
animations/animation-border-overflow.html
animations/animation-direction-alternate-reverse.html
accessibility/accessibility-object-detached.html
http/tests/appcache/abort-cache-ondownloading-manifest-404.html
http/tests/appcache/credential-url.html
animations/animation-controller-drt-api.html
animations/3d/change-transform-in-end-event.html
accessibility/aria-controls-with-tabs.html
canvas/philip/tests/2d.canvas.readonly.html
animations/3d/transform-perspective.html
accessibility/accessibility-node-reparent.html
http/tests/appcache/access-via-redirect.php
http/tests/appcache/deferred-events.html
animations/3d/state-at-end-event-transform.html
animations/animation-direction-normal.html
animations/3d/transform-origin-vs-functions.html
accessibility/accessibility-node-memory-management.html
animations/animation-css-rule-types.html
accessibility/adjacent-continuations-cause-assertion-failure.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826287</commentid>
    <comment_count>4</comment_count>
      <attachid>186811</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 03:16:17 -0800</bug_when>
    <thetext>Created attachment 186811
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826289</commentid>
    <comment_count>5</comment_count>
      <attachid>186813</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-02-06 03:18:08 -0800</bug_when>
    <thetext>Created attachment 186813
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826982</commentid>
    <comment_count>6</comment_count>
      <attachid>186813</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 18:45:33 -0800</bug_when>
    <thetext>Comment on attachment 186813
Patch

Clearing flags on attachment: 186813

Committed r142061: &lt;http://trac.webkit.org/changeset/142061&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826983</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-06 18:45:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186780</attachid>
            <date>2013-02-06 01:10:03 -0800</date>
            <delta_ts>2013-02-06 03:16:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109026-20130206180640.patch</filename>
            <type>text/plain</type>
            <size>53389</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFkNmI5YmNjNGE0MDQy
ZGZiYmU4YzFmYTdiZDk1ZTlkOTQ5MzVkZC4uNzgyMGFkM2ViMDY3NmQ4Yjg3YzZiODNkNGNkOGY3
Y2Q0MDg4MWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNSBAQAogMjAxMy0wMi0wNiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBNYWtlIGFu
IElzb2xhdGUgcGFyYW1ldGVyIG1hbmRhdG9yeSBpbiBHZXRUZW1wbGF0ZSgpIGFuZCBHZXRSYXdU
ZW1wbGF0ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkwMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOb3cgaXQncyB0aW1lIHRvIGtpbGwgYW4gb3B0aW9uYWwgSXNvbGF0ZSBwYXJhbWV0ZXIuCisK
KyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFy
cmF5OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5oOgorICAgICAgICAoVjhGbG9hdDY0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
VjhGbG9hdDY0QXJyYXk6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuaDoKKyAgICAgICAgKFY4VGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAoVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Omluc3Rh
bGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChWOFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50
Q29uc3RydWN0b3I6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAo
VjhUZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6
Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RFeGNlcHRpb246OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGVzdEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Omluc3RhbGxQZXJDb250ZXh0UHJvdG90
eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFJh
d1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKFY4VGVzdEludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJ
bnRlcmZhY2U6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRSYXdU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4VGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRSYXdUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFY4VGVz
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6R2V0UmF3VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAg
ICAgICAoVjhUZXN0T2JqKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoK
KyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlclR5cGVJbmZvOjppbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXMpOgorCisyMDEzLTAyLTA2ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbVjhdIFBhc3MgYW4gSXNvbGF0ZSB0byByZW1h
aW5pbmcgR2V0VGVtcGxhdGUoKXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTAwMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDMzNDI4NWE2NmFlMTAyYjc4NmM4MWJhMDI1
MjM3YjMyYTQ5OWI2ZGIuLjVjZDVlMDM3N2EzMGQ0ZjAzMzUxMTQyZGNkMmE0OTk3NzliNDViZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCkBAIC0zNTQsOCArMzU0LDggQEAgRU5ECiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAg
IHN0YXRpYyAke25hdGl2ZVR5cGV9KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0aXZlVHlw
ZX0qPihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgpKTsKQEAgLTQ2NCwxMSArNDY0LDExIEBAIEVORAogCiAgICAgaWYgKEBl
bmFibGVkUGVyQ29udGV4dEZ1bmN0aW9ucykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9w
ZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOworICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6
SXNvbGF0ZSopOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOwotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0
YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwg
djg6Oklzb2xhdGUqKSB7IH0KIEVORAogICAgIH0KIApAQCAtMjE5NSw4ICsyMTk1LDYgQEAgRU5E
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFt
ZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
aWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQo
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hl
ZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gY2FjaGVkVGVtcGxhdGU7CkBAIC0zMTAwLDggKzMwOTgsNiBAQCBFTkQKIAogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0UmF3
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAg
ICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZW5kKCkpCkBAIC0zMTE1LDggKzMxMTEsNiBAQCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6
SXNvbAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFj
ZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlz
b2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5lbmQoKSkKQEAgLTMxNjcsMTMgKzMxNjEsMTMgQEAgRU5ECiAKICAgICBp
ZiAoQGVuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7Ci12b2lkICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8pCit2b2lkICR7
djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAg
IFVOVVNFRF9QQVJBTShwcm90byk7CiBFTkQKICAgICAgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWJ5
LXNldHRpbmdzIGZ1bmN0aW9ucyBpZiB3ZSBoYXZlIHRoZW0KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICA8PEVORCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CisgICAgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0
VGVtcGxhdGUoaXNvbGF0ZSkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsg
Ly8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIAogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQocHJvdG8tPkNy
ZWF0aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGYwZjNmMzY1NDM2NGZj
MWRlMTU5MzE4ZTE2NmE5ZjRmM2Q2OTViYjIuLjAyMWMxNWIxYmJkNDlhZDdlNGJjNmQxZmJjOTQ5
MzczNzc1ZmRmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTM0LDggKzEzNCw2IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9h
dDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xNDksOCArMTQ3
LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5
OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0
ZTo6R2V0Q3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
aW5kZXggZWY2MWQyM2Q0MmIyYjVkYzEwZDY3YzVhNjhhZDFmNzg1OWEzMmNlYS4uZWVjYWM2M2Rj
Y2YyZjQ2YWEzNmU0MTU1YjI4MDEyYmU5NzI2ODJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKQEAgLTM2
LDggKzM2LDggQEAgY2xhc3MgVjhGbG9hdDY0QXJyYXkgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gVjhBcnJheUJ1ZmZlclZpZXc6Omhhc0Rl
cGVuZGVudExpZmV0aW1lOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwotICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
KTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEZsb2F0
NjRBcnJheSo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBGbG9hdDY0
QXJyYXkqLCB2ODo6SXNvbGF0ZSopIHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBz
dGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChGbG9hdDY0QXJyYXkqLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5Piwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IGEwNWRjZWZhZGQ4YjFiYmMwMWMz
N2NjZmQ2MGVmYWJkYThkNzI2MTQuLjNhYWU3OTZmNTVmOWYwODlmOTEwZmNjYWViOGFmNWJhNTU4
NmQ1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNjIsOCArMTYy
LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0g
djg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkp
CkBAIC0xNzcsOCArMTc1LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUodjg6OkkKIAogdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAg
ICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCku
ZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZDUwZWUxYmRiZmZlMzQ0
MjE0MmE0YjVhYzdjMjY0YTE4MjYyNTZhOC4uZjc0M2YwN2QyNWIyZmMyNGI0MmY2ZWYzODBjOGY5
YmVhOTIxM2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtMzUsOCArMzUs
OCBAQCBjbGFzcyBWOFRlc3RBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0
KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RBY3RpdmVET01PYmplY3QqPihvYmplY3QtPkdl
dEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgp
KTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIG5hbWVkU2VjdXJp
dHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
a2V5LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSk7CiAgICAgc3Rh
dGljIGJvb2wgaW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0
YSk7CiAgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIFRlc3RBY3RpdmVET01PYmplY3QqLCB2ODo6SXNvbGF0ZSopIHsgfQot
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUq
KSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChU
ZXN0QWN0aXZlRE9NT2JqZWN0Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RBY3RpdmVET01PYmplY3Q+LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDQ2ZDRhN2Q5NjA4ZGQ4YWU0YWU3YzEzMmZkMDc1
YzQ4MzBiM2UxZTIuLjNjYzMyNDM2MDZiMGEzZTg3ZGM3NjU4MmRkMDcxMDZkYjRlZWJlYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTAwLDggKzEwMCw2IEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBA
IC0xMTUsOCArMTEzLDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRSYXdUZW1wbGF0ZSh2ODoKIAogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUpCi0gICAgICAg
IGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURh
dGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwogICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5l
bmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggNTYxZWI1M2RkNWY0
M2IwZmVkNDQzODFlNjZhM2ZkYjViMzQzODdmYy4uMWFkNzVjYzI3ZmQyYjJjYzExNzNkOTQ5ZDg0
MmFkN2U2MzRiMGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTM1
LDggKzM1LDggQEAgY2xhc3MgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSop
OwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3
VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdEN1c3RvbU5hbWVkR2V0dGVy
Kj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBl
ck9iamVjdEluZGV4KSk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRl
cm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsK
ICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiwgdjg6Oklzb2xhdGUqKSB7IH0KLSAg
ICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKikg
eyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RDdXN0b21OYW1lZEdldHRlcj4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGQ3MzhlOTVkYWUwY2ZhZWQwNDJkMGY2ZDQ1Zjlj
YzI0OTgyYjUwYzUuLjA5NjZmNGIyNzE1YzEyZmVlZGZkZWI1ZjQxMmVhNDA4MzExNDViMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEzMiw4ICsxMzIsNiBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEV2ZW50Q29uc3RydWN0b3JUZW1wbAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklz
b2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0x
NDcsOCArMTQ1LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKHY4OjoKIAogdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNv
bGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCku
ZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggN2I0MjRlYzM3MzczNWQ2ZmFl
YjY4MzZlMGMxN2MxNGRiMDA1NTlkOS4uOGRkYWEwYjllYTllNWUxMmQ1ODYxZWEyMDc2YzEyMDA0
YjhkZGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zNiw4ICszNiw4
IEBAIGNsYXNzIFY4VGVzdEV2ZW50Q29uc3RydWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewogICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KG9iamVjdC0+
R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRl
eCkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBz
dGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0RXZlbnRDb25zdHJ1Y3RvciosIHY4
OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQorICAgIHN0YXRpYyB2b2lk
IGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmllbmQgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVudENvbnN0cnVj
dG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAwMjg1YjdjMjc3MzM3MTJlYWE2MWU0
N2M3NTE2N2Q1MjQxMjNiMDQ0Li45YWJiYjkyZWUzMDA5OWVlMTlmYmQzZGVhYjJiMmNiZWE3ZDVi
NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE2MSw4ICsxNjEsNiBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2
ZW50VGFyZ2V0VGVtcGxhdGUodgogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpH
ZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQpAQCAtMTc2LDggKzE3
NCw2IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRh
cmdldDo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklz
b2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
ICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCmluZGV4IDAyZTlmNWEzOTUwNTdhOTk2NjViNmU4YjVhN2MwMGVmYmMyMTU0YjAu
LjI2YmJkNDg0M2E0YmU2MmQzYjc1NTYyNDU4NGUyZWZjOTQ3ODYzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdEV2ZW50VGFyZ2V0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNl
OwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwotICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0g
MCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRS
YXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMg
VGVzdEV2ZW50VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkK
ICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RFdmVudFRhcmdldCo+
KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJP
YmplY3RJbmRleCkpOwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IGludCBldmVudExpc3RlbmVyQ2FjaGVJbmRleCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CiAgICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RF
dmVudFRhcmdldCosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmll
bmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudFRhcmdldCosIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXZl
bnRUYXJnZXQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZmI1NDZlOGFjMmUxNDAxMDYyODBj
NGUzMGYxYjZjNGI3NDEwYjNlNC4uMWEyMjhjMzMxNWE0YTk4NTIyMjQ0ODFhOWVkODcwZmU5Nzdl
MmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTkxLDggKzkxLDYgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRp
b25UZW1wbGF0ZSh2ODoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEV4Y2VwdGlvbjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0g
ICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJl
bnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xMDYsOCArMTA0LDYgQEAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0
UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5k
ZXggYmMxNTRkMzM4OWQ4NDE2Y2Y5MmYyMTdmZTk4YzQwY2Q1NjYzOTcxNi4uNTUxNzgyZjA3MjFi
Nzk2OTIyYzI2ZDUxOTU4NDc2NGMwYjMwZTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtMzUs
OCArMzUsOCBAQCBjbGFzcyBWOFRlc3RFeGNlcHRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0RXhjZXB0aW9uKiB0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFRlc3RFeGNlcHRpb24qPihvYmplY3QtPkdldEFsaWduZWRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBz
dGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0RXhjZXB0aW9uKiwgdjg6Oklzb2xh
dGUqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3Bl
cnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4
OjpJc29sYXRlKikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXAoVGVzdEV4Y2VwdGlvbiosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDY0YTE3YWZjNTYzYWE5MDgzYmU3MmVkYmFlMjlhMTkxYThlNWYyNDYuLjZmMjQ2
MTlhYjgyYWY3ODVmMzE1MzczZGEyNmJiNGM4ZWUyMzdhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0zMTYsOCArMzE2LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAg
ICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxh
dGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRl
TWFwKCkuZW5kKCkpCkBAIC0zMzEsOCArMzI5LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUK
IAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQot
ICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXggOWUxODUwOTQwNjM2YjQwNTg2MmUz
N2IyYWEzNWIyODE3ZDFkZTBhNy4uZDI3ZmUzNjNiMGM3MjZmMTBjOWMxZTIyNmM4NGM2ZjUwODhi
MjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBWOFRlc3RJ
bnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExp
ZmV0aW1lID0gdHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7
CiAgICAgc3RhdGljIFRlc3RJbnRlcmZhY2UqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdElu
dGVyZmFjZSo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0SW50ZXJmYWNlKiwg
djg6Oklzb2xhdGUqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4sIHY4OjpJc29sYXRlKikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMDBiYjBhOTk5ZjA2
MzJkMzY4ZDY4MDVhNGQ2MTNiMmRlMjdlYjBiMC4uYmY1ZjRmNDA5ZDVhNmIwZjkyZTEzZDliMTI2
YWQ5ZDdmMGZhZWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcApAQCAtMTAwLDggKzEwMCw2IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lCiAKIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAo
IWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKQEAgLTExNSw4ICsxMTMsNiBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6R2V0UmF3VGVtcGxhdAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xh
dGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCAwNGE5NmJiOWIxMTU2MmRkYWEyMTYz
N2MwZGVhZjAwZWRmOGM5MjMyLi5lNTVjZWFlOGJhNmRhZDAwMTQ1MTkyZWNjNjY0N2Q2ZjRkMWM1
MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTM1
LDggKzM1LDggQEAgY2xhc3MgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwor
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZp
ZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIGNvbnN0IGludCBp
bnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsg
MDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqLCB2ODo6SXNvbGF0ZSop
IHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklz
b2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGQwM2NmNDVkZmQ5
NDA1YTgyYmQ1NzgyZDEyM2QzNWE3N2IyZTFmNDcuLmJjOGFmZDZjMGExMGY0NzJjNDZiNDFkMzBl
Y2JiMGU3Y2JhNzUzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTEwMCw4ICsxMDAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogCiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUp
Ci0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7CiAg
ICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRU
ZW1wbGF0ZTsKQEAgLTEzNiw4ICsxMzQsNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbAogCiB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xNTEsOCArMTQ3LDYgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFJhd1Rl
bXBsYXRlKHY4OjoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewot
ICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJy
ZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmgKaW5kZXggZTY4NjgyNThkNDE2YzJjOGMwYTVjMjljYTRmODFjN2FiZGU1ZmFiMC4uNmQ1
NjYzNDY1NjRkYWI0YzgwOWI2NTE0NTM4MGMzZDMxMjcyZmViNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIFY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gdHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAg
ICAgc3RhdGljIFRlc3ROYW1lZENvbnN0cnVjdG9yKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRl
c3ROYW1lZENvbnN0cnVjdG9yKj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5h
bEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQWN0aXZlRE9NT2JqZWN0KiB0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3Vu
dCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2
b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBU
ZXN0TmFtZWRDb25zdHJ1Y3RvciosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4pIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToK
ICAgICBmcmllbmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3ROYW1lZENvbnN0cnVj
dG9yKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZDNjNmI0MGEzMDU5
Y2RiMWFjNWQyOTdlZDkxZGYzZWY5Yjk4ZmE1OS4uNDAyYmYxNmNiNjYxYTcyMTlhYmQzYjU2Njhl
YTNlY2Y1OWIxMGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtOTgsOCArOTgsNiBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1w
bGF0ZSh2ODo6UGVycwogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0Tm9kZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYg
KCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xMTMsOCArMTExLDYgQEAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5vZGU6OkdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc28KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlm
ICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggNzgzNWUxMDZhZTBlZGQ0YTVj
OTYzZWJlOTUzMGQ5ZTRhZDMxMTIxYS4uY2FhNDI5MDJhYjkwZGRjNzdiOTZiZTU3MTA2YTYwNWI2
ZGFmNzA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdE5vZGUgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1
ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9
IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0
UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGlj
IFRlc3ROb2RlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3ROb2RlKj4ob2JqZWN0LT5HZXRB
bGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRp
YyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3ROb2RlKiwgdjg6Oklzb2xhdGUqKSB7IH0K
LSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRl
KikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAo
VGVzdE5vZGUqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdE5vZGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYzExMTA4NDBmYWQwODFkMmYxZDA2
NjFmMDVlZTUyZGQ1MDM3MzExYS4uODhjOTFkNjQ2YjQxMTcwOGU3ZDNlYTBiNTFlNmM5YjJhNDU5
MzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIyMTIsOCArMjIxMiw2IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6
OlBlcnNpCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPYmo6
OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0
ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5y
YXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQpAQCAtMjIyNyw4ICsyMjI1LDYgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2wKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0yMjY1LDEwICsyMjYxLDEwIEBAIHZvaWQgVjhUZXN0T2Jq
OjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbnN0
YW5jZSwgVGVzCiAgICAgfQogfQogCi12b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8pCit2b2lkIFY4
VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIFVOVVNFRF9Q
QVJBTShwcm90byk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1
cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CisgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVt
cGxhdGUoaXNvbGF0ZSkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8g
SW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIAogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQocHJvdG8tPkNyZWF0
aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCA4MTE4ZGU3ZGFkYzNlOTc1YWZkYzUyMThhZTUxZTFm
ZjY5YjEwOWU0Li5iYzZiMDI3MTYzZGM3ZjQ1NTFkYjVkMTFkNTI0MGFmOWI2MmU5ZTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0g
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6
Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIFRlc3RPYmoqIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdE9iaio+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9t
SW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY3VzdG9tQXR0ckFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RP
YmoqLCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
dG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICBzdGF0aWMgdm9p
ZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Piwgdjg6Oklzb2xhdGUqKTsKIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcChUZXN0T2JqKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RPYmo+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA1MDM2NDM4ZDJhZjhkZTNlOWRlYjM2MGJmOTUy
ZjY3OWJhNTZiYmJiLi5mYmZlMWFhMzAyZjE2MjI3NjZmNTZkNzNiN2M4MWI2YzdhNmM5YTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xNTUs
OCArMTU1LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3IKIAogdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFJhd1Rl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAg
ICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCgpLmVuZCgpKQpAQCAtMTcwLDggKzE2OCw2IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBp
ZiAoIWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgp
OwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oCmluZGV4IDM3MWMzMTg1ZTg5N2M0NThhYTEyZTc3YTc2Y2UxYzIzMWIxMzYz
YTMuLjdhZWY0OTcxNTU4MTI2OWMzMTZkMzFkZjkyYWVlNWVhZWQ2MWM0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMzUsOCArMzUsOCBAQCBjbGFz
cyBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4
OjpJc29sYXRlKiA9IDApOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
PihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVy
T2JqZWN0SW5kZXgpKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
Jik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqLCB2ODo6SXNvbGF0ZSopIHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0K
KyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rv
cjJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDU2YmVkOTgwNTYw
MmQ1NmVjOWM1MTM3Y2JkYjU0Yjg4NDFjMGIzZGIuLjIwYjJkNTEyYTJjZjljMDQ2MTVhZGU2ZTMx
MmE1ZjRhOGFmYWQ0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yNzMsOCArMjczLDYgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWUKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBA
IC0yODgsOCArMjg2LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmEKIAogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggNDgyNWJkY2NlNTkzZWQ5M2VkYzNiODgxZGVhNDBj
OGMwYTFlM2QxYi4uZTkyZjdmYzI4YWEyYzkxZDg5ZGI1OTQ1NTc2YTZiN2MzY2VkNGE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
aApAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwog
ICAgIHN0YXRpYyBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihvYmplY3Qt
PkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5k
ZXgpKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CiAgICAg
c3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgMDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFBy
b3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmll
bmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAppbmRleCA0YzU4ZmMw
NDBhMmQxMGMyYjkwOTFmMDE5MjVlMjk2NTNmNDhkOGYwLi45ZjE0NDBiY2ZjZDdiMGVmOWZiMzJm
NjllZmE1MDUzNjcxMmY1ZWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFBlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcApAQCAtMTI1LDcgKzEyNSw3IEBAIHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBw
ZXJUeXBlCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBmdW5jdGlv
bi0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIikpOwogICAgIGlmICghcHJv
dG90eXBlVmFsdWUuSXNFbXB0eSgpICYmIHByb3RvdHlwZVZhbHVlLT5Jc09iamVjdCgpKSB7CiAg
ICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBwcm90b3R5cGVPYmplY3QgPSB2ODo6TG9jYWw8
djg6Ok9iamVjdD46OkNhc3QocHJvdG90eXBlVmFsdWUpOwotICAgICAgICB0eXBlLT5pbnN0YWxs
UGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMocHJvdG90eXBlT2JqZWN0KTsKKyAgICAgICAg
dHlwZS0+aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHByb3RvdHlwZU9iamVj
dCwgbV9jb250ZXh0LT5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAodHlwZS0+d3JhcHBlclR5
cGVQcm90b3R5cGUgPT0gV3JhcHBlclR5cGVFcnJvclByb3RvdHlwZSkKICAgICAgICAgICAgIHBy
b3RvdHlwZU9iamVjdC0+U2V0UHJvdG90eXBlKG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5m
by5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXgg
OGJkNmUyOTBhZWIxY2ZlZWQ1NTJjNDJkMzg2MWIzZWI0OTQ3YjE1Yi4uODg0MDljOGExNjJlZTRm
MDJlNDYwMDFmNWRiOWY3MWVjM2YxODQ0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV3JhcHBlclR5cGVJbmZvLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgIHR5cGVkZWYgQWN0aXZlRE9NT2JqZWN0KiAoKlRvQWN0aXZlRE9NT2JqZWN0RnVuY3Rp
b24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHR5cGVkZWYgRXZlbnRUYXJnZXQqICgq
VG9FdmVudFRhcmdldEZ1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKICAgICB0eXBl
ZGVmIHZvaWQqICgqT3BhcXVlUm9vdEZvckdDKSh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4sIHY4OjpJc29sYXRlKik7Ci0gICAgdHlwZWRlZiB2b2lkICgqSW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwor
ICAgIHR5cGVkZWYgdm9pZCAoKkluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1
bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgZW51
bSBXcmFwcGVyVHlwZVByb3RvdHlwZSB7CiAgICAgICAgIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90
eXBlLApAQCAtOTIsMTAgKzkyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAg
ICAgICBkZXJlZk9iamVjdEZ1bmN0aW9uKG9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAgCi0g
ICAgICAgIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gcHJvdG8pCisgICAgICAgIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRl
KiBpc29sYXRlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgaW5zdGFsbFBlckNv
bnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24ocHJvdG8pOworICAgICAgICAgICAgICAg
IGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uKHByb3RvLCBpc29s
YXRlKTsKICAgICAgICAgfQogCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCogdG9BY3RpdmVET01P
YmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186811</attachid>
            <date>2013-02-06 03:16:17 -0800</date>
            <delta_ts>2013-02-06 03:18:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109026-20130206201254.patch</filename>
            <type>text/plain</type>
            <size>54331</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFkNmI5YmNjNGE0MDQy
ZGZiYmU4YzFmYTdiZDk1ZTlkOTQ5MzVkZC4uNzgyMGFkM2ViMDY3NmQ4Yjg3YzZiODNkNGNkOGY3
Y2Q0MDg4MWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNSBAQAogMjAxMy0wMi0wNiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBNYWtlIGFu
IElzb2xhdGUgcGFyYW1ldGVyIG1hbmRhdG9yeSBpbiBHZXRUZW1wbGF0ZSgpIGFuZCBHZXRSYXdU
ZW1wbGF0ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkwMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOb3cgaXQncyB0aW1lIHRvIGtpbGwgYW4gb3B0aW9uYWwgSXNvbGF0ZSBwYXJhbWV0ZXIuCisK
KyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFy
cmF5OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5oOgorICAgICAgICAoVjhGbG9hdDY0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
VjhGbG9hdDY0QXJyYXk6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuaDoKKyAgICAgICAgKFY4VGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAoVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Omluc3Rh
bGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChWOFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50
Q29uc3RydWN0b3I6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAo
VjhUZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6
Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RFeGNlcHRpb246OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGVzdEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Omluc3RhbGxQZXJDb250ZXh0UHJvdG90
eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFJh
d1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKFY4VGVzdEludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJ
bnRlcmZhY2U6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRSYXdU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4VGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRSYXdUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFY4VGVz
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6R2V0UmF3VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAg
ICAgICAoVjhUZXN0T2JqKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoK
KyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlclR5cGVJbmZvOjppbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXMpOgorCisyMDEzLTAyLTA2ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbVjhdIFBhc3MgYW4gSXNvbGF0ZSB0byByZW1h
aW5pbmcgR2V0VGVtcGxhdGUoKXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTAwMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDMzNDI4NWE2NmFlMTAyYjc4NmM4MWJhMDI1
MjM3YjMyYTQ5OWI2ZGIuLjVjZDVlMDM3N2EzMGQ0ZjAzMzUxMTQyZGNkMmE0OTk3NzliNDViZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCkBAIC0zNTQsOCArMzU0LDggQEAgRU5ECiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAg
IHN0YXRpYyAke25hdGl2ZVR5cGV9KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0aXZlVHlw
ZX0qPihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgpKTsKQEAgLTQ2NCwxMSArNDY0LDExIEBAIEVORAogCiAgICAgaWYgKEBl
bmFibGVkUGVyQ29udGV4dEZ1bmN0aW9ucykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9w
ZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOworICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6
SXNvbGF0ZSopOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOwotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0
YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwg
djg6Oklzb2xhdGUqKSB7IH0KIEVORAogICAgIH0KIApAQCAtMjE5NSw4ICsyMTk1LDYgQEAgRU5E
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFt
ZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
aWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQo
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hl
ZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gY2FjaGVkVGVtcGxhdGU7CkBAIC0zMTAwLDggKzMwOTgsNiBAQCBFTkQKIAogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0UmF3
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAg
ICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZW5kKCkpCkBAIC0zMTE1LDggKzMxMTEsNiBAQCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6
SXNvbAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFj
ZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlz
b2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5lbmQoKSkKQEAgLTMxNjcsMTMgKzMxNjEsMTMgQEAgRU5ECiAKICAgICBp
ZiAoQGVuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7Ci12b2lkICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8pCit2b2lkICR7
djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAg
IFVOVVNFRF9QQVJBTShwcm90byk7CiBFTkQKICAgICAgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWJ5
LXNldHRpbmdzIGZ1bmN0aW9ucyBpZiB3ZSBoYXZlIHRoZW0KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICA8PEVORCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CisgICAgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0
VGVtcGxhdGUoaXNvbGF0ZSkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsg
Ly8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIAogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQocHJvdG8tPkNy
ZWF0aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGYwZjNmMzY1NDM2NGZj
MWRlMTU5MzE4ZTE2NmE5ZjRmM2Q2OTViYjIuLjAyMWMxNWIxYmJkNDlhZDdlNGJjNmQxZmJjOTQ5
MzczNzc1ZmRmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTM0LDggKzEzNCw2IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9h
dDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xNDksOCArMTQ3
LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5
OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0
ZTo6R2V0Q3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
aW5kZXggZWY2MWQyM2Q0MmIyYjVkYzEwZDY3YzVhNjhhZDFmNzg1OWEzMmNlYS4uZWVjYWM2M2Rj
Y2YyZjQ2YWEzNmU0MTU1YjI4MDEyYmU5NzI2ODJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKQEAgLTM2
LDggKzM2LDggQEAgY2xhc3MgVjhGbG9hdDY0QXJyYXkgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gVjhBcnJheUJ1ZmZlclZpZXc6Omhhc0Rl
cGVuZGVudExpZmV0aW1lOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwotICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
KTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEZsb2F0
NjRBcnJheSo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBGbG9hdDY0
QXJyYXkqLCB2ODo6SXNvbGF0ZSopIHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBz
dGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChGbG9hdDY0QXJyYXkqLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5Piwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IGEwNWRjZWZhZGQ4YjFiYmMwMWMz
N2NjZmQ2MGVmYWJkYThkNzI2MTQuLjNhYWU3OTZmNTVmOWYwODlmOTEwZmNjYWViOGFmNWJhNTU4
NmQ1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNjIsOCArMTYy
LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0g
djg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkp
CkBAIC0xNzcsOCArMTc1LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUodjg6OkkKIAogdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAg
ICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCku
ZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZDUwZWUxYmRiZmZlMzQ0
MjE0MmE0YjVhYzdjMjY0YTE4MjYyNTZhOC4uZjc0M2YwN2QyNWIyZmMyNGI0MmY2ZWYzODBjOGY5
YmVhOTIxM2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtMzUsOCArMzUs
OCBAQCBjbGFzcyBWOFRlc3RBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0
KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RBY3RpdmVET01PYmplY3QqPihvYmplY3QtPkdl
dEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgp
KTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIG5hbWVkU2VjdXJp
dHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
a2V5LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSk7CiAgICAgc3Rh
dGljIGJvb2wgaW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0
YSk7CiAgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIFRlc3RBY3RpdmVET01PYmplY3QqLCB2ODo6SXNvbGF0ZSopIHsgfQot
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUq
KSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChU
ZXN0QWN0aXZlRE9NT2JqZWN0Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RBY3RpdmVET01PYmplY3Q+LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDQ2ZDRhN2Q5NjA4ZGQ4YWU0YWU3YzEzMmZkMDc1
YzQ4MzBiM2UxZTIuLjNjYzMyNDM2MDZiMGEzZTg3ZGM3NjU4MmRkMDcxMDZkYjRlZWJlYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTAwLDggKzEwMCw2IEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBA
IC0xMTUsOCArMTEzLDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRSYXdUZW1wbGF0ZSh2ODoKIAogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUpCi0gICAgICAg
IGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURh
dGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwogICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5l
bmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggNTYxZWI1M2RkNWY0
M2IwZmVkNDQzODFlNjZhM2ZkYjViMzQzODdmYy4uMWFkNzVjYzI3ZmQyYjJjYzExNzNkOTQ5ZDg0
MmFkN2U2MzRiMGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTM1
LDggKzM1LDggQEAgY2xhc3MgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSop
OwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3
VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdEN1c3RvbU5hbWVkR2V0dGVy
Kj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBl
ck9iamVjdEluZGV4KSk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRl
cm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsK
ICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiwgdjg6Oklzb2xhdGUqKSB7IH0KLSAg
ICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKikg
eyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RDdXN0b21OYW1lZEdldHRlcj4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGQ3MzhlOTVkYWUwY2ZhZWQwNDJkMGY2ZDQ1Zjlj
YzI0OTgyYjUwYzUuLjA5NjZmNGIyNzE1YzEyZmVlZGZkZWI1ZjQxMmVhNDA4MzExNDViMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEzMiw4ICsxMzIsNiBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEV2ZW50Q29uc3RydWN0b3JUZW1wbAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklz
b2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0x
NDcsOCArMTQ1LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKHY4OjoKIAogdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNv
bGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCku
ZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggN2I0MjRlYzM3MzczNWQ2ZmFl
YjY4MzZlMGMxN2MxNGRiMDA1NTlkOS4uOGRkYWEwYjllYTllNWUxMmQ1ODYxZWEyMDc2YzEyMDA0
YjhkZGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zNiw4ICszNiw4
IEBAIGNsYXNzIFY4VGVzdEV2ZW50Q29uc3RydWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewogICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KG9iamVjdC0+
R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRl
eCkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBz
dGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0RXZlbnRDb25zdHJ1Y3RvciosIHY4
OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQorICAgIHN0YXRpYyB2b2lk
IGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmllbmQgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVudENvbnN0cnVj
dG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAwMjg1YjdjMjc3MzM3MTJlYWE2MWU0
N2M3NTE2N2Q1MjQxMjNiMDQ0Li45YWJiYjkyZWUzMDA5OWVlMTlmYmQzZGVhYjJiMmNiZWE3ZDVi
NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE2MSw4ICsxNjEsNiBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2
ZW50VGFyZ2V0VGVtcGxhdGUodgogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpH
ZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQpAQCAtMTc2LDggKzE3
NCw2IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRh
cmdldDo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklz
b2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
ICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCmluZGV4IDAyZTlmNWEzOTUwNTdhOTk2NjViNmU4YjVhN2MwMGVmYmMyMTU0YjAu
LjI2YmJkNDg0M2E0YmU2MmQzYjc1NTYyNDU4NGUyZWZjOTQ3ODYzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdEV2ZW50VGFyZ2V0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNl
OwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwotICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0g
MCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRS
YXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMg
VGVzdEV2ZW50VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkK
ICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RFdmVudFRhcmdldCo+
KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJP
YmplY3RJbmRleCkpOwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IGludCBldmVudExpc3RlbmVyQ2FjaGVJbmRleCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CiAgICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RF
dmVudFRhcmdldCosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmll
bmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudFRhcmdldCosIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXZl
bnRUYXJnZXQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZmI1NDZlOGFjMmUxNDAxMDYyODBj
NGUzMGYxYjZjNGI3NDEwYjNlNC4uMWEyMjhjMzMxNWE0YTk4NTIyMjQ0ODFhOWVkODcwZmU5Nzdl
MmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTkxLDggKzkxLDYgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRp
b25UZW1wbGF0ZSh2ODoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEV4Y2VwdGlvbjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0g
ICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJl
bnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xMDYsOCArMTA0LDYgQEAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0
UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5k
ZXggYmMxNTRkMzM4OWQ4NDE2Y2Y5MmYyMTdmZTk4YzQwY2Q1NjYzOTcxNi4uNTUxNzgyZjA3MjFi
Nzk2OTIyYzI2ZDUxOTU4NDc2NGMwYjMwZTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtMzUs
OCArMzUsOCBAQCBjbGFzcyBWOFRlc3RFeGNlcHRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0RXhjZXB0aW9uKiB0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFRlc3RFeGNlcHRpb24qPihvYmplY3QtPkdldEFsaWduZWRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBz
dGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0RXhjZXB0aW9uKiwgdjg6Oklzb2xh
dGUqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3Bl
cnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4
OjpJc29sYXRlKikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXAoVGVzdEV4Y2VwdGlvbiosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDY0YTE3YWZjNTYzYWE5MDgzYmU3MmVkYmFlMjlhMTkxYThlNWYyNDYuLjZmMjQ2
MTlhYjgyYWY3ODVmMzE1MzczZGEyNmJiNGM4ZWUyMzdhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0zMTYsOCArMzE2LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAg
ICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxh
dGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRl
TWFwKCkuZW5kKCkpCkBAIC0zMzEsOCArMzI5LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUK
IAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQot
ICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXggOWUxODUwOTQwNjM2YjQwNTg2MmUz
N2IyYWEzNWIyODE3ZDFkZTBhNy4uZDI3ZmUzNjNiMGM3MjZmMTBjOWMxZTIyNmM4NGM2ZjUwODhi
MjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBWOFRlc3RJ
bnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExp
ZmV0aW1lID0gdHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7
CiAgICAgc3RhdGljIFRlc3RJbnRlcmZhY2UqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdElu
dGVyZmFjZSo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0SW50ZXJmYWNlKiwg
djg6Oklzb2xhdGUqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4sIHY4OjpJc29sYXRlKikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMDBiYjBhOTk5ZjA2
MzJkMzY4ZDY4MDVhNGQ2MTNiMmRlMjdlYjBiMC4uYmY1ZjRmNDA5ZDVhNmIwZjkyZTEzZDliMTI2
YWQ5ZDdmMGZhZWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcApAQCAtMTAwLDggKzEwMCw2IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lCiAKIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAo
IWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKQEAgLTExNSw4ICsxMTMsNiBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6R2V0UmF3VGVtcGxhdAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xh
dGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCAwNGE5NmJiOWIxMTU2MmRkYWEyMTYz
N2MwZGVhZjAwZWRmOGM5MjMyLi5lNTVjZWFlOGJhNmRhZDAwMTQ1MTkyZWNjNjY0N2Q2ZjRkMWM1
MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTM1
LDggKzM1LDggQEAgY2xhc3MgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwor
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZp
ZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIGNvbnN0IGludCBp
bnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsg
MDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqLCB2ODo6SXNvbGF0ZSop
IHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklz
b2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGQwM2NmNDVkZmQ5
NDA1YTgyYmQ1NzgyZDEyM2QzNWE3N2IyZTFmNDcuLmJjOGFmZDZjMGExMGY0NzJjNDZiNDFkMzBl
Y2JiMGU3Y2JhNzUzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTEwMCw4ICsxMDAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogCiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUp
Ci0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7CiAg
ICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRU
ZW1wbGF0ZTsKQEAgLTEzNiw4ICsxMzQsNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbAogCiB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xNTEsOCArMTQ3LDYgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFJhd1Rl
bXBsYXRlKHY4OjoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewot
ICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJy
ZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmgKaW5kZXggZTY4NjgyNThkNDE2YzJjOGMwYTVjMjljYTRmODFjN2FiZGU1ZmFiMC4uNmQ1
NjYzNDY1NjRkYWI0YzgwOWI2NTE0NTM4MGMzZDMxMjcyZmViNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIFY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gdHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAg
ICAgc3RhdGljIFRlc3ROYW1lZENvbnN0cnVjdG9yKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRl
c3ROYW1lZENvbnN0cnVjdG9yKj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5h
bEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQWN0aXZlRE9NT2JqZWN0KiB0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3Vu
dCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2
b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBU
ZXN0TmFtZWRDb25zdHJ1Y3RvciosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4pIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToK
ICAgICBmcmllbmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3ROYW1lZENvbnN0cnVj
dG9yKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZDNjNmI0MGEzMDU5
Y2RiMWFjNWQyOTdlZDkxZGYzZWY5Yjk4ZmE1OS4uNDAyYmYxNmNiNjYxYTcyMTlhYmQzYjU2Njhl
YTNlY2Y1OWIxMGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtOTgsOCArOTgsNiBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1w
bGF0ZSh2ODo6UGVycwogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0Tm9kZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYg
KCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xMTMsOCArMTExLDYgQEAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5vZGU6OkdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc28KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlm
ICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggNzgzNWUxMDZhZTBlZGQ0YTVj
OTYzZWJlOTUzMGQ5ZTRhZDMxMTIxYS4uY2FhNDI5MDJhYjkwZGRjNzdiOTZiZTU3MTA2YTYwNWI2
ZGFmNzA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdE5vZGUgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1
ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9
IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0
UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGlj
IFRlc3ROb2RlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3ROb2RlKj4ob2JqZWN0LT5HZXRB
bGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRp
YyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3ROb2RlKiwgdjg6Oklzb2xhdGUqKSB7IH0K
LSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRl
KikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAo
VGVzdE5vZGUqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdE5vZGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYzExMTA4NDBmYWQwODFkMmYxZDA2
NjFmMDVlZTUyZGQ1MDM3MzExYS4uODhjOTFkNjQ2YjQxMTcwOGU3ZDNlYTBiNTFlNmM5YjJhNDU5
MzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIyMTIsOCArMjIxMiw2IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6
OlBlcnNpCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPYmo6
OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0
ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5y
YXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQpAQCAtMjIyNyw4ICsyMjI1LDYgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2wKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0yMjY1LDEwICsyMjYxLDEwIEBAIHZvaWQgVjhUZXN0T2Jq
OjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbnN0
YW5jZSwgVGVzCiAgICAgfQogfQogCi12b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8pCit2b2lkIFY4
VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIFVOVVNFRF9Q
QVJBTShwcm90byk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1
cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CisgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVt
cGxhdGUoaXNvbGF0ZSkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8g
SW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIAogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQocHJvdG8tPkNyZWF0
aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCA4MTE4ZGU3ZGFkYzNlOTc1YWZkYzUyMThhZTUxZTFm
ZjY5YjEwOWU0Li5iYzZiMDI3MTYzZGM3ZjQ1NTFkYjVkMTFkNTI0MGFmOWI2MmU5ZTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0g
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6
Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIFRlc3RPYmoqIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdE9iaio+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9t
SW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY3VzdG9tQXR0ckFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RP
YmoqLCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
dG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICBzdGF0aWMgdm9p
ZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Piwgdjg6Oklzb2xhdGUqKTsKIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcChUZXN0T2JqKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RPYmo+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA1MDM2NDM4ZDJhZjhkZTNlOWRlYjM2MGJmOTUy
ZjY3OWJhNTZiYmJiLi5mYmZlMWFhMzAyZjE2MjI3NjZmNTZkNzNiN2M4MWI2YzdhNmM5YTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xNTUs
OCArMTU1LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3IKIAogdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFJhd1Rl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAg
ICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCgpLmVuZCgpKQpAQCAtMTcwLDggKzE2OCw2IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBp
ZiAoIWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgp
OwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oCmluZGV4IDM3MWMzMTg1ZTg5N2M0NThhYTEyZTc3YTc2Y2UxYzIzMWIxMzYz
YTMuLjdhZWY0OTcxNTU4MTI2OWMzMTZkMzFkZjkyYWVlNWVhZWQ2MWM0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMzUsOCArMzUsOCBAQCBjbGFz
cyBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4
OjpJc29sYXRlKiA9IDApOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
PihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVy
T2JqZWN0SW5kZXgpKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
Jik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqLCB2ODo6SXNvbGF0ZSopIHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0K
KyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rv
cjJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDU2YmVkOTgwNTYw
MmQ1NmVjOWM1MTM3Y2JkYjU0Yjg4NDFjMGIzZGIuLjIwYjJkNTEyYTJjZjljMDQ2MTVhZGU2ZTMx
MmE1ZjRhOGFmYWQ0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yNzMsOCArMjczLDYgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWUKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBA
IC0yODgsOCArMjg2LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmEKIAogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggNDgyNWJkY2NlNTkzZWQ5M2VkYzNiODgxZGVhNDBj
OGMwYTFlM2QxYi4uZTkyZjdmYzI4YWEyYzkxZDg5ZGI1OTQ1NTc2YTZiN2MzY2VkNGE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
aApAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwog
ICAgIHN0YXRpYyBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihvYmplY3Qt
PkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5k
ZXgpKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CiAgICAg
c3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgMDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFBy
b3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmll
bmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAppbmRleCA0YzU4ZmMw
NDBhMmQxMGMyYjkwOTFmMDE5MjVlMjk2NTNmNDhkOGYwLi4wNTkxMDkwZDI0YWJjM2U2MWY3MzJk
OGIzYjcxYjFhMTQzMzA4ZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFBlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFBlckNvbnRleHREYXRhLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHY4OjpMb2NhbDx2ODo6RnVu
Y3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBw
ZXJUeXBlCiAgICAgQVNTRVJUKCFtX29iamVjdFByb3RvdHlwZS5pc0VtcHR5KCkpOwogCiAgICAg
djg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9IHR5cGUtPmdldFRlbXBsYXRlKCk7
CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9
IHR5cGUtPmdldFRlbXBsYXRlKG1fY29udGV4dC0+R2V0SXNvbGF0ZSgpKTsKICAgICAvLyBHZXR0
aW5nIHRoZSBmdW5jdGlvbiBtaWdodCBmYWlsIGlmIHdlJ3JlIHJ1bm5pbmcgb3V0IG9mIHN0YWNr
IG9yIG1lbW9yeS4KICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5Q2F0Y2g7CiAgICAgdjg6OkxvY2FsPHY4
OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBmdW5jdGlvblRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpA
QCAtMTI1LDcgKzEyNSw3IEBAIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4UGVyQ29udGV4dERh
dGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBwZXJUeXBlCiAgICAgdjg6OkxvY2Fs
PHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBmdW5jdGlvbi0+R2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgicHJvdG90eXBlIikpOwogICAgIGlmICghcHJvdG90eXBlVmFsdWUuSXNFbXB0eSgp
ICYmIHByb3RvdHlwZVZhbHVlLT5Jc09iamVjdCgpKSB7CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6
T2JqZWN0PiBwcm90b3R5cGVPYmplY3QgPSB2ODo6TG9jYWw8djg6Ok9iamVjdD46OkNhc3QocHJv
dG90eXBlVmFsdWUpOwotICAgICAgICB0eXBlLT5pbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVBy
b3BlcnRpZXMocHJvdG90eXBlT2JqZWN0KTsKKyAgICAgICAgdHlwZS0+aW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKHByb3RvdHlwZU9iamVjdCwgbV9jb250ZXh0LT5HZXRJc29s
YXRlKCkpOwogICAgICAgICBpZiAodHlwZS0+d3JhcHBlclR5cGVQcm90b3R5cGUgPT0gV3JhcHBl
clR5cGVFcnJvclByb3RvdHlwZSkKICAgICAgICAgICAgIHByb3RvdHlwZU9iamVjdC0+U2V0UHJv
dG90eXBlKG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBlSW5mby5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5kZXggOGJkNmUyOTBhZWIxY2ZlZWQ1NTJj
NDJkMzg2MWIzZWI0OTQ3YjE1Yi4uOWI2Mzg1ZDY1NjU5NDYzZGNkOWU5MDk4NmI3MjdhNzA3N2U5
YmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJ
bmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgK
QEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHR5cGVkZWYgQWN0aXZl
RE9NT2JqZWN0KiAoKlRvQWN0aXZlRE9NT2JqZWN0RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4pOwogICAgIHR5cGVkZWYgRXZlbnRUYXJnZXQqICgqVG9FdmVudFRhcmdldEZ1bmN0aW9u
KSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKICAgICB0eXBlZGVmIHZvaWQqICgqT3BhcXVlUm9v
dEZvckdDKSh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7
Ci0gICAgdHlwZWRlZiB2b2lkICgqSW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVz
RnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOworICAgIHR5cGVkZWYgdm9pZCAoKklu
c3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uKSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwogCiAgICAgZW51bSBXcmFwcGVyVHlwZVByb3RvdHlw
ZSB7CiAgICAgICAgIFdyYXBwZXJUeXBlT2JqZWN0UHJvdG90eXBlLApAQCAtODQsNyArODQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAg
IH0KICAgICAgICAgCi0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSA9IDApIHsgcmV0dXJuIGdldFRlbXBs
YXRlRnVuY3Rpb24oaXNvbGF0ZSk7IH0KKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKSB7IHJldHVybiBn
ZXRUZW1wbGF0ZUZ1bmN0aW9uKGlzb2xhdGUpOyB9CiAgICAgICAgIAogICAgICAgICB2b2lkIGRl
cmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKICAgICAgICAgewpAQCAtOTIsMTAgKzkyLDEwIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAgICBkZXJlZk9iamVjdEZ1bmN0aW9uKG9i
amVjdCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHZvaWQgaW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8pCisgICAg
ICAgIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBpc29sYXRlKQogICAgICAgICB7CiAgICAg
ICAgICAgICBpZiAoaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24p
Ci0gICAgICAgICAgICAgICAgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVu
Y3Rpb24ocHJvdG8pOworICAgICAgICAgICAgICAgIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBl
UHJvcGVydGllc0Z1bmN0aW9uKHByb3RvLCBpc29sYXRlKTsKICAgICAgICAgfQogCiAgICAgICAg
IEFjdGl2ZURPTU9iamVjdCogdG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186813</attachid>
            <date>2013-02-06 03:18:08 -0800</date>
            <delta_ts>2013-02-06 18:45:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109026-20130206201445.patch</filename>
            <type>text/plain</type>
            <size>55381</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFkNmI5YmNjNGE0MDQy
ZGZiYmU4YzFmYTdiZDk1ZTlkOTQ5MzVkZC4uNzgyMGFkM2ViMDY3NmQ4Yjg3YzZiODNkNGNkOGY3
Y2Q0MDg4MWE3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNSBAQAogMjAxMy0wMi0wNiAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBNYWtlIGFu
IElzb2xhdGUgcGFyYW1ldGVyIG1hbmRhdG9yeSBpbiBHZXRUZW1wbGF0ZSgpIGFuZCBHZXRSYXdU
ZW1wbGF0ZSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkwMjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBOb3cgaXQncyB0aW1lIHRvIGtpbGwgYW4gb3B0aW9uYWwgSXNvbGF0ZSBwYXJhbWV0ZXIuCisK
KyAgICAgICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFk
ZXIpOgorICAgICAgICAoR2VuZXJhdGVOYW1lZENvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAg
ICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFy
cmF5OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZsb2F0NjRBcnJheTo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0
NjRBcnJheS5oOgorICAgICAgICAoVjhGbG9hdDY0QXJyYXkpOgorICAgICAgICAoV2ViQ29yZTo6
VjhGbG9hdDY0QXJyYXk6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuaDoKKyAgICAgICAgKFY4VGVzdEFjdGl2ZURPTU9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpWOFRlc3RBY3RpdmVET01PYmplY3Q6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oOgorICAgICAgICAoVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Omluc3Rh
bGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6CisgICAgICAg
IChWOFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50
Q29uc3RydWN0b3I6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRSYXdUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAo
VjhUZXN0RXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRUYXJnZXQ6
Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RFeGNlcHRpb246OkdldFJhd1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4VGVzdEV4Y2VwdGlvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Omluc3RhbGxQZXJDb250ZXh0UHJvdG90
eXBlUHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFJh
d1RlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
aDoKKyAgICAgICAgKFY4VGVzdEludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJ
bnRlcmZhY2U6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0
UmF3VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmg6CisgICAgICAgIChWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXI6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9yOjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRSYXdU
ZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuaDoKKyAgICAgICAgKFY4VGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRSYXdUZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3ROb2RlOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
ICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaDoKKyAgICAgICAgKFY4VGVz
dE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6R2V0UmF3VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAg
ICAgICAoVjhUZXN0T2JqKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaDoK
KyAgICAgICAgKFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpHZXRU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVz
KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9XcmFwcGVyVHlwZUluZm8uaDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6V3JhcHBlclR5cGVJbmZvOjppbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXMpOgorCisyMDEzLTAyLTA2ICBLZW50YXJvIEhhcmEgIDxoYXJh
a2VuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbVjhdIFBhc3MgYW4gSXNvbGF0ZSB0byByZW1h
aW5pbmcgR2V0VGVtcGxhdGUoKXMKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwOTAwMQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmluZGV4IDMzNDI4NWE2NmFlMTAyYjc4NmM4MWJhMDI1
MjM3YjMyYTQ5OWI2ZGIuLjVjZDVlMDM3N2EzMGQ0ZjAzMzUxMTQyZGNkMmE0OTk3NzliNDViZTcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtCkBAIC0zNTQsOCArMzU0LDggQEAgRU5ECiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAg
IHN0YXRpYyAke25hdGl2ZVR5cGV9KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PCR7bmF0aXZlVHlw
ZX0qPihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFw
cGVyT2JqZWN0SW5kZXgpKTsKQEAgLTQ2NCwxMSArNDY0LDExIEBAIEVORAogCiAgICAgaWYgKEBl
bmFibGVkUGVyQ29udGV4dEZ1bmN0aW9ucykgewogICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9w
ZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOworICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6
SXNvbGF0ZSopOwogRU5ECiAgICAgfSBlbHNlIHsKICAgICAgICAgcHVzaChAaGVhZGVyQ29udGVu
dCwgPDxFTkQpOwotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0
YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwg
djg6Oklzb2xhdGUqKSB7IH0KIEVORAogICAgIH0KIApAQCAtMjE5NSw4ICsyMTk1LDYgQEAgRU5E
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFt
ZX1Db25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
aWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQo
KTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNhY2hl
ZFRlbXBsYXRlOwogICAgIGlmICghY2FjaGVkVGVtcGxhdGUuSXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gY2FjaGVkVGVtcGxhdGU7CkBAIC0zMTAwLDggKzMwOTgsNiBAQCBFTkQKIAogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+ICR7djhJbnRlcmZhY2VOYW1lfTo6R2V0UmF3
VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAg
ICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBl
cklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZW5kKCkpCkBAIC0zMTE1LDggKzMxMTEsNiBAQCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFjZU5hbWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6
SXNvbAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OEludGVyZmFj
ZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlz
b2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5lbmQoKSkKQEAgLTMxNjcsMTMgKzMxNjEsMTMgQEAgRU5ECiAKICAgICBp
ZiAoQGVuYWJsZWRQZXJDb250ZXh0RnVuY3Rpb25zKSB7CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCA8PEVORCk7Ci12b2lkICR7djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8pCit2b2lkICR7
djhJbnRlcmZhY2VOYW1lfTo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAg
IFVOVVNFRF9QQVJBTShwcm90byk7CiBFTkQKICAgICAgICAgIyBTZXR1cCB0aGUgZW5hYmxlLWJ5
LXNldHRpbmdzIGZ1bmN0aW9ucyBpZiB3ZSBoYXZlIHRoZW0KICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICA8PEVORCk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CisgICAgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0
VGVtcGxhdGUoaXNvbGF0ZSkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsg
Ly8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIAogICAgIFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQocHJvdG8tPkNy
ZWF0aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGYwZjNmMzY1NDM2NGZj
MWRlMTU5MzE4ZTE2NmE5ZjRmM2Q2OTViYjIuLjAyMWMxNWIxYmJkNDlhZDdlNGJjNmQxZmJjOTQ5
MzczNzc1ZmRmYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTM0LDggKzEzNCw2IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9h
dDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xNDksOCArMTQ3
LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5
OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0
ZTo6R2V0Q3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAg
IGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
aW5kZXggZWY2MWQyM2Q0MmIyYjVkYzEwZDY3YzVhNjhhZDFmNzg1OWEzMmNlYS4uZWVjYWM2M2Rj
Y2YyZjQ2YWEzNmU0MTU1YjI4MDEyYmU5NzI2ODJjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKQEAgLTM2
LDggKzM2LDggQEAgY2xhc3MgVjhGbG9hdDY0QXJyYXkgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gVjhBcnJheUJ1ZmZlclZpZXc6Omhhc0Rl
cGVuZGVudExpZmV0aW1lOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwotICAg
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
KTsKICAgICBzdGF0aWMgRmxvYXQ2NEFycmF5KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PEZsb2F0
NjRBcnJheSo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpB
cmd1bWVudHMmKTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4
RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGlu
c3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBGbG9hdDY0
QXJyYXkqLCB2ODo6SXNvbGF0ZSopIHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250
ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBz
dGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChGbG9hdDY0QXJyYXkqLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVyKFBhc3NSZWZQdHI8RmxvYXQ2NEFycmF5Piwg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmluZGV4IGEwNWRjZWZhZGQ4YjFiYmMwMWMz
N2NjZmQ2MGVmYWJkYThkNzI2MTQuLjNhYWU3OTZmNTVmOWYwODlmOTEwZmNjYWViOGFmNWJhNTU4
NmQ1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCkBAIC0xNjIsOCArMTYy
LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGEKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0g
djg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpU
ZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5k
KCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkp
CkBAIC0xNzcsOCArMTc1LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0UmF3VGVtcGxhdGUodjg6OkkKIAogdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAg
ICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVN
YXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCku
ZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKaW5kZXggZDUwZWUxYmRiZmZlMzQ0
MjE0MmE0YjVhYzdjMjY0YTE4MjYyNTZhOC4uZjc0M2YwN2QyNWIyZmMyNGI0MmY2ZWYzODBjOGY5
YmVhOTIxM2Q0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuaApAQCAtMzUsOCArMzUs
OCBAQCBjbGFzcyBWOFRlc3RBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0QWN0aXZlRE9NT2JqZWN0
KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RBY3RpdmVET01PYmplY3QqPihvYmplY3QtPkdl
dEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgp
KTsKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIG5hbWVkU2VjdXJp
dHlDaGVjayh2ODo6TG9jYWw8djg6Ok9iamVjdD4gaG9zdCwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4g
a2V5LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0YSk7CiAgICAgc3Rh
dGljIGJvb2wgaW5kZXhlZFNlY3VyaXR5Q2hlY2sodjg6OkxvY2FsPHY4OjpPYmplY3Q+IGhvc3Qs
IHVpbnQzMl90IGluZGV4LCB2ODo6QWNjZXNzVHlwZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZGF0
YSk7CiAgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4sIFRlc3RBY3RpdmVET01PYmplY3QqLCB2ODo6SXNvbGF0ZSopIHsgfQot
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4
dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUq
KSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gd3JhcChU
ZXN0QWN0aXZlRE9NT2JqZWN0Kiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RBY3RpdmVET01PYmplY3Q+LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4IDQ2ZDRhN2Q5NjA4ZGQ4YWU0YWU3YzEzMmZkMDc1
YzQ4MzBiM2UxZTIuLjNjYzMyNDM2MDZiMGEzZTg3ZGM3NjU4MmRkMDcxMDZkYjRlZWJlYzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RD
dXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcApAQCAtMTAwLDggKzEwMCw2IEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBA
IC0xMTUsOCArMTEzLDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRSYXdUZW1wbGF0ZSh2ODoKIAogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUpCi0gICAgICAg
IGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAgIFY4UGVySXNvbGF0ZURh
dGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwogICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5l
bmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggNTYxZWI1M2RkNWY0
M2IwZmVkNDQzODFlNjZhM2ZkYjViMzQzODdmYy4uMWFkNzVjYzI3ZmQyYjJjYzExNzNkOTQ5ZDg0
MmFkN2U2MzRiMGI1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTM1
LDggKzM1LDggQEAgY2xhc3MgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSop
OwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3
VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAg
IHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdEN1c3RvbU5hbWVkR2V0dGVy
Kj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBl
ck9iamVjdEluZGV4KSk7CkBAIC00Niw3ICs0Niw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG5hbWVkUHJvcGVydHlHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+LCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRl
cm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsK
ICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiwgVGVzdEN1c3RvbU5hbWVkR2V0dGVyKiwgdjg6Oklzb2xhdGUqKSB7IH0KLSAg
ICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRlKikg
eyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAoVGVz
dEN1c3RvbU5hbWVkR2V0dGVyKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRl
eHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3Jl
YXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RDdXN0b21OYW1lZEdldHRlcj4sIHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3Ry
dWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50Q29uc3RydWN0b3IuY3BwCmluZGV4IGQ3MzhlOTVkYWUwY2ZhZWQwNDJkMGY2ZDQ1Zjlj
YzI0OTgyYjUwYzUuLjA5NjZmNGIyNzE1YzEyZmVlZGZkZWI1ZjQxMmVhNDA4MzExNDViMzQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEzMiw4ICsxMzIsNiBAQCBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVz
dEV2ZW50Q29uc3RydWN0b3JUZW1wbAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklz
b2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZv
KTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0x
NDcsOCArMTQ1LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKHY4OjoKIAogdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNv
bGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCku
ZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgp
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggN2I0MjRlYzM3MzczNWQ2ZmFl
YjY4MzZlMGMxN2MxNGRiMDA1NTlkOS4uOGRkYWEwYjllYTllNWUxMmQ1ODYxZWEyMDc2YzEyMDA0
YjhkZGIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zNiw4ICszNiw4
IEBAIGNsYXNzIFY4VGVzdEV2ZW50Q29uc3RydWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0RXZlbnRDb25zdHJ1Y3Rv
ciogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewogICAgICAg
ICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUZXN0RXZlbnRDb25zdHJ1Y3Rvcio+KG9iamVjdC0+
R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRl
eCkpOwpAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBjb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmKTsKICAgICBz
dGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0RXZlbnRDb25zdHJ1Y3RvciosIHY4
OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQorICAgIHN0YXRpYyB2b2lk
IGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmllbmQgdjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudENvbnN0cnVjdG9yKiwgdjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RFdmVudENvbnN0cnVj
dG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcAppbmRleCAwMjg1YjdjMjc3MzM3MTJlYWE2MWU0
N2M3NTE2N2Q1MjQxMjNiMDQ0Li45YWJiYjkyZWUzMDA5OWVlMTlmYmQzZGVhYjJiMmNiZWE3ZDVi
NWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTE2MSw4ICsxNjEsNiBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2
ZW50VGFyZ2V0VGVtcGxhdGUodgogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
KQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpH
ZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAg
aWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQpAQCAtMTc2LDggKzE3
NCw2IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRh
cmdldDo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudFRhcmdldDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklz
b2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
ICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCmluZGV4IDAyZTlmNWEzOTUwNTdhOTk2NjViNmU4YjVhN2MwMGVmYmMyMTU0YjAu
LjI2YmJkNDg0M2E0YmU2MmQzYjc1NTYyNDU4NGUyZWZjOTQ3ODYzZTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdEV2ZW50VGFyZ2V0IHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNl
OwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwotICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0g
MCk7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRS
YXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMg
VGVzdEV2ZW50VGFyZ2V0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkK
ICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RFdmVudFRhcmdldCo+
KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJP
YmplY3RJbmRleCkpOwpAQCAtNDksNyArNDksNyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0
IGludCBldmVudExpc3RlbmVyQ2FjaGVJbmRleCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZp
ZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDE7CiAgICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RF
dmVudFRhcmdldCosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmll
bmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RFdmVudFRhcmdldCosIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRp
YyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXZl
bnRUYXJnZXQ+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKaW5kZXggZmI1NDZlOGFjMmUxNDAxMDYyODBj
NGUzMGYxYjZjNGI3NDEwYjNlNC4uMWEyMjhjMzMxNWE0YTk4NTIyMjQ0ODFhOWVkODcwZmU5Nzdl
MmQyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKQEAgLTkxLDggKzkxLDYgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRp
b25UZW1wbGF0ZSh2ODoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdEV4Y2VwdGlvbjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0g
ICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJl
bnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3Ig
cmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xMDYsOCArMTA0LDYgQEAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0
UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEV4Y2VwdGlvbjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6Okdl
dEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKaW5k
ZXggYmMxNTRkMzM4OWQ4NDE2Y2Y5MmYyMTdmZTk4YzQwY2Q1NjYzOTcxNi4uNTUxNzgyZjA3MjFi
Nzk2OTIyYzI2ZDUxOTU4NDc2NGMwYjMwZTJmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaApAQCAtMzUs
OCArMzUsOCBAQCBjbGFzcyBWOFRlc3RFeGNlcHRpb24gewogcHVibGljOgogICAgIHN0YXRpYyBj
b25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wg
SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUo
djg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyBUZXN0RXhjZXB0aW9uKiB0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVy
biByZWludGVycHJldF9jYXN0PFRlc3RFeGNlcHRpb24qPihvYmplY3QtPkdldEFsaWduZWRQb2lu
dGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5kZXgpKTsKQEAgLTQ1LDcg
KzQ1LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwcGVyVHlwZUluZm8gaW5mbzsKICAgICBz
dGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRl
cm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
cGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0RXhjZXB0aW9uKiwgdjg6Oklzb2xh
dGUqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3Bl
cnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFs
bFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4
OjpJc29sYXRlKikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IHdyYXAoVGVzdEV4Y2VwdGlvbiosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25D
b250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0RXhjZXB0aW9uPiwgdjg6OkhhbmRsZTx2ODo6
T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
Y3BwCmluZGV4IDY0YTE3YWZjNTYzYWE5MDgzYmU3MmVkYmFlMjlhMTkxYThlNWYyNDYuLjZmMjQ2
MTlhYjgyYWY3ODVmMzE1MzczZGEyNmJiNGM4ZWUyMzdhZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2Uu
Y3BwCkBAIC0zMTYsOCArMzE2LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKIAogdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAg
ICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxh
dGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRl
TWFwKCkuZW5kKCkpCkBAIC0zMzEsOCArMzI5LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUK
IAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEludGVyZmFjZTo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQot
ICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVt
cGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRl
TWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXggOWUxODUwOTQwNjM2YjQwNTg2MmUz
N2IyYWEzNWIyODE3ZDFkZTBhNy4uZDI3ZmUzNjNiMGM3MjZmMTBjOWMxZTIyNmM4NGM2ZjUwODhi
MjJmYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBWOFRlc3RJ
bnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExp
ZmV0aW1lID0gdHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7
CiAgICAgc3RhdGljIFRlc3RJbnRlcmZhY2UqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdElu
dGVyZmFjZSo+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZCh2OERP
TVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuYW1lZFByb3BlcnR5U2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4sIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8m
KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3VudCA9IHY4RGVmYXVsdFdy
YXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJD
b250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBUZXN0SW50ZXJmYWNlKiwg
djg6Oklzb2xhdGUqKSB7IH0KLSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3Rv
dHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZv
aWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD4sIHY4OjpJc29sYXRlKikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IHdyYXAoVGVzdEludGVyZmFjZSosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0SW50ZXJmYWNlPiwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFR
dWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKaW5kZXggMDBiYjBhOTk5ZjA2
MzJkMzY4ZDY4MDVhNGQ2MTNiMmRlMjdlYjBiMC4uYmY1ZjRmNDA5ZDVhNmIwZjkyZTEzZDliMTI2
YWQ5ZDdmMGZhZWU2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyLmNwcApAQCAtMTAwLDggKzEwMCw2IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lCiAKIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAo
IWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwog
ICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKQEAgLTExNSw4ICsxMTMsNiBAQCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6R2V0UmF3VGVtcGxhdAogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlz
b2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xh
dGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAg
ICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaAppbmRleCAwNGE5NmJiOWIxMTU2MmRkYWEyMTYz
N2MwZGVhZjAwZWRmOGM5MjMyLi5lNTVjZWFlOGJhNmRhZDAwMTQ1MTkyZWNjNjY0N2Q2ZjRkMWM1
MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgKQEAgLTM1
LDggKzM1LDggQEAgY2xhc3MgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOwor
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIFRlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9i
amVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyKj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZp
ZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgV3JhcHBlclR5cGVJbmZvIGluZm87CiAgICAgc3RhdGljIGNvbnN0IGludCBp
bnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsg
MDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIqLCB2ODo6SXNvbGF0ZSop
IHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
cyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0KKyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklz
b2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
d3JhcChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciosIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNyZWF0ZVdyYXBwZXIoUGFzc1JlZlB0cjxUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lcj4sIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0
ZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IGQwM2NmNDVkZmQ5
NDA1YTgyYmQ1NzgyZDEyM2QzNWE3N2IyZTFmNDcuLmJjOGFmZDZjMGExMGY0NzJjNDZiNDFkMzBl
Y2JiMGU3Y2JhNzUzMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAg
LTEwMCw4ICsxMDAsNiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4VGVzdE5hbWVk
Q29uc3RydWN0b3JDb25zdHJ1Y3RvckNhbGxiYWNrKGNvbnN0IHY4OgogCiB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3RvckNvbnN0cnVjdG9y
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoIWlzb2xhdGUp
Ci0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpOwogICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY2FjaGVkVGVtcGxhdGU7CiAg
ICAgaWYgKCFjYWNoZWRUZW1wbGF0ZS5Jc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjYWNoZWRU
ZW1wbGF0ZTsKQEAgLTEzNiw4ICsxMzQsNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbAogCiB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
cjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xNTEsOCArMTQ3LDYgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFJhd1Rl
bXBsYXRlKHY4OjoKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE5hbWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewot
ICAgIGlmICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJy
ZW50KCk7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9y
IHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3Vs
dCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmgKaW5kZXggZTY4NjgyNThkNDE2YzJjOGMwYTVjMjljYTRmODFjN2FiZGU1ZmFiMC4uNmQ1
NjYzNDY1NjRkYWI0YzgwOWI2NTE0NTM4MGMzZDMxMjcyZmViNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3Iu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5oCkBAIC00MSw4ICs0MSw4IEBAIGNsYXNzIFY4VGVzdE5hbWVkQ29uc3Ry
dWN0b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gdHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiA9IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAg
ICAgc3RhdGljIFRlc3ROYW1lZENvbnN0cnVjdG9yKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRl
c3ROYW1lZENvbnN0cnVjdG9yKj4ob2JqZWN0LT5HZXRBbGlnbmVkUG9pbnRlckZyb21JbnRlcm5h
bEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7CkBAIC01Miw3ICs1Miw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgQWN0aXZlRE9NT2JqZWN0KiB0b0FjdGl2ZURPTU9iamVjdCh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+KTsKICAgICBzdGF0aWMgY29uc3QgaW50IGludGVybmFsRmllbGRDb3Vu
dCA9IHY4RGVmYXVsdFdyYXBwZXJJbnRlcm5hbEZpZWxkQ291bnQgKyAwOwogICAgIHN0YXRpYyB2
b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCBU
ZXN0TmFtZWRDb25zdHJ1Y3RvciosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4pIHsgfQorICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVy
dGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToK
ICAgICBmcmllbmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3ROYW1lZENvbnN0cnVj
dG9yKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNvbnRleHQsIHY4OjpJc29sYXRl
Kik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gY3JlYXRlV3JhcHBlcihQYXNz
UmVmUHRyPFRlc3ROYW1lZENvbnN0cnVjdG9yPiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVh
dGlvbkNvbnRleHQsIHY4OjpJc29sYXRlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZDNjNmI0MGEzMDU5
Y2RiMWFjNWQyOTdlZDkxZGYzZWY5Yjk4ZmE1OS4uNDAyYmYxNmNiNjYxYTcyMTlhYmQzYjU2Njhl
YTNlY2Y1OWIxMGU3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtOTgsOCArOTgsNiBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1w
bGF0ZSh2ODo6UGVycwogCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhU
ZXN0Tm9kZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYg
KCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0xMTMsOCArMTExLDYgQEAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE5vZGU6OkdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKiBpc28KIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlm
ICghaXNvbGF0ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7CiAgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKaW5kZXggNzgzNWUxMDZhZTBlZGQ0YTVj
OTYzZWJlOTUzMGQ5ZTRhZDMxMTIxYS4uY2FhNDI5MDJhYjkwZGRjNzdiOTZiZTU3MTA2YTYwNWI2
ZGFmNzA4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdE5vZGUgewog
cHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1
ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9
IDApOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0
UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGlj
IFRlc3ROb2RlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7
CiAgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFRlc3ROb2RlKj4ob2JqZWN0LT5HZXRB
bGlnbmVkUG9pbnRlckZyb21JbnRlcm5hbEZpZWxkKHY4RE9NV3JhcHBlck9iamVjdEluZGV4KSk7
CkBAIC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IGNvbnN0cnVjdG9yQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYpOwogICAgIHN0YXRp
YyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0gdjhEZWZhdWx0V3JhcHBlckludGVybmFs
RmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0
aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3ROb2RlKiwgdjg6Oklzb2xhdGUqKSB7IH0K
LSAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0PikgeyB9CisgICAgc3RhdGljIHZvaWQgaW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIHY4OjpJc29sYXRl
KikgeyB9CiBwcml2YXRlOgogICAgIGZyaWVuZCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXAo
VGVzdE5vZGUqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdE5vZGU+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29u
dGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggYzExMTA4NDBmYWQwODFkMmYxZDA2
NjFmMDVlZTUyZGQ1MDM3MzExYS4uODhjOTFkNjQ2YjQxMTcwOGU3ZDNlYTBiNTFlNmM5YjJhNDU5
MzYyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE9iai5jcHAKQEAgLTIyMTIsOCArMjIxMiw2IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6
OlBlcnNpCiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPYmo6
OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0
ZSkKLSAgICAgICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAg
ICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEt
PnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5y
YXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQpAQCAtMjIyNyw4ICsyMjI1LDYgQEAgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0UmF3VGVtcGxhdGUodjg6Oklz
b2xhdGUqIGlzb2wKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCkBAIC0yMjY1LDEwICsyMjYxLDEwIEBAIHZvaWQgVjhUZXN0T2Jq
OjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBpbnN0
YW5jZSwgVGVzCiAgICAgfQogfQogCi12b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQ
cm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8pCit2b2lkIFY4
VGVzdE9iajo6aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIFVOVVNFRF9Q
QVJBTShwcm90byk7Ci0gICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1
cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CisgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVt
cGxhdGUoaXNvbGF0ZSkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8g
SW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KIAogICAgIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQqIGNvbnRleHQgPSB0b1NjcmlwdEV4ZWN1dGlvbkNvbnRleHQocHJvdG8tPkNyZWF0
aW9uQ29udGV4dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPYmouaAppbmRleCA4MTE4ZGU3ZGFkYzNlOTc1YWZkYzUyMThhZTUxZTFm
ZjY5YjEwOWU0Li5iYzZiMDI3MTYzZGM3ZjQ1NTFkYjVkMTFkNTI0MGFmOWI2MmU5ZTVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9i
ai5oCkBAIC0zNSw4ICszNSw4IEBAIGNsYXNzIFY4VGVzdE9iaiB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAgICBzdGF0aWMg
Ym9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0g
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogPSAwKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiA9IDApOworICAgIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6
Oklzb2xhdGUqKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIFRlc3RPYmoqIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKICAgICAgICAgcmV0dXJu
IHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdE9iaio+KG9iamVjdC0+R2V0QWxpZ25lZFBvaW50ZXJGcm9t
SW50ZXJuYWxGaWVsZCh2OERPTVdyYXBwZXJPYmplY3RJbmRleCkpOwpAQCAtNTEsNyArNTEsNyBA
QCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgY3VzdG9tQXR0ckFjY2Vzc29yU2V0dGVyKHY4OjpM
b2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYpOwogICAgIHN0YXRpYyBjb25zdCBpbnQgaW50ZXJuYWxGaWVsZENvdW50ID0g
djhEZWZhdWx0V3JhcHBlckludGVybmFsRmllbGRDb3VudCArIDA7CiAgICAgc3RhdGljIHZvaWQg
aW5zdGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4sIFRlc3RP
YmoqLCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJv
dG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKKyAgICBzdGF0aWMgdm9p
ZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0Piwgdjg6Oklzb2xhdGUqKTsKIHByaXZhdGU6CiAgICAgZnJpZW5kIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gd3JhcChUZXN0T2JqKiwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvbkNv
bnRleHQsIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
Y3JlYXRlV3JhcHBlcihQYXNzUmVmUHRyPFRlc3RPYmo+LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklzb2xhdGUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVy
bG9hZGVkQ29uc3RydWN0b3JzLmNwcAppbmRleCA1MDM2NDM4ZDJhZjhkZTNlOWRlYjM2MGJmOTUy
ZjY3OWJhNTZiYmJiLi5mYmZlMWFhMzAyZjE2MjI3NjZmNTZkNzNiN2M4MWI2YzdhNmM5YTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuY3BwCkBAIC0xNTUs
OCArMTU1LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3IKIAogdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OkdldFJhd1Rl
bXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIGlmICghaXNvbGF0ZSkKLSAgICAg
ICAgaXNvbGF0ZSA9IHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCk7CiAgICAgVjhQZXJJc29sYXRl
RGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CiAgICAgVjhQZXJJ
c29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBs
YXRlTWFwKCkuZmluZCgmaW5mbyk7CiAgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0
ZU1hcCgpLmVuZCgpKQpAQCAtMTcwLDggKzE2OCw2IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpHZXRSYXdUZW1wbGF0
CiAKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBp
ZiAoIWlzb2xhdGUpCi0gICAgICAgIGlzb2xhdGUgPSB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgp
OwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpOwogICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1
bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwogICAgIGlmIChyZXN1bHQgIT0g
ZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5oCmluZGV4IDM3MWMzMTg1ZTg5N2M0NThhYTEyZTc3YTc2Y2UxYzIzMWIxMzYz
YTMuLjdhZWY0OTcxNTU4MTI2OWMzMTZkMzFkZjkyYWVlNWVhZWQ2MWM0YmQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaApAQCAtMzUsOCArMzUsOCBAQCBjbGFz
cyBWOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29u
c3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4
OjpJc29sYXRlKiA9IDApOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7CisgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0
ZSopOworICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0
VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgVGVzdE92ZXJsb2FkZWRDb25zdHJ1
Y3RvcnMqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMq
PihvYmplY3QtPkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVy
T2JqZWN0SW5kZXgpKTsKQEAgLTQ2LDcgKzQ2LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
Jik7CiAgICAgc3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRX
cmFwcGVySW50ZXJuYWxGaWVsZENvdW50ICsgMDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVy
Q29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdE92ZXJsb2FkZWRD
b25zdHJ1Y3RvcnMqLCB2ODo6SXNvbGF0ZSopIHsgfQotICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQ
ZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KSB7IH0K
KyAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0Piwgdjg6Oklzb2xhdGUqKSB7IH0KIHByaXZhdGU6CiAgICAgc3Rh
dGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjFDYWxsYmFjayhjb25zdCB2ODo6
QXJndW1lbnRzJik7CiAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3Rv
cjJDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IDU2YmVkOTgwNTYw
MmQ1NmVjOWM1MTM3Y2JkYjU0Yjg4NDFjMGIzZGIuLjIwYjJkNTEyYTJjZjljMDQ2MTVhZGU2ZTMx
MmE1ZjRhOGFmYWQ0Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0yNzMsOCArMjczLDYgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWUKIAogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29sYXRlKQotICAgICAgICBpc29sYXRlID0gdjg6
Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQ
ZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1w
bGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZp
bmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCkBA
IC0yODgsOCArMjg2LDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0UmEKIAogdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgaWYgKCFpc29s
YXRlKQotICAgICAgICBpc29sYXRlID0gdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKTsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
ICAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKICAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggNDgyNWJkY2NlNTkzZWQ5M2VkYzNiODgxZGVhNDBj
OGMwYTFlM2QxYi4uZTkyZjdmYzI4YWEyYzkxZDg5ZGI1OTQ1NTc2YTZiN2MzY2VkNGE1YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
aApAQCAtMzcsOCArMzcsOCBAQCBjbGFzcyBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0
aW1lID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqID0gMCk7Ci0gICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogPSAwKTsKKyAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CisgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwog
ICAgIHN0YXRpYyBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqPihvYmplY3Qt
PkdldEFsaWduZWRQb2ludGVyRnJvbUludGVybmFsRmllbGQodjhET01XcmFwcGVyT2JqZWN0SW5k
ZXgpKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gY29uc3RydWN0b3JDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJik7CiAgICAg
c3RhdGljIGNvbnN0IGludCBpbnRlcm5hbEZpZWxkQ291bnQgPSB2OERlZmF1bHRXcmFwcGVySW50
ZXJuYWxGaWVsZENvdW50ICsgMDsKICAgICBzdGF0aWMgdm9pZCBpbnN0YWxsUGVyQ29udGV4dFBy
b3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZSosIHY4OjpJc29sYXRlKikgeyB9Ci0gICAgc3RhdGljIHZvaWQgaW5zdGFsbFBl
ckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pIHsgfQor
ICAgIHN0YXRpYyB2b2lkIGluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopIHsgfQogcHJpdmF0ZToKICAgICBmcmll
bmQgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwKFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UqLCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNyZWF0aW9uQ29udGV4dCwgdjg6Oklz
b2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGVXcmFwcGVy
KFBhc3NSZWZQdHI8VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZT4sIHY4OjpIYW5k
bGU8djg6Ok9iamVjdD4gY3JlYXRpb25Db250ZXh0LCB2ODo6SXNvbGF0ZSopOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggZDVhZDk0MWJjM2U2NTMy
MjRhYTQ5Y2YwMWZlYTVmYTY1MGUyMGRiYy4uYzdjNzgyZjA3YmUyMThkMTg3ZGM4NGRkNjcyZTc5
MTk4ZTAzODRkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01X
cmFwcGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIu
Y3BwCkBAIC04NCw3ICs4NCw3IEBAIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBWOERPTVdyYXBwZXI6
OmNyZWF0ZVdyYXBwZXIodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBjcmVhdGlvCiAgICAgVjhXcmFw
cGVySW5zdGFudGlhdGlvblNjb3BlIHNjb3BlKGNyZWF0aW9uQ29udGV4dCk7CiAKICAgICBWOFBl
ckNvbnRleHREYXRhKiBwZXJDb250ZXh0RGF0YSA9IFY4UGVyQ29udGV4dERhdGE6OmZyb20oc2Nv
cGUuY29udGV4dCgpKTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciA9IHBlckNv
bnRleHREYXRhID8gcGVyQ29udGV4dERhdGEtPmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUodHlwZSkg
OiBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRUZW1wbGF0ZSgpLT5H
ZXRGdW5jdGlvbigpKTsKKyAgICB2ODo6TG9jYWw8djg6Ok9iamVjdD4gd3JhcHBlciA9IHBlckNv
bnRleHREYXRhID8gcGVyQ29udGV4dERhdGEtPmNyZWF0ZVdyYXBwZXJGcm9tQ2FjaGUodHlwZSkg
OiBWOE9iamVjdENvbnN0cnVjdG9yOjpuZXdJbnN0YW5jZSh0eXBlLT5nZXRUZW1wbGF0ZShpc29s
YXRlKS0+R2V0RnVuY3Rpb24oKSk7CiAKICAgICBpZiAodHlwZSA9PSAmVjhIVE1MRG9jdW1lbnQ6
OmluZm8gJiYgIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICB3cmFwcGVyID0gVjhIVE1MRG9j
dW1lbnQ6OndyYXBJblNoYWRvd09iamVjdCh3cmFwcGVyLCBzdGF0aWNfY2FzdDxOb2RlKj4oaW1w
bCksIGlzb2xhdGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQ
ZXJDb250ZXh0RGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRl
eHREYXRhLmNwcAppbmRleCA0YzU4ZmMwNDBhMmQxMGMyYjkwOTFmMDE5MjVlMjk2NTNmNDhkOGYw
Li4wNTkxMDkwZDI0YWJjM2U2MWY3MzJkOGIzYjcxYjFhMTQzMzA4ZWM4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcApAQCAtMTE0LDcgKzEx
NCw3IEBAIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVj
dG9yRm9yVHlwZVNsb3dDYXNlKFdyYXBwZXJUeXBlCiAgICAgQVNTRVJUKCFtX29iamVjdFByb3Rv
dHlwZS5pc0VtcHR5KCkpOwogCiAgICAgdjg6OkNvbnRleHQ6OlNjb3BlIHNjb3BlKG1fY29udGV4
dCk7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25UZW1wbGF0
ZSA9IHR5cGUtPmdldFRlbXBsYXRlKCk7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gZnVuY3Rpb25UZW1wbGF0ZSA9IHR5cGUtPmdldFRlbXBsYXRlKG1fY29udGV4dC0+R2V0
SXNvbGF0ZSgpKTsKICAgICAvLyBHZXR0aW5nIHRoZSBmdW5jdGlvbiBtaWdodCBmYWlsIGlmIHdl
J3JlIHJ1bm5pbmcgb3V0IG9mIHN0YWNrIG9yIG1lbW9yeS4KICAgICB2ODo6VHJ5Q2F0Y2ggdHJ5
Q2F0Y2g7CiAgICAgdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4gZnVuY3Rpb24gPSBmdW5jdGlvblRl
bXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTI1LDcgKzEyNSw3IEBAIHY4OjpMb2NhbDx2ODo6
RnVuY3Rpb24+IFY4UGVyQ29udGV4dERhdGE6OmNvbnN0cnVjdG9yRm9yVHlwZVNsb3dDYXNlKFdy
YXBwZXJUeXBlCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gcHJvdG90eXBlVmFsdWUgPSBmdW5j
dGlvbi0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgicHJvdG90eXBlIikpOwogICAgIGlmICgh
cHJvdG90eXBlVmFsdWUuSXNFbXB0eSgpICYmIHByb3RvdHlwZVZhbHVlLT5Jc09iamVjdCgpKSB7
CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0PiBwcm90b3R5cGVPYmplY3QgPSB2ODo6TG9j
YWw8djg6Ok9iamVjdD46OkNhc3QocHJvdG90eXBlVmFsdWUpOwotICAgICAgICB0eXBlLT5pbnN0
YWxsUGVyQ29udGV4dFByb3RvdHlwZVByb3BlcnRpZXMocHJvdG90eXBlT2JqZWN0KTsKKyAgICAg
ICAgdHlwZS0+aW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHByb3RvdHlwZU9i
amVjdCwgbV9jb250ZXh0LT5HZXRJc29sYXRlKCkpOwogICAgICAgICBpZiAodHlwZS0+d3JhcHBl
clR5cGVQcm90b3R5cGUgPT0gV3JhcHBlclR5cGVFcnJvclByb3RvdHlwZSkKICAgICAgICAgICAg
IHByb3RvdHlwZU9iamVjdC0+U2V0UHJvdG90eXBlKG1fZXJyb3JQcm90b3R5cGUuZ2V0KCkpOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dyYXBwZXJUeXBl
SW5mby5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKaW5k
ZXggOGJkNmUyOTBhZWIxY2ZlZWQ1NTJjNDJkMzg2MWIzZWI0OTQ3YjE1Yi4uOWI2Mzg1ZDY1NjU5
NDYzZGNkOWU5MDk4NmI3MjdhNzA3N2U5YmI2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvV3JhcHBlclR5cGVJbmZvLmgKQEAgLTUxLDcgKzUxLDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgIHR5cGVkZWYgQWN0aXZlRE9NT2JqZWN0KiAoKlRvQWN0aXZlRE9NT2JqZWN0RnVu
Y3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4pOwogICAgIHR5cGVkZWYgRXZlbnRUYXJnZXQq
ICgqVG9FdmVudFRhcmdldEZ1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KTsKICAgICB0
eXBlZGVmIHZvaWQqICgqT3BhcXVlUm9vdEZvckdDKSh2b2lkKiwgdjg6OlBlcnNpc3RlbnQ8djg6
Ok9iamVjdD4sIHY4OjpJc29sYXRlKik7Ci0gICAgdHlwZWRlZiB2b2lkICgqSW5zdGFsbFBlckNv
bnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24pKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4p
OworICAgIHR5cGVkZWYgdm9pZCAoKkluc3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGll
c0Z1bmN0aW9uKSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+LCB2ODo6SXNvbGF0ZSopOwogCiAgICAg
ZW51bSBXcmFwcGVyVHlwZVByb3RvdHlwZSB7CiAgICAgICAgIFdyYXBwZXJUeXBlT2JqZWN0UHJv
dG90eXBlLApAQCAtODQsNyArODQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSA9IDApIHsgcmV0dXJuIGdldFRlbXBsYXRlRnVuY3Rpb24oaXNvbGF0ZSk7IH0KKyAgICAgICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiBpc29sYXRlKSB7IHJldHVybiBnZXRUZW1wbGF0ZUZ1bmN0aW9uKGlzb2xhdGUpOyB9CiAg
ICAgICAgIAogICAgICAgICB2b2lkIGRlcmVmT2JqZWN0KHZvaWQqIG9iamVjdCkKICAgICAgICAg
ewpAQCAtOTIsMTAgKzkyLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgICAg
ICBkZXJlZk9iamVjdEZ1bmN0aW9uKG9iamVjdCk7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAg
ICAgIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8
djg6Ok9iamVjdD4gcHJvdG8pCisgICAgICAgIHZvaWQgaW5zdGFsbFBlckNvbnRleHRQcm90b3R5
cGVQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gcHJvdG8sIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoaW5zdGFsbFBlckNvbnRleHRQcm90
b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgaW5zdGFsbFBlckNvbnRl
eHRQcm90b3R5cGVQcm9wZXJ0aWVzRnVuY3Rpb24ocHJvdG8pOworICAgICAgICAgICAgICAgIGlu
c3RhbGxQZXJDb250ZXh0UHJvdG90eXBlUHJvcGVydGllc0Z1bmN0aW9uKHByb3RvLCBpc29sYXRl
KTsKICAgICAgICAgfQogCiAgICAgICAgIEFjdGl2ZURPTU9iamVjdCogdG9BY3RpdmVET01PYmpl
Y3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>