<?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>108467</bug_id>
          
          <creation_ts>2013-01-31 05:21:13 -0800</creation_ts>
          <short_desc>[chromium] public methods and objects of TestRunner that are only used by the WebTestProxy should be private</short_desc>
          <delta_ts>2013-02-04 15:25:35 -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>Tools / Tests</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>
          
          <blocked>91308</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>jochen</reporter>
          <assigned_to>jochen</assigned_to>
          <cc>abarth</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821421</commentid>
    <comment_count>0</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-01-31 05:21:13 -0800</bug_when>
    <thetext>That includes WebEventSender, WebAccessibilityController, WebTestPlugin, and a bunch of WebTestRunner methods</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824240</commentid>
    <comment_count>1</comment_count>
      <attachid>186347</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-04 04:28:52 -0800</bug_when>
    <thetext>Created attachment 186347
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824243</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 04:30:42 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824287</commentid>
    <comment_count>3</comment_count>
      <attachid>186359</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-04 05:48:41 -0800</bug_when>
    <thetext>Created attachment 186359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824451</commentid>
    <comment_count>4</comment_count>
      <attachid>186359</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2013-02-04 09:34:23 -0800</bug_when>
    <thetext>Comment on attachment 186359
Patch

Usually we prefer one patch per bug.  (These patches are great btw!)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824574</commentid>
    <comment_count>5</comment_count>
      <attachid>186347</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 11:00:37 -0800</bug_when>
    <thetext>Comment on attachment 186347
Patch

Clearing flags on attachment: 186347

Committed r141785: &lt;http://trac.webkit.org/changeset/141785&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824581</commentid>
    <comment_count>6</comment_count>
      <attachid>186359</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 11:04:46 -0800</bug_when>
    <thetext>Comment on attachment 186359
Patch

Rejecting attachment 186359 from commit-queue.

Failed to run &quot;[&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=gce-cq-04&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 186359, &apos;--port=chromium-xvfb&apos;]&quot; exit_code: 2 cwd: /mnt/git/webkit-commit-queue

Last 500 characters of output:
ebTestProxy.cpp.rej
patching file Tools/DumpRenderTree/chromium/TestRunner/src/WebTestRunner.cpp
rm &apos;Tools/DumpRenderTree/chromium/TestRunner/src/WebTestRunner.cpp&apos;
patching file Tools/DumpRenderTree/chromium/TestShell.h
patching file Tools/DumpRenderTree/chromium/WebViewHost.cpp
patching file Tools/DumpRenderTree/chromium/WebViewHost.h

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, &apos;Adam Barth&apos;]&quot; exit_code: 1 cwd: /mnt/git/webkit-commit-queue

Full output: http://queues.webkit.org/results/16378208</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824754</commentid>
    <comment_count>7</comment_count>
      <attachid>186459</attachid>
    <who name="">jochen</who>
    <bug_when>2013-02-04 14:15:25 -0800</bug_when>
    <thetext>Created attachment 186459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824822</commentid>
    <comment_count>8</comment_count>
      <attachid>186459</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 15:25:31 -0800</bug_when>
    <thetext>Comment on attachment 186459
Patch

Clearing flags on attachment: 186459

Committed r141823: &lt;http://trac.webkit.org/changeset/141823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824823</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-04 15:25:35 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186347</attachid>
            <date>2013-02-04 04:28:52 -0800</date>
            <delta_ts>2013-02-04 11:00:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108467-20130204132530.patch</filename>
            <type>text/plain</type>
            <size>65018</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzQxZDgzYWRkNDBkNzRhZGJlYWYwODMwMTI1Mzg0YjI4
ZTkxMWJlYS4uMjUzN2ZhMDFjNTMyN2RjYmU3NzgwMjY4YTYxZjhkYmM3NTdhNjcxYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDEzLTAyLTA0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gcmVtb3ZlIFdlYlRlc3RQbHVnaW4gZnJvbSB0aGUgcHVibGlj
IFRlc3RSdW5uZXIgQVBJCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDg0NjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFBsdWdpbi5o
OiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RQcm94eS5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYlRl
c3RQcm94eUJhc2UpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5OjpjcmVh
dGVQbHVnaW4pOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RQbHVnaW4uY3BwOiBSZW5hbWVkIGZyb20gVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFBsdWdpbi5jcHAuCisgICAgICAgIChXZWJUZXN0
UnVubmVyOjpUZXN0UGx1Z2luOjpUZXN0UGx1Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIp
OgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6flRlc3RQbHVnaW4pOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6aW5pdGlhbGl6ZSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpkZXN0cm95KToKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXI6OlRlc3RQbHVnaW46OnVwZGF0ZUdlb21ldHJ5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OlRlc3RQbHVnaW46OnBhcnNlUHJpbWl0aXZlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRl
c3RQbHVnaW46OnBhcnNlQ29sb3IpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdp
bjo6cGFyc2VPcGFjaXR5KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OnBh
cnNlQm9vbGVhbik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjppbml0U2Nl
bmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZHJhd1NjZW5lKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmRlc3Ryb3lTY2VuZSk6CisgICAgICAg
IChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjppbml0UHJvZ3JhbSk6CisgICAgICAgIChXZWJU
ZXN0UnVubmVyOjpUZXN0UGx1Z2luOjppbml0UHJpbWl0aXZlKToKKyAgICAgICAgKFdlYlRlc3RS
dW5uZXI6OlRlc3RQbHVnaW46OmRyYXdQcmltaXRpdmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cjo6VGVzdFBsdWdpbjo6bG9hZFNoYWRlcik6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0
UGx1Z2luOjpsb2FkUHJvZ3JhbSk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2lu
OjpoYW5kbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46
OmhhbmRsZURyYWdTdGF0dXNVcGRhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBs
dWdpbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46Om1pbWVU
eXBlKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXN0UGx1Z2luLmg6IEFkZGVkLgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgIChU
ZXN0UGx1Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OnNjcmlwdGFi
bGVPYmplY3QpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6Y2FuUHJvY2Vz
c0RyYWcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6cGFpbnQpOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6dXBkYXRlRm9jdXMpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6dXBkYXRlVmlzaWJpbGl0eSk6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjphY2NlcHRzSW5wdXRFdmVudHMpOgorICAgICAgICAo
V2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAg
KFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmRpZFJlY2VpdmVEYXRhKToKKyAgICAgICAgKFdl
YlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2Vi
VGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGlkRmFpbExvYWRpbmcpOgorICAgICAgICAoV2ViVGVz
dFJ1bm5lcjo6VGVzdFBsdWdpbjo6ZGlkRmluaXNoTG9hZGluZ0ZyYW1lUmVxdWVzdCk6CisgICAg
ICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjpkaWRGYWlsTG9hZGluZ0ZyYW1lUmVxdWVz
dCk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0UGx1Z2luOjppc1BsYWNlaG9sZGVyKToK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OnByZXBhcmVUZXh0dXJlKToKKyAg
ICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RQbHVnaW46OmNvbnRleHQpOgorICAgICAgICAoU2Nl
bmUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdFBsdWdpbjo6U2NlbmU6OlNjZW5lKToK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0
UHJveHkuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdFByb3h5QmFzZTo6Y3Jl
YXRlUGx1Z2luKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpj
cmVhdGVQbHVnaW4pOgorCiAyMDEzLTAyLTAzICBBbGFuIEN1dHRlciAgPGFsYW5jdXR0ZXJAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFBhdGNoTG9ncyBhcmUgbm90IGdldHRpbmcgY3JlYXRlZCBv
biBRdWV1ZVN0YXR1c1NlcnZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVt
cFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5
cGkKaW5kZXggMTM5YjhlYWZkOTA2NmExZDEyODAxZjdhNThmMzJjM2RkMDNjMWZhMC4uMTNhMDg4
NTQ2NjA3YWVkNzI0YWFhZDc0MjdlYjVmNmU1YjEyZTEzNyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC01OCw3ICs1OCw2IEBACiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaCcsCiAgICAgICAgICAgICAn
Y2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oJywKICAgICAgICAgICAgICdjaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oJywKLSAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UGx1Z2luLmgnLAogICAgICAgICAg
ICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5oJywKICAgICAgICAg
ICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0FjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hy
b21pdW0uY3BwJywKQEAgLTk0LDcgKzkzLDggQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJQcmVmZXJlbmNlcy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlRhc2suY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYlRlc3RQbHVnaW4uY3BwJywKKyAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcCcsCisgICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVu
bmVyL3NyYy9XZWJUZXN0UnVubmVyLmNwcCcsCiAgICAgICAgIF0sCmRpZmYgLS1naXQgYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UGx1Z2lu
LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJU
ZXN0UGx1Z2luLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZjVmMzk0ZWJhYzBl
NWFjMmNlYjJiNGQ5YTk1YjRmNjk1MjgwZTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFBsdWdpbi5oCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAot
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpZm5kZWYgV2ViVGVzdFBsdWdpbl9oCi0jZGVmaW5lIFdlYlRlc3RQbHVnaW5faAot
Ci0jaW5jbHVkZSAiV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJQbHVnaW4uaCIKLQotbmFtZXNw
YWNlIFdlYlRlc3RSdW5uZXIgewotCi1jbGFzcyBXZWJUZXN0RGVsZWdhdGU7Ci0KLS8vIEEgZmFr
ZSBpbXBsZW1lbnRpb24gb2YgV2ViS2l0OjpXZWJQbHVnaW4gZm9yIHRlc3RpbmcgcHVycG9zZXMu
Ci0vLwotLy8gSXQgdXNlcyBXZWJHcmFwaGljc0NvbnRleHQzRCB0byBwYWludCBhIHNjZW5lIGNv
bnNpc2l0aW5nIG9mIGEgcHJpbWl0aXZlCi0vLyBvdmVyIGEgYmFja2dyb3VuZC4gVGhlIHByaW1p
dGl2ZSBhbmQgYmFja2dyb3VuZCBjYW4gYmUgY3VzdG9taXplZCB1c2luZwotLy8gdGhlIGZvbGxv
d2luZyBwbHVnaW4gcGFyYW1ldGVyczoKLS8vIHByaW1pdGl2ZTogbm9uZSAoZGVmYXVsdCksIHRy
aWFuZ2xlLgotLy8gYmFja2dyb3VuZC1jb2xvcjogYmxhY2sgKGRlZmF1bHQpLCByZWQsIGdyZWVu
LCBibHVlLgotLy8gcHJpbWl0aXZlLWNvbG9yOiBibGFjayAoZGVmYXVsdCksIHJlZCwgZ3JlZW4s
IGJsdWUuCi0vLyBvcGFjaXR5OiBbMC4wIC0gMS4wXS4gRGVmYXVsdCBpcyAxLjAuCi0vLwotLy8g
V2hldGhlciB0aGUgcGx1Z2luIGFjY2VwdHMgdG91Y2ggZXZlbnRzIG9yIG5vdCBjYW4gYmUgY3Vz
dG9taXplZCB1c2luZyB0aGUKLS8vICdhY2NlcHRzLXRvdWNoJyBwbHVnaW4gcGFyYW1ldGVyIChk
ZWZhdWx0cyB0byBmYWxzZSkuCi1jbGFzcyBXZWJUZXN0UGx1Z2luIDogcHVibGljIFdlYktpdDo6
V2ViUGx1Z2luIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgV2ViVGVzdFBsdWdpbiogY3JlYXRlKFdl
YktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlBsdWdpblBhcmFtcyYsIFdlYlRlc3RE
ZWxlZ2F0ZSopOwotICAgIHZpcnR1YWwgfldlYlRlc3RQbHVnaW4oKTsKLQotICAgIHN0YXRpYyBj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYgbWltZVR5cGUoKTsKLQotcHJvdGVjdGVkOgotICAgIFdl
YlRlc3RQbHVnaW4oKTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFdlYlRlc3RQbHVnaW5faApkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdFByb3h5LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3B1YmxpYy9XZWJUZXN0UHJveHkuaAppbmRleCBjNTQxNGY0ODg4Zjg0Y2VlMGYxOTYyMjk0N2Ri
Mjg5MWRiOTliNzRkLi5jMWIwZjQ3NTFmMDQ3MmIwMDA0YWYxZWExMmQ4M2RkOTdiZDFjOTA3IDEw
MDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UHJveHkuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaApAQCAtNTUsNiArNTUsNyBAQCBjbGFzcyBXZWJJ
bWFnZTsKIGNsYXNzIFdlYkludGVudFJlcXVlc3Q7CiBjbGFzcyBXZWJJbnRlbnRTZXJ2aWNlSW5m
bzsKIGNsYXNzIFdlYk5vZGU7CitjbGFzcyBXZWJQbHVnaW47CiBjbGFzcyBXZWJSYW5nZTsKIGNs
YXNzIFdlYlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTsKIGNsYXNzIFdlYlNwZWxsQ2hlY2tDbGllbnQ7
CkBAIC02NCw2ICs2NSw3IEBAIGNsYXNzIFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJVUkxSZXNw
b25zZTsKIGNsYXNzIFdlYlZpZXc7CiBzdHJ1Y3QgV2ViQ29uc29sZU1lc3NhZ2U7CitzdHJ1Y3Qg
V2ViUGx1Z2luUGFyYW1zOwogc3RydWN0IFdlYlBvaW50Owogc3RydWN0IFdlYlNpemU7CiBzdHJ1
Y3QgV2ViV2luZG93RmVhdHVyZXM7CkBAIC0xMTcsNiArMTE5LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgcmVnaXN0ZXJJbnRlbnRTZXJ2aWNlKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJL
aXQ6OldlYkludGVudFNlcnZpY2VJbmZvJik7CiAgICAgdm9pZCBkaXNwYXRjaEludGVudChXZWJL
aXQ6OldlYkZyYW1lKiBzb3VyY2UsIGNvbnN0IFdlYktpdDo6V2ViSW50ZW50UmVxdWVzdCYpOwog
ICAgIGJvb2wgY3JlYXRlVmlldyhXZWJLaXQ6OldlYkZyYW1lKiBjcmVhdG9yLCBjb25zdCBXZWJL
aXQ6OldlYlVSTFJlcXVlc3QmLCBjb25zdCBXZWJLaXQ6OldlYldpbmRvd0ZlYXR1cmVzJiwgY29u
c3QgV2ViS2l0OjpXZWJTdHJpbmcmIGZyYW1lTmFtZSwgV2ViS2l0OjpXZWJOYXZpZ2F0aW9uUG9s
aWN5KTsKKyAgICBXZWJLaXQ6OldlYlBsdWdpbiogY3JlYXRlUGx1Z2luKFdlYktpdDo6V2ViRnJh
bWUqLCBjb25zdCBXZWJLaXQ6OldlYlBsdWdpblBhcmFtcyYpOwogICAgIHZvaWQgc2V0U3RhdHVz
VGV4dChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZvaWQgZGlkU3RvcExvYWRpbmco
KTsKICAgICBib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCk7CkBAIC0yOTgsNiArMzAx
LDEzIEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICByZXR1cm4gQmFz
ZTo6Y3JlYXRlVmlldyhjcmVhdG9yLCByZXF1ZXN0LCBmZWF0dXJlcywgZnJhbWVOYW1lLCBwb2xp
Y3kpOwogICAgIH0KKyAgICBXZWJLaXQ6OldlYlBsdWdpbiogY3JlYXRlUGx1Z2luKFdlYktpdDo6
V2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJLaXQ6OldlYlBsdWdpblBhcmFtcyYgcGFyYW1zKQor
ICAgIHsKKyAgICAgICAgV2ViS2l0OjpXZWJQbHVnaW4qIHBsdWdpbiA9IFdlYlRlc3RQcm94eUJh
c2U6OmNyZWF0ZVBsdWdpbihmcmFtZSwgcGFyYW1zKTsKKyAgICAgICAgaWYgKHBsdWdpbikKKyAg
ICAgICAgICAgIHJldHVybiBwbHVnaW47CisgICAgICAgIHJldHVybiBCYXNlOjpjcmVhdGVQbHVn
aW4oZnJhbWUsIHBhcmFtcyk7CisgICAgfQogICAgIHZpcnR1YWwgdm9pZCBzZXRTdGF0dXNUZXh0
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB0ZXh0KQogICAgIHsKICAgICAgICAgV2ViVGVzdFBy
b3h5QmFzZTo6c2V0U3RhdHVzVGV4dCh0ZXh0KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTlmZDBiMjY2ZDM5Y2U5YjU0NTAwM2MwNTM2MGUxMTNkYmUxZWJlZQotLS0gL2Rldi9u
dWxsCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RQbHVnaW4uY3BwCkBAIC0wLDAgKzEsNTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9S
UyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUK
KyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIlRlc3RQbHVnaW4uaCIKKworI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5j
bHVkZSAiV2ViSW5wdXRFdmVudC5oIgorI2luY2x1ZGUgIldlYktpdC5oIgorI2luY2x1ZGUgIldl
YlBsdWdpblBhcmFtcy5oIgorI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgorI2luY2x1ZGUg
IldlYlRvdWNoUG9pbnQuaCIKKyNpbmNsdWRlIDxwdWJsaWMvUGxhdGZvcm0uaD4KKyNpbmNsdWRl
IDxwdWJsaWMvV2ViQ29tcG9zaXRvclN1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaD4KKyNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgorI2luY2x1ZGUg
PHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8d3RmL1N0cmluZ0V4dHJhcy5oPgorI2luY2x1
ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKwordXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKKworbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXIgeworCituYW1lc3BhY2UgeworCisvLyBHTGVudW0gdmFsdWVz
IGNvcGllZCBmcm9tIGdsMi5oLgorI2RlZmluZSBHTF9GQUxTRSAgICAgICAgICAgICAgICAgIDAK
KyNkZWZpbmUgR0xfVFJVRSAgICAgICAgICAgICAgICAgICAxCisjZGVmaW5lIEdMX09ORSAgICAg
ICAgICAgICAgICAgICAgMQorI2RlZmluZSBHTF9UUklBTkdMRVMgICAgICAgICAgICAgIDB4MDAw
NAorI2RlZmluZSBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBICAgIDB4MDMwMworI2RlZmluZSBHTF9E
RVBUSF9URVNUICAgICAgICAgICAgIDB4MEI3MQorI2RlZmluZSBHTF9CTEVORCAgICAgICAgICAg
ICAgICAgIDB4MEJFMgorI2RlZmluZSBHTF9TQ0lTU09SX1RFU1QgICAgICAgICAgIDB4MEI5MAor
I2RlZmluZSBHTF9URVhUVVJFXzJEICAgICAgICAgICAgIDB4MERFMQorI2RlZmluZSBHTF9GTE9B
VCAgICAgICAgICAgICAgICAgIDB4MTQwNgorI2RlZmluZSBHTF9SR0JBICAgICAgICAgICAgICAg
ICAgIDB4MTkwOAorI2RlZmluZSBHTF9VTlNJR05FRF9CWVRFICAgICAgICAgIDB4MTQwMQorI2Rl
ZmluZSBHTF9URVhUVVJFX01BR19GSUxURVIgICAgIDB4MjgwMAorI2RlZmluZSBHTF9URVhUVVJF
X01JTl9GSUxURVIgICAgIDB4MjgwMQorI2RlZmluZSBHTF9URVhUVVJFX1dSQVBfUyAgICAgICAg
IDB4MjgwMgorI2RlZmluZSBHTF9URVhUVVJFX1dSQVBfVCAgICAgICAgIDB4MjgwMworI2RlZmlu
ZSBHTF9ORUFSRVNUICAgICAgICAgICAgICAgIDB4MjYwMAorI2RlZmluZSBHTF9DT0xPUl9CVUZG
RVJfQklUICAgICAgIDB4NDAwMAorI2RlZmluZSBHTF9DTEFNUF9UT19FREdFICAgICAgICAgIDB4
ODEyRgorI2RlZmluZSBHTF9BUlJBWV9CVUZGRVIgICAgICAgICAgIDB4ODg5MgorI2RlZmluZSBH
TF9TVEFUSUNfRFJBVyAgICAgICAgICAgIDB4ODhFNAorI2RlZmluZSBHTF9GUkFHTUVOVF9TSEFE
RVIgICAgICAgIDB4OEIzMAorI2RlZmluZSBHTF9WRVJURVhfU0hBREVSICAgICAgICAgIDB4OEIz
MQorI2RlZmluZSBHTF9DT01QSUxFX1NUQVRVUyAgICAgICAgIDB4OEI4MQorI2RlZmluZSBHTF9M
SU5LX1NUQVRVUyAgICAgICAgICAgIDB4OEI4MgorI2RlZmluZSBHTF9DT0xPUl9BVFRBQ0hNRU5U
MCAgICAgIDB4OENFMAorI2RlZmluZSBHTF9GUkFNRUJVRkZFUl9DT01QTEVURSAgIDB4OENENQor
I2RlZmluZSBHTF9GUkFNRUJVRkZFUiAgICAgICAgICAgIDB4OEQ0MAorCit2b2lkIHByZW11bHRp
cGx5QWxwaGEoY29uc3QgdW5zaWduZWQgY29sb3JJblszXSwgZmxvYXQgYWxwaGEsIGZsb2F0IGNv
bG9yT3V0WzRdKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMzsgKytpKQorICAgICAgICBj
b2xvck91dFtpXSA9IChjb2xvckluW2ldIC8gMjU1LjBmKSAqIGFscGhhOworCisgICAgY29sb3JP
dXRbM10gPSBhbHBoYTsKK30KKworY29uc3QgY2hhciogcG9pbnRTdGF0ZShXZWJUb3VjaFBvaW50
OjpTdGF0ZSBzdGF0ZSkKK3sKKyAgICBzd2l0Y2ggKHN0YXRlKSB7CisgICAgY2FzZSBXZWJUb3Vj
aFBvaW50OjpTdGF0ZVJlbGVhc2VkOgorICAgICAgICByZXR1cm4gIlJlbGVhc2VkIjsKKyAgICBj
YXNlIFdlYlRvdWNoUG9pbnQ6OlN0YXRlUHJlc3NlZDoKKyAgICAgICAgcmV0dXJuICJQcmVzc2Vk
IjsKKyAgICBjYXNlIFdlYlRvdWNoUG9pbnQ6OlN0YXRlTW92ZWQ6CisgICAgICAgIHJldHVybiAi
TW92ZWQiOworICAgIGNhc2UgV2ViVG91Y2hQb2ludDo6U3RhdGVDYW5jZWxsZWQ6CisgICAgICAg
IHJldHVybiAiQ2FuY2VsbGVkIjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gIlVua25v
d24iOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiAwOwor
fQorCit2b2lkIHByaW50VG91Y2hMaXN0KFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUsIGNvbnN0
IFdlYlRvdWNoUG9pbnQqIHBvaW50cywgaW50IGxlbmd0aCkKK3sKKyAgICBmb3IgKGludCBpID0g
MDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICAgIGNoYXIgYnVmZmVyWzEwMF07CisgICAgICAg
IHNucHJpbnRmKGJ1ZmZlciwgc2l6ZW9mKGJ1ZmZlciksICIqICVkLCAlZDogJXNcbiIsIHBvaW50
c1tpXS5wb3NpdGlvbi54LCBwb2ludHNbaV0ucG9zaXRpb24ueSwgcG9pbnRTdGF0ZShwb2ludHNb
aV0uc3RhdGUpKTsKKyAgICAgICAgZGVsZWdhdGUtPnByaW50TWVzc2FnZShidWZmZXIpOworICAg
IH0KK30KKwordm9pZCBwcmludEV2ZW50RGV0YWlscyhXZWJUZXN0RGVsZWdhdGUqIGRlbGVnYXRl
LCBjb25zdCBXZWJJbnB1dEV2ZW50JiBldmVudCkKK3sKKyAgICBpZiAoV2ViSW5wdXRFdmVudDo6
aXNUb3VjaEV2ZW50VHlwZShldmVudC50eXBlKSkgeworICAgICAgICBjb25zdCBXZWJUb3VjaEV2
ZW50JiB0b3VjaCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYlRvdWNoRXZlbnQmPihldmVudCk7Cisg
ICAgICAgIHByaW50VG91Y2hMaXN0KGRlbGVnYXRlLCB0b3VjaC50b3VjaGVzLCB0b3VjaC50b3Vj
aGVzTGVuZ3RoKTsKKyAgICAgICAgcHJpbnRUb3VjaExpc3QoZGVsZWdhdGUsIHRvdWNoLmNoYW5n
ZWRUb3VjaGVzLCB0b3VjaC5jaGFuZ2VkVG91Y2hlc0xlbmd0aCk7CisgICAgICAgIHByaW50VG91
Y2hMaXN0KGRlbGVnYXRlLCB0b3VjaC50YXJnZXRUb3VjaGVzLCB0b3VjaC50YXJnZXRUb3VjaGVz
TGVuZ3RoKTsKKyAgICB9IGVsc2UgaWYgKFdlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUo
ZXZlbnQudHlwZSkgfHwgZXZlbnQudHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsKSB7
CisgICAgICAgIGNvbnN0IFdlYk1vdXNlRXZlbnQmIG1vdXNlID0gc3RhdGljX2Nhc3Q8Y29uc3Qg
V2ViTW91c2VFdmVudCY+KGV2ZW50KTsKKyAgICAgICAgY2hhciBidWZmZXJbMTAwXTsKKyAgICAg
ICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiogJWQsICVkXG4iLCBtb3VzZS54
LCBtb3VzZS55KTsKKyAgICAgICAgZGVsZWdhdGUtPnByaW50TWVzc2FnZShidWZmZXIpOworICAg
IH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNHZXN0dXJlRXZlbnRUeXBlKGV2ZW50LnR5cGUp
KSB7CisgICAgICAgIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZ2VzdHVyZSA9IHN0YXRpY19jYXN0
PGNvbnN0IFdlYkdlc3R1cmVFdmVudCY+KGV2ZW50KTsKKyAgICAgICAgY2hhciBidWZmZXJbMTAw
XTsKKyAgICAgICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiogJWQsICVkXG4i
LCBnZXN0dXJlLngsIGdlc3R1cmUueSk7CisgICAgICAgIGRlbGVnYXRlLT5wcmludE1lc3NhZ2Uo
YnVmZmVyKTsKKyAgICB9Cit9CisKK1dlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVl
c3RUeXBlIHBhcnNlVG91Y2hFdmVudFJlcXVlc3RUeXBlKGNvbnN0IFdlYlN0cmluZyYgc3RyaW5n
KQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrUHJpbWl0aXZl
UmF3LCAoV2ViU3RyaW5nOjpmcm9tVVRGOCgicmF3IikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xP
Q0FMKGNvbnN0IFdlYlN0cmluZywga1ByaW1pdGl2ZVN5bnRoZXRpYywgKFdlYlN0cmluZzo6ZnJv
bVVURjgoInN5bnRoZXRpYyIpKSk7CisKKyAgICBpZiAoc3RyaW5nID09IGtQcmltaXRpdmVSYXcp
CisgICAgICAgIHJldHVybiBXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlw
ZVJhdzsKKyAgICBpZiAoc3RyaW5nID09IGtQcmltaXRpdmVTeW50aGV0aWMpCisgICAgICAgIHJl
dHVybiBXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZVN5bnRoZXNpemVk
TW91c2U7CisgICAgcmV0dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RU
eXBlTm9uZTsKK30KKworfQorCisKK1Rlc3RQbHVnaW46OlRlc3RQbHVnaW4oV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBXZWJQbHVnaW5QYXJhbXMmIHBhcmFtcywgV2ViVGVzdERlbGVnYXRlKiBkZWxl
Z2F0ZSkKKyAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2RlbGVnYXRlKGRlbGVnYXRlKQor
ICAgICwgbV9jb250YWluZXIoMCkKKyAgICAsIG1fY29udGV4dCgwKQorICAgICwgbV90b3VjaEV2
ZW50UmVxdWVzdChXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZU5vbmUp
CisgICAgLCBtX3JlUmVxdWVzdFRvdWNoRXZlbnRzKGZhbHNlKQorICAgICwgbV9wcmludEV2ZW50
RGV0YWlscyhmYWxzZSkKKyAgICAsIG1fcHJpbnRVc2VyR2VzdHVyZVN0YXR1cyhmYWxzZSkKKyAg
ICAsIG1fY2FuUHJvY2Vzc0RyYWcoZmFsc2UpCit7CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmlu
ZyBrQXR0cmlidXRlUHJpbWl0aXZlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJpbWl0aXZlIik7
CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlQmFja2dyb3VuZENvbG9yID0g
V2ViU3RyaW5nOjpmcm9tVVRGOCgiYmFja2dyb3VuZC1jb2xvciIpOworICAgIHN0YXRpYyBjb25z
dCBXZWJTdHJpbmcga0F0dHJpYnV0ZVByaW1pdGl2ZUNvbG9yID0gV2ViU3RyaW5nOjpmcm9tVVRG
OCgicHJpbWl0aXZlLWNvbG9yIik7CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmli
dXRlT3BhY2l0eSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIm9wYWNpdHkiKTsKKyAgICBzdGF0aWMg
Y29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVBY2NlcHRzVG91Y2ggPSBXZWJTdHJpbmc6OmZyb21V
VEY4KCJhY2NlcHRzLXRvdWNoIik7CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmli
dXRlUmVSZXF1ZXN0VG91Y2hFdmVudHMgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJyZS1yZXF1ZXN0
LXRvdWNoIik7CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlUHJpbnRFdmVu
dERldGFpbHMgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJwcmludC1ldmVudC1kZXRhaWxzIik7Cisg
ICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlQ2FuUHJvY2Vzc0RyYWcgPSBXZWJT
dHJpbmc6OmZyb21VVEY4KCJjYW4tcHJvY2Vzcy1kcmFnIik7CisgICAgc3RhdGljIGNvbnN0IFdl
YlN0cmluZyBrQXR0cmlidXRlUHJpbnRVc2VyR2VzdHVyZVN0YXR1cyA9IFdlYlN0cmluZzo6ZnJv
bVVURjgoInByaW50LXVzZXItZ2VzdHVyZS1zdGF0dXMiKTsKKworICAgIEFTU0VSVChwYXJhbXMu
YXR0cmlidXRlTmFtZXMuc2l6ZSgpID09IHBhcmFtcy5hdHRyaWJ1dGVWYWx1ZXMuc2l6ZSgpKTsK
KyAgICBzaXplX3Qgc2l6ZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lcy5zaXplKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKKyAgICAgICAgY29uc3QgV2ViU3RyaW5n
JiBhdHRyaWJ1dGVOYW1lID0gcGFyYW1zLmF0dHJpYnV0ZU5hbWVzW2ldOworICAgICAgICBjb25z
dCBXZWJTdHJpbmcmIGF0dHJpYnV0ZVZhbHVlID0gcGFyYW1zLmF0dHJpYnV0ZVZhbHVlc1tpXTsK
KworICAgICAgICBpZiAoYXR0cmlidXRlTmFtZSA9PSBrQXR0cmlidXRlUHJpbWl0aXZlKQorICAg
ICAgICAgICAgbV9zY2VuZS5wcmltaXRpdmUgPSBwYXJzZVByaW1pdGl2ZShhdHRyaWJ1dGVWYWx1
ZSk7CisgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0ga0F0dHJpYnV0ZUJhY2tncm91
bmRDb2xvcikKKyAgICAgICAgICAgIHBhcnNlQ29sb3IoYXR0cmlidXRlVmFsdWUsIG1fc2NlbmUu
YmFja2dyb3VuZENvbG9yKTsKKyAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRlTmFtZSA9PSBrQXR0
cmlidXRlUHJpbWl0aXZlQ29sb3IpCisgICAgICAgICAgICBwYXJzZUNvbG9yKGF0dHJpYnV0ZVZh
bHVlLCBtX3NjZW5lLnByaW1pdGl2ZUNvbG9yKTsKKyAgICAgICAgZWxzZSBpZiAoYXR0cmlidXRl
TmFtZSA9PSBrQXR0cmlidXRlT3BhY2l0eSkKKyAgICAgICAgICAgIG1fc2NlbmUub3BhY2l0eSA9
IHBhcnNlT3BhY2l0eShhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0
ZU5hbWUgPT0ga0F0dHJpYnV0ZUFjY2VwdHNUb3VjaCkKKyAgICAgICAgICAgIG1fdG91Y2hFdmVu
dFJlcXVlc3QgPSBwYXJzZVRvdWNoRXZlbnRSZXF1ZXN0VHlwZShhdHRyaWJ1dGVWYWx1ZSk7Cisg
ICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0ga0F0dHJpYnV0ZVJlUmVxdWVzdFRvdWNo
RXZlbnRzKQorICAgICAgICAgICAgbV9yZVJlcXVlc3RUb3VjaEV2ZW50cyA9IHBhcnNlQm9vbGVh
bihhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0ga0F0
dHJpYnV0ZVByaW50RXZlbnREZXRhaWxzKQorICAgICAgICAgICAgbV9wcmludEV2ZW50RGV0YWls
cyA9IHBhcnNlQm9vbGVhbihhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIGVsc2UgaWYgKGF0dHJp
YnV0ZU5hbWUgPT0ga0F0dHJpYnV0ZUNhblByb2Nlc3NEcmFnKQorICAgICAgICAgICAgbV9jYW5Q
cm9jZXNzRHJhZyA9IHBhcnNlQm9vbGVhbihhdHRyaWJ1dGVWYWx1ZSk7CisgICAgICAgIGVsc2Ug
aWYgKGF0dHJpYnV0ZU5hbWUgPT0ga0F0dHJpYnV0ZVByaW50VXNlckdlc3R1cmVTdGF0dXMpCisg
ICAgICAgICAgICBtX3ByaW50VXNlckdlc3R1cmVTdGF0dXMgPSBwYXJzZUJvb2xlYW4oYXR0cmli
dXRlVmFsdWUpOworICAgIH0KK30KKworVGVzdFBsdWdpbjo6flRlc3RQbHVnaW4oKQoreworfQor
Citib29sIFRlc3RQbHVnaW46OmluaXRpYWxpemUoV2ViUGx1Z2luQ29udGFpbmVyKiBjb250YWlu
ZXIpCit7CisgICAgV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CisgICAg
bV9jb250ZXh0ID0gUGxhdGZvcm06OmN1cnJlbnQoKS0+Y3JlYXRlT2Zmc2NyZWVuR3JhcGhpY3ND
b250ZXh0M0QoYXR0cnMpOworICAgIGlmICghbV9jb250ZXh0KQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBpZiAoIW1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmICghaW5pdFNjZW5lKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIG1fbGF5ZXIgPSBhZG9wdFB0cihQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21w
b3NpdG9yU3VwcG9ydCgpLT5jcmVhdGVFeHRlcm5hbFRleHR1cmVMYXllcih0aGlzKSk7CisgICAg
bV9jb250YWluZXIgPSBjb250YWluZXI7CisgICAgbV9jb250YWluZXItPnNldFdlYkxheWVyKG1f
bGF5ZXItPmxheWVyKCkpOworICAgIGlmIChtX3JlUmVxdWVzdFRvdWNoRXZlbnRzKSB7CisgICAg
ICAgIG1fY29udGFpbmVyLT5yZXF1ZXN0VG91Y2hFdmVudFR5cGUoV2ViUGx1Z2luQ29udGFpbmVy
OjpUb3VjaEV2ZW50UmVxdWVzdFR5cGVTeW50aGVzaXplZE1vdXNlKTsKKyAgICAgICAgbV9jb250
YWluZXItPnJlcXVlc3RUb3VjaEV2ZW50VHlwZShXZWJQbHVnaW5Db250YWluZXI6OlRvdWNoRXZl
bnRSZXF1ZXN0VHlwZVJhdyk7CisgICAgfQorICAgIG1fY29udGFpbmVyLT5yZXF1ZXN0VG91Y2hF
dmVudFR5cGUobV90b3VjaEV2ZW50UmVxdWVzdCk7CisgICAgbV9jb250YWluZXItPnNldFdhbnRz
V2hlZWxFdmVudHModHJ1ZSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgVGVzdFBsdWdp
bjo6ZGVzdHJveSgpCit7CisgICAgaWYgKG1fY29udGFpbmVyKQorICAgICAgICBtX2NvbnRhaW5l
ci0+c2V0V2ViTGF5ZXIoMCk7CisgICAgbV9sYXllci5jbGVhcigpOworICAgIGRlc3Ryb3lTY2Vu
ZSgpOworCisgICAgZGVsZXRlIG1fY29udGV4dDsKKyAgICBtX2NvbnRleHQgPSAwOworCisgICAg
bV9jb250YWluZXIgPSAwOworICAgIG1fZnJhbWUgPSAwOworfQorCit2b2lkIFRlc3RQbHVnaW46
OnVwZGF0ZUdlb21ldHJ5KGNvbnN0IFdlYlJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViUmVjdCYg
Y2xpcFJlY3QsIGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYgY3V0T3V0c1JlY3RzLCBib29sIGlz
VmlzaWJsZSkKK3sKKyAgICBpZiAoY2xpcFJlY3QgPT0gbV9yZWN0KQorICAgICAgICByZXR1cm47
CisgICAgbV9yZWN0ID0gY2xpcFJlY3Q7CisgICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIG1fY29udGV4dC0+cmVzaGFwZShtX3JlY3Qud2lkdGgsIG1fcmVj
dC5oZWlnaHQpOworICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbV9yZWN0LndpZHRoLCBt
X3JlY3QuaGVpZ2h0KTsKKworICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8y
RCwgbV9jb2xvclRleHR1cmUpOworICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHTF9URVhU
VVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOworICAgIG1fY29udGV4
dC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdM
X05FQVJFU1QpOworICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBH
TF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgbV9jb250ZXh0LT50ZXhQ
YXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19F
REdFKTsKKyAgICBtX2NvbnRleHQtPnRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdC
QSwgbV9yZWN0LndpZHRoLCBtX3JlY3QuaGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9C
WVRFLCAwKTsKKyAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwg
bV9mcmFtZWJ1ZmZlcik7CisgICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9G
UkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fY29sb3JU
ZXh0dXJlLCAwKTsKKworICAgIGRyYXdTY2VuZSgpOworCisgICAgbV9jb250ZXh0LT5mbHVzaCgp
OworICAgIG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKK30KKworVGVzdFBsdWdpbjo6
UHJpbWl0aXZlIFRlc3RQbHVnaW46OnBhcnNlUHJpbWl0aXZlKGNvbnN0IFdlYlN0cmluZyYgc3Ry
aW5nKQoreworICAgIHN0YXRpYyBjb25zdCBXZWJTdHJpbmcga1ByaW1pdGl2ZU5vbmUgPSBXZWJT
dHJpbmc6OmZyb21VVEY4KCJub25lIik7CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrUHJp
bWl0aXZlVHJpYW5nbGUgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJ0cmlhbmdsZSIpOworCisgICAg
UHJpbWl0aXZlIHByaW1pdGl2ZSA9IFByaW1pdGl2ZU5vbmU7CisgICAgaWYgKHN0cmluZyA9PSBr
UHJpbWl0aXZlTm9uZSkKKyAgICAgICAgcHJpbWl0aXZlID0gUHJpbWl0aXZlTm9uZTsKKyAgICBl
bHNlIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVRyaWFuZ2xlKQorICAgICAgICBwcmltaXRpdmUg
PSBQcmltaXRpdmVUcmlhbmdsZTsKKyAgICBlbHNlCisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIHJldHVybiBwcmltaXRpdmU7Cit9CisKKy8vIEZJWE1FOiBUaGlzIG1ldGhvZCBz
aG91bGQgYWxyZWFkeSBleGlzdC4gVXNlIGl0LgorLy8gRm9yIG5vdyBqdXN0IHBhcnNlIHByaW1h
cnkgY29sb3JzLgordm9pZCBUZXN0UGx1Z2luOjpwYXJzZUNvbG9yKGNvbnN0IFdlYlN0cmluZyYg
c3RyaW5nLCB1bnNpZ25lZCBjb2xvclszXSkKK3sKKyAgICBjb2xvclswXSA9IGNvbG9yWzFdID0g
Y29sb3JbMl0gPSAwOworICAgIGlmIChzdHJpbmcgPT0gImJsYWNrIikKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKHN0cmluZyA9PSAicmVkIikKKyAgICAgICAgY29sb3JbMF0gPSAyNTU7Cisg
ICAgZWxzZSBpZiAoc3RyaW5nID09ICJncmVlbiIpCisgICAgICAgIGNvbG9yWzFdID0gMjU1Owor
ICAgIGVsc2UgaWYgKHN0cmluZyA9PSAiYmx1ZSIpCisgICAgICAgIGNvbG9yWzJdID0gMjU1Owor
ICAgIGVsc2UKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK2Zsb2F0IFRlc3RQ
bHVnaW46OnBhcnNlT3BhY2l0eShjb25zdCBXZWJTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8ZmxvYXQ+KGF0b2Yoc3RyaW5nLnV0ZjgoKS5kYXRhKCkpKTsKK30KKwor
Ym9vbCBUZXN0UGx1Z2luOjpwYXJzZUJvb2xlYW4oY29uc3QgV2ViU3RyaW5nJiBzdHJpbmcpCit7
CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrUHJpbWl0aXZlVHJ1ZSA9IFdlYlN0cmluZzo6
ZnJvbVVURjgoInRydWUiKTsKKyAgICByZXR1cm4gc3RyaW5nID09IGtQcmltaXRpdmVUcnVlOwor
fQorCitib29sIFRlc3RQbHVnaW46OmluaXRTY2VuZSgpCit7CisgICAgZmxvYXQgY29sb3JbNF07
CisgICAgcHJlbXVsdGlwbHlBbHBoYShtX3NjZW5lLmJhY2tncm91bmRDb2xvciwgbV9zY2VuZS5v
cGFjaXR5LCBjb2xvcik7CisKKyAgICBtX2NvbG9yVGV4dHVyZSA9IG1fY29udGV4dC0+Y3JlYXRl
VGV4dHVyZSgpOworICAgIG1fZnJhbWVidWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVm
ZmVyKCk7CisKKyAgICBtX2NvbnRleHQtPnZpZXdwb3J0KDAsIDAsIG1fcmVjdC53aWR0aCwgbV9y
ZWN0LmhlaWdodCk7CisgICAgbV9jb250ZXh0LT5kaXNhYmxlKEdMX0RFUFRIX1RFU1QpOworICAg
IG1fY29udGV4dC0+ZGlzYWJsZShHTF9TQ0lTU09SX1RFU1QpOworCisgICAgbV9jb250ZXh0LT5j
bGVhckNvbG9yKGNvbG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdKTsKKworICAg
IG1fY29udGV4dC0+ZW5hYmxlKEdMX0JMRU5EKTsKKyAgICBtX2NvbnRleHQtPmJsZW5kRnVuYyhH
TF9PTkUsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOworCisgICAgcmV0dXJuIG1fc2NlbmUucHJp
bWl0aXZlICE9IFByaW1pdGl2ZU5vbmUgPyBpbml0UHJvZ3JhbSgpICYmIGluaXRQcmltaXRpdmUo
KSA6IHRydWU7Cit9CisKK3ZvaWQgVGVzdFBsdWdpbjo6ZHJhd1NjZW5lKCkKK3sKKyAgICBtX2Nv
bnRleHQtPnZpZXdwb3J0KDAsIDAsIG1fcmVjdC53aWR0aCwgbV9yZWN0LmhlaWdodCk7CisgICAg
bV9jb250ZXh0LT5jbGVhcihHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICAgIGlmIChtX3NjZW5l
LnByaW1pdGl2ZSAhPSBQcmltaXRpdmVOb25lKQorICAgICAgICBkcmF3UHJpbWl0aXZlKCk7Cit9
CisKK3ZvaWQgVGVzdFBsdWdpbjo6ZGVzdHJveVNjZW5lKCkKK3sKKyAgICBpZiAobV9zY2VuZS5w
cm9ncmFtKSB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJvZ3JhbShtX3NjZW5lLnByb2dy
YW0pOworICAgICAgICBtX3NjZW5lLnByb2dyYW0gPSAwOworICAgIH0KKyAgICBpZiAobV9zY2Vu
ZS52Ym8pIHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVCdWZmZXIobV9zY2VuZS52Ym8pOwor
ICAgICAgICBtX3NjZW5lLnZibyA9IDA7CisgICAgfQorCisgICAgaWYgKG1fZnJhbWVidWZmZXIp
IHsKKyAgICAgICAgbV9jb250ZXh0LT5kZWxldGVGcmFtZWJ1ZmZlcihtX2ZyYW1lYnVmZmVyKTsK
KyAgICAgICAgbV9mcmFtZWJ1ZmZlciA9IDA7CisgICAgfQorCisgICAgaWYgKG1fY29sb3JUZXh0
dXJlKSB7CisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlVGV4dHVyZShtX2NvbG9yVGV4dHVyZSk7
CisgICAgICAgIG1fY29sb3JUZXh0dXJlID0gMDsKKyAgICB9Cit9CisKK2Jvb2wgVGVzdFBsdWdp
bjo6aW5pdFByb2dyYW0oKQoreworICAgIGNvbnN0IENTdHJpbmcgdmVydGV4U291cmNlKAorICAg
ICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247ICBcbiIKKyAgICAgICAgInZvaWQgbWFpbigp
IHsgICAgICAgICAgICAgXG4iCisgICAgICAgICIgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247IFxu
IgorICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICApOworCisgICAg
Y29uc3QgQ1N0cmluZyBmcmFnbWVudFNvdXJjZSgKKyAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OyBcbiIKKyAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsgICAgICBcbiIKKyAgICAg
ICAgInZvaWQgbWFpbigpIHsgICAgICAgICAgICBcbiIKKyAgICAgICAgIiAgZ2xfRnJhZ0NvbG9y
ID0gY29sb3I7ICBcbiIKKyAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAg
ICApOworCisgICAgbV9zY2VuZS5wcm9ncmFtID0gbG9hZFByb2dyYW0odmVydGV4U291cmNlLCBm
cmFnbWVudFNvdXJjZSk7CisgICAgaWYgKCFtX3NjZW5lLnByb2dyYW0pCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIG1fc2NlbmUuY29sb3JMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1fc2NlbmUucHJvZ3JhbSwgImNvbG9yIik7CisgICAgbV9zY2VuZS5wb3Np
dGlvbkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3NjZW5lLnByb2dy
YW0sICJwb3NpdGlvbiIpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFRlc3RQbHVnaW46
OmluaXRQcmltaXRpdmUoKQoreworICAgIEFTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmlt
aXRpdmVUcmlhbmdsZSk7CisKKyAgICBtX3NjZW5lLnZibyA9IG1fY29udGV4dC0+Y3JlYXRlQnVm
ZmVyKCk7CisgICAgaWYgKCFtX3NjZW5lLnZibykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgY29uc3QgZmxvYXQgdmVydGljZXNbXSA9IHsKKyAgICAgICAgMC4wZiwgIDAuOGYsIDAuMGYs
CisgICAgICAgIC0wLjhmLCAtMC44ZiwgMC4wZiwKKyAgICAgICAgMC44ZiwgLTAuOGYsIDAuMGYg
fTsKKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtX3NjZW5lLnZi
byk7CisgICAgbV9jb250ZXh0LT5idWZmZXJEYXRhKEdMX0FSUkFZX0JVRkZFUiwgc2l6ZW9mKHZl
cnRpY2VzKSwgMCwgR0xfU1RBVElDX0RSQVcpOworICAgIG1fY29udGV4dC0+YnVmZmVyU3ViRGF0
YShHTF9BUlJBWV9CVUZGRVIsIDAsIHNpemVvZih2ZXJ0aWNlcyksIHZlcnRpY2VzKTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBUZXN0UGx1Z2luOjpkcmF3UHJpbWl0aXZlKCkKK3sKKyAg
ICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUgPT0gUHJpbWl0aXZlVHJpYW5nbGUpOworICAgIEFT
U0VSVChtX3NjZW5lLnZibyk7CisgICAgQVNTRVJUKG1fc2NlbmUucHJvZ3JhbSk7CisKKyAgICBt
X2NvbnRleHQtPnVzZVByb2dyYW0obV9zY2VuZS5wcm9ncmFtKTsKKworICAgIC8vIEJpbmQgcHJp
bWl0aXZlIGNvbG9yLgorICAgIGZsb2F0IGNvbG9yWzRdOworICAgIHByZW11bHRpcGx5QWxwaGEo
bV9zY2VuZS5wcmltaXRpdmVDb2xvciwgbV9zY2VuZS5vcGFjaXR5LCBjb2xvcik7CisgICAgbV9j
b250ZXh0LT51bmlmb3JtNGYobV9zY2VuZS5jb2xvckxvY2F0aW9uLCBjb2xvclswXSwgY29sb3Jb
MV0sIGNvbG9yWzJdLCBjb2xvclszXSk7CisKKyAgICAvLyBCaW5kIHByaW1pdGl2ZSB2ZXJ0aWNl
cy4KKyAgICBtX2NvbnRleHQtPmJpbmRCdWZmZXIoR0xfQVJSQVlfQlVGRkVSLCBtX3NjZW5lLnZi
byk7CisgICAgbV9jb250ZXh0LT5lbmFibGVWZXJ0ZXhBdHRyaWJBcnJheShtX3NjZW5lLnBvc2l0
aW9uTG9jYXRpb24pOworICAgIG1fY29udGV4dC0+dmVydGV4QXR0cmliUG9pbnRlcihtX3NjZW5l
LnBvc2l0aW9uTG9jYXRpb24sIDMsIEdMX0ZMT0FULCBHTF9GQUxTRSwgMCwgMCk7CisgICAgbV9j
b250ZXh0LT5kcmF3QXJyYXlzKEdMX1RSSUFOR0xFUywgMCwgMyk7Cit9CisKK3Vuc2lnbmVkIFRl
c3RQbHVnaW46OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29uc3QgQ1N0cmluZyYgc291cmNl
KQoreworICAgIHVuc2lnbmVkIHNoYWRlciA9IG1fY29udGV4dC0+Y3JlYXRlU2hhZGVyKHR5cGUp
OworICAgIGlmIChzaGFkZXIpIHsKKyAgICAgICAgbV9jb250ZXh0LT5zaGFkZXJTb3VyY2Uoc2hh
ZGVyLCBzb3VyY2UuZGF0YSgpKTsKKyAgICAgICAgbV9jb250ZXh0LT5jb21waWxlU2hhZGVyKHNo
YWRlcik7CisKKyAgICAgICAgaW50IGNvbXBpbGVkID0gMDsKKyAgICAgICAgbV9jb250ZXh0LT5n
ZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVTLCAmY29tcGlsZWQpOworICAgICAg
ICBpZiAoIWNvbXBpbGVkKSB7CisgICAgICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcihz
aGFkZXIpOworICAgICAgICAgICAgc2hhZGVyID0gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICBy
ZXR1cm4gc2hhZGVyOworfQorCit1bnNpZ25lZCBUZXN0UGx1Z2luOjpsb2FkUHJvZ3JhbShjb25z
dCBDU3RyaW5nJiB2ZXJ0ZXhTb3VyY2UsIGNvbnN0IENTdHJpbmcmIGZyYWdtZW50U291cmNlKQor
eworICAgIHVuc2lnbmVkIHZlcnRleFNoYWRlciA9IGxvYWRTaGFkZXIoR0xfVkVSVEVYX1NIQURF
UiwgdmVydGV4U291cmNlKTsKKyAgICB1bnNpZ25lZCBmcmFnbWVudFNoYWRlciA9IGxvYWRTaGFk
ZXIoR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnbWVudFNvdXJjZSk7CisgICAgdW5zaWduZWQgcHJv
Z3JhbSA9IG1fY29udGV4dC0+Y3JlYXRlUHJvZ3JhbSgpOworICAgIGlmICh2ZXJ0ZXhTaGFkZXIg
JiYgZnJhZ21lbnRTaGFkZXIgJiYgcHJvZ3JhbSkgeworICAgICAgICBtX2NvbnRleHQtPmF0dGFj
aFNoYWRlcihwcm9ncmFtLCB2ZXJ0ZXhTaGFkZXIpOworICAgICAgICBtX2NvbnRleHQtPmF0dGFj
aFNoYWRlcihwcm9ncmFtLCBmcmFnbWVudFNoYWRlcik7CisgICAgICAgIG1fY29udGV4dC0+bGlu
a1Byb2dyYW0ocHJvZ3JhbSk7CisKKyAgICAgICAgaW50IGxpbmtlZCA9IDA7CisgICAgICAgIG1f
Y29udGV4dC0+Z2V0UHJvZ3JhbWl2KHByb2dyYW0sIEdMX0xJTktfU1RBVFVTLCAmbGlua2VkKTsK
KyAgICAgICAgaWYgKCFsaW5rZWQpIHsKKyAgICAgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlUHJv
Z3JhbShwcm9ncmFtKTsKKyAgICAgICAgICAgIHByb2dyYW0gPSAwOworICAgICAgICB9CisgICAg
fQorICAgIGlmICh2ZXJ0ZXhTaGFkZXIpCisgICAgICAgIG1fY29udGV4dC0+ZGVsZXRlU2hhZGVy
KHZlcnRleFNoYWRlcik7CisgICAgaWYgKGZyYWdtZW50U2hhZGVyKQorICAgICAgICBtX2NvbnRl
eHQtPmRlbGV0ZVNoYWRlcihmcmFnbWVudFNoYWRlcik7CisKKyAgICByZXR1cm4gcHJvZ3JhbTsK
K30KKworYm9vbCBUZXN0UGx1Z2luOjpoYW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZl
bnQmIGV2ZW50LCBXZWJDdXJzb3JJbmZvJiBpbmZvKQoreworICAgIGNvbnN0IGNoYXIqIGV2ZW50
TmFtZSA9IDA7CisgICAgc3dpdGNoIChldmVudC50eXBlKSB7CisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpVbmRlZmluZWQ6ICAgICAgICAgICBldmVudE5hbWUgPSAidW5rbm93biI7IGJyZWFrOwor
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZURvd246ICAgICAgICAgICBldmVudE5hbWUg
PSAiTW91c2VEb3duIjsgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVVwOiAg
ICAgICAgICAgICBldmVudE5hbWUgPSAiTW91c2VVcCI7IGJyZWFrOworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6TW91c2VNb3ZlOiAgICAgICAgICAgZXZlbnROYW1lID0gIk1vdXNlTW92ZSI7IGJy
ZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VFbnRlcjogICAgICAgICAgZXZlbnRO
YW1lID0gIk1vdXNlRW50ZXIiOyBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNl
TGVhdmU6ICAgICAgICAgIGV2ZW50TmFtZSA9ICJNb3VzZUxlYXZlIjsgYnJlYWs7CisgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpDb250ZXh0TWVudTogICAgICAgICBldmVudE5hbWUgPSAiQ29udGV4
dE1lbnUiOyBicmVhazsKKworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VXaGVlbDogICAg
ICAgICAgZXZlbnROYW1lID0gIk1vdXNlV2hlZWwiOyBicmVhazsKKworICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6UmF3S2V5RG93bjogICAgICAgICAgZXZlbnROYW1lID0gIlJhd0tleURvd24iOyBi
cmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleURvd246ICAgICAgICAgICAgIGV2ZW50
TmFtZSA9ICJLZXlEb3duIjsgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpLZXlVcDog
ICAgICAgICAgICAgICBldmVudE5hbWUgPSAiS2V5VXAiOyBicmVhazsKKyAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6OkNoYXI6ICAgICAgICAgICAgICAgIGV2ZW50TmFtZSA9ICJDaGFyIjsgYnJlYWs7
CisKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjogIGV2ZW50TmFt
ZSA9ICJHZXN0dXJlU2Nyb2xsQmVnaW4iOyBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVTY3JvbGxFbmQ6ICAgIGV2ZW50TmFtZSA9ICJHZXN0dXJlU2Nyb2xsRW5kIjsgYnJl
YWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOiBldmVudE5h
bWUgPSAiR2VzdHVyZVNjcm9sbFVwZGF0ZSI7IGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZUZsaW5nU3RhcnQ6ICAgZXZlbnROYW1lID0gIkdlc3R1cmVGbGluZ1N0YXJ0Ijsg
YnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdDYW5jZWw6ICBldmVu
dE5hbWUgPSAiR2VzdHVyZUZsaW5nQ2FuY2VsIjsgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlVGFwOiAgICAgICAgICBldmVudE5hbWUgPSAiR2VzdHVyZVRhcCI7IGJyZWFr
OworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERvd246ICAgICAgZXZlbnROYW1l
ID0gIkdlc3R1cmVUYXBEb3duIjsgYnJlYWs7CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0
dXJlVGFwQ2FuY2VsOiAgICBldmVudE5hbWUgPSAiR2VzdHVyZVRhcENhbmNlbCI7IGJyZWFrOwor
ICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZURvdWJsZVRhcDogICAgZXZlbnROYW1lID0g
Ikdlc3R1cmVEb3VibGVUYXAiOyBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVUd29GaW5nZXJUYXA6IGV2ZW50TmFtZSA9ICJHZXN0dXJlVHdvRmluZ2VyVGFwIjsgYnJlYWs7
CisgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOiAgICBldmVudE5hbWUg
PSAiR2VzdHVyZUxvbmdQcmVzcyI7IGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZUxvbmdUYXA6ICAgICAgZXZlbnROYW1lID0gIkdlc3R1cmVMb25nVGFwIjsgYnJlYWs7Cisg
ICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjogICBldmVudE5hbWUgPSAi
R2VzdHVyZVBpbmNoQmVnaW4iOyBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVQaW5jaEVuZDogICAgIGV2ZW50TmFtZSA9ICJHZXN0dXJlUGluY2hFbmQiOyBicmVhazsKKyAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaFVwZGF0ZTogIGV2ZW50TmFtZSA9ICJH
ZXN0dXJlUGluY2hVcGRhdGUiOyBicmVhazsKKworICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91
Y2hTdGFydDogICAgICAgICAgZXZlbnROYW1lID0gIlRvdWNoU3RhcnQiOyBicmVhazsKKyAgICBj
YXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZTogICAgICAgICAgIGV2ZW50TmFtZSA9ICJUb3Vj
aE1vdmUiOyBicmVhazsKKyAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlRvdWNoRW5kOiAgICAgICAg
ICAgIGV2ZW50TmFtZSA9ICJUb3VjaEVuZCI7IGJyZWFrOworICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6VG91Y2hDYW5jZWw6ICAgICAgICAgZXZlbnROYW1lID0gIlRvdWNoQ2FuY2VsIjsgYnJlYWs7
CisgICAgfQorCisgICAgbV9kZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0ZDo6c3RyaW5nKCJQbHVn
aW4gcmVjZWl2ZWQgZXZlbnQ6ICIpICsgKGV2ZW50TmFtZSA/IGV2ZW50TmFtZSA6ICJ1bmtub3du
IikgKyAiXG4iKTsKKyAgICBpZiAobV9wcmludEV2ZW50RGV0YWlscykKKyAgICAgICAgcHJpbnRF
dmVudERldGFpbHMobV9kZWxlZ2F0ZSwgZXZlbnQpOworICAgIGlmIChtX3ByaW50VXNlckdlc3R1
cmVTdGF0dXMpCisgICAgICAgIG1fZGVsZWdhdGUtPnByaW50TWVzc2FnZShzdGQ6OnN0cmluZygi
KiAiKSArIChtX2ZyYW1lLT5pc1Byb2Nlc3NpbmdVc2VyR2VzdHVyZSgpID8gIiIgOiAibm90ICIp
ICsgImhhbmRsaW5nIHVzZXIgZ2VzdHVyZVxuIik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCiti
b29sIFRlc3RQbHVnaW46OmhhbmRsZURyYWdTdGF0dXNVcGRhdGUoV2ViRHJhZ1N0YXR1cyBkcmFn
U3RhdHVzLCBjb25zdCBXZWJEcmFnRGF0YSYsIFdlYkRyYWdPcGVyYXRpb25zTWFzaywgY29uc3Qg
V2ViUG9pbnQmIHBvc2l0aW9uLCBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9zaXRpb24pCit7Cisg
ICAgY29uc3QgY2hhciogZHJhZ1N0YXR1c05hbWUgPSAwOworICAgIHN3aXRjaCAoZHJhZ1N0YXR1
cykgeworICAgIGNhc2UgV2ViRHJhZ1N0YXR1c0VudGVyOgorICAgICAgICBkcmFnU3RhdHVzTmFt
ZSA9ICJEcmFnRW50ZXIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkRyYWdTdGF0dXNP
dmVyOgorICAgICAgICBkcmFnU3RhdHVzTmFtZSA9ICJEcmFnT3ZlciI7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgV2ViRHJhZ1N0YXR1c0xlYXZlOgorICAgICAgICBkcmFnU3RhdHVzTmFtZSA9
ICJEcmFnTGVhdmUiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYkRyYWdTdGF0dXNEcm9w
OgorICAgICAgICBkcmFnU3RhdHVzTmFtZSA9ICJEcmFnRHJvcCI7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgV2ViRHJhZ1N0YXR1c1Vua25vd246CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOworICAgIH0KKyAgICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RkOjpzdHJpbmcoIlBs
dWdpbiByZWNlaXZlZCBldmVudDogIikgKyBkcmFnU3RhdHVzTmFtZSArICJcbiIpOworICAgIHJl
dHVybiBmYWxzZTsKK30KKworVGVzdFBsdWdpbiogVGVzdFBsdWdpbjo6Y3JlYXRlKFdlYkZyYW1l
KiBmcmFtZSwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMsIFdlYlRlc3REZWxlZ2F0ZSog
ZGVsZWdhdGUpCit7CisgICAgcmV0dXJuIG5ldyBUZXN0UGx1Z2luKGZyYW1lLCBwYXJhbXMsIGRl
bGVnYXRlKTsKK30KKworY29uc3QgV2ViU3RyaW5nJiBUZXN0UGx1Z2luOjptaW1lVHlwZSgpCit7
CisgICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrTWltZVR5cGUgPSBXZWJTdHJpbmc6OmZyb21V
VEY4KCJhcHBsaWNhdGlvbi94LXdlYmtpdC10ZXN0LXdlYnBsdWdpbiIpOworICAgIHJldHVybiBr
TWltZVR5cGU7Cit9CisKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RQbHVnaW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xZTEwMGRhZTkx
ZmMwMmMwZDEwOTkyZDU3NmM4NDIwYjBhZDRlNDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oCkBAIC0w
LDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YK
KyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBUZXN0UGx1Z2luX2gKKyNkZWZpbmUgVGVzdFBs
dWdpbl9oCisKKyNpbmNsdWRlICJXZWJQbHVnaW4uaCIKKyNpbmNsdWRlICJXZWJQbHVnaW5Db250
YWluZXIuaCIKKyNpbmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXIuaD4KKyNp
bmNsdWRlIDxwdWJsaWMvV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKKworY2xhc3MgV2Vi
VGVzdERlbGVnYXRlOworCisvLyBBIGZha2UgaW1wbGVtZW50aW9uIG9mIFdlYktpdDo6V2ViUGx1
Z2luIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorLy8KKy8vIEl0IHVzZXMgV2ViR3JhcGhpY3NDb250
ZXh0M0QgdG8gcGFpbnQgYSBzY2VuZSBjb25zaXNpdGluZyBvZiBhIHByaW1pdGl2ZQorLy8gb3Zl
ciBhIGJhY2tncm91bmQuIFRoZSBwcmltaXRpdmUgYW5kIGJhY2tncm91bmQgY2FuIGJlIGN1c3Rv
bWl6ZWQgdXNpbmcKKy8vIHRoZSBmb2xsb3dpbmcgcGx1Z2luIHBhcmFtZXRlcnM6CisvLyBwcmlt
aXRpdmU6IG5vbmUgKGRlZmF1bHQpLCB0cmlhbmdsZS4KKy8vIGJhY2tncm91bmQtY29sb3I6IGJs
YWNrIChkZWZhdWx0KSwgcmVkLCBncmVlbiwgYmx1ZS4KKy8vIHByaW1pdGl2ZS1jb2xvcjogYmxh
Y2sgKGRlZmF1bHQpLCByZWQsIGdyZWVuLCBibHVlLgorLy8gb3BhY2l0eTogWzAuMCAtIDEuMF0u
IERlZmF1bHQgaXMgMS4wLgorLy8KKy8vIFdoZXRoZXIgdGhlIHBsdWdpbiBhY2NlcHRzIHRvdWNo
IGV2ZW50cyBvciBub3QgY2FuIGJlIGN1c3RvbWl6ZWQgdXNpbmcgdGhlCisvLyAnYWNjZXB0cy10
b3VjaCcgcGx1Z2luIHBhcmFtZXRlciAoZGVmYXVsdHMgdG8gZmFsc2UpLgorY2xhc3MgVGVzdFBs
dWdpbiA6IHB1YmxpYyBXZWJLaXQ6OldlYlBsdWdpbiwgcHVibGljIFdlYktpdDo6V2ViRXh0ZXJu
YWxUZXh0dXJlTGF5ZXJDbGllbnQgeworcHVibGljOgorICAgIHN0YXRpYyBUZXN0UGx1Z2luKiBj
cmVhdGUoV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViUGx1Z2luUGFyYW1zJiwg
V2ViVGVzdERlbGVnYXRlKik7CisgICAgdmlydHVhbCB+VGVzdFBsdWdpbigpOworCisgICAgc3Rh
dGljIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiBtaW1lVHlwZSgpOworCisgICAgLy8gV2ViUGx1
Z2luIG1ldGhvZHM6CisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoV2ViS2l0OjpXZWJQbHVn
aW5Db250YWluZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOworICAgIHZpcnR1YWwg
TlBPYmplY3QqIHNjcmlwdGFibGVPYmplY3QoKSB7IHJldHVybiAwOyB9CisgICAgdmlydHVhbCBi
b29sIGNhblByb2Nlc3NEcmFnKCkgY29uc3QgeyByZXR1cm4gbV9jYW5Qcm9jZXNzRHJhZzsgfQor
ICAgIHZpcnR1YWwgdm9pZCBwYWludChXZWJLaXQ6OldlYkNhbnZhcyosIGNvbnN0IFdlYktpdDo6
V2ViUmVjdCYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVHZW9tZXRyeShjb25zdCBXZWJL
aXQ6OldlYlJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViS2l0OjpXZWJSZWN0JiBjbGlwUmVjdCwg
Y29uc3QgV2ViS2l0OjpXZWJWZWN0b3I8V2ViS2l0OjpXZWJSZWN0PiYgY3V0T3V0c1JlY3RzLCBi
b29sIGlzVmlzaWJsZSk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUZvY3VzKGJvb2wpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVWaXNpYmlsaXR5KGJvb2wpIHsgfQorICAgIHZpcnR1YWwg
Ym9vbCBhY2NlcHRzSW5wdXRFdmVudHMoKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCBi
b29sIGhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViS2l0OjpXZWJJbnB1dEV2ZW50JiwgV2ViS2l0
OjpXZWJDdXJzb3JJbmZvJik7CisgICAgdmlydHVhbCBib29sIGhhbmRsZURyYWdTdGF0dXNVcGRh
dGUoV2ViS2l0OjpXZWJEcmFnU3RhdHVzLCBjb25zdCBXZWJLaXQ6OldlYkRyYWdEYXRhJiwgV2Vi
S2l0OjpXZWJEcmFnT3BlcmF0aW9uc01hc2ssIGNvbnN0IFdlYktpdDo6V2ViUG9pbnQmIHBvc2l0
aW9uLCBjb25zdCBXZWJLaXQ6OldlYlBvaW50JiBzY3JlZW5Qb3NpdGlvbik7CisgICAgdmlydHVh
bCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJLaXQ6OldlYlVSTFJlc3BvbnNlJikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqIGRhdGEsIGlu
dCBkYXRhTGVuZ3RoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZygpIHsg
fQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsTG9hZGluZyhjb25zdCBXZWJLaXQ6OldlYlVSTEVy
cm9yJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRpbmdGcmFtZVJlcXVlc3Qo
Y29uc3QgV2ViS2l0OjpXZWJVUkwmLCB2b2lkKiBub3RpZnlEYXRhKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRmFpbExvYWRpbmdGcmFtZVJlcXVlc3QoY29uc3QgV2ViS2l0OjpXZWJVUkwmLCB2
b2lkKiBub3RpZnlEYXRhLCBjb25zdCBXZWJLaXQ6OldlYlVSTEVycm9yJikgeyB9CisgICAgdmly
dHVhbCBib29sIGlzUGxhY2Vob2xkZXIoKSB7IHJldHVybiBmYWxzZTsgfQorCisgICAgLy8gV2Vi
RXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHVuc2lnbmVk
IHByZXBhcmVUZXh0dXJlKFdlYktpdDo6V2ViVGV4dHVyZVVwZGF0ZXImKSB7IHJldHVybiBtX2Nv
bG9yVGV4dHVyZTsgfQorICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJHcmFwaGljc0NvbnRleHQzRCog
Y29udGV4dCgpIHsgcmV0dXJuIG1fY29udGV4dDsgfQorCitwcml2YXRlOgorICAgIFRlc3RQbHVn
aW4oV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViUGx1Z2luUGFyYW1zJiwgV2Vi
VGVzdERlbGVnYXRlKik7CisKKyAgICBlbnVtIFByaW1pdGl2ZSB7CisgICAgICAgIFByaW1pdGl2
ZU5vbmUsCisgICAgICAgIFByaW1pdGl2ZVRyaWFuZ2xlCisgICAgfTsKKworICAgIHN0cnVjdCBT
Y2VuZSB7CisgICAgICAgIFByaW1pdGl2ZSBwcmltaXRpdmU7CisgICAgICAgIHVuc2lnbmVkIGJh
Y2tncm91bmRDb2xvclszXTsKKyAgICAgICAgdW5zaWduZWQgcHJpbWl0aXZlQ29sb3JbM107Cisg
ICAgICAgIGZsb2F0IG9wYWNpdHk7CisKKyAgICAgICAgdW5zaWduZWQgdmJvOworICAgICAgICB1
bnNpZ25lZCBwcm9ncmFtOworICAgICAgICBpbnQgY29sb3JMb2NhdGlvbjsKKyAgICAgICAgaW50
IHBvc2l0aW9uTG9jYXRpb247CisKKyAgICAgICAgU2NlbmUoKQorICAgICAgICAgICAgOiBwcmlt
aXRpdmUoUHJpbWl0aXZlTm9uZSkKKyAgICAgICAgICAgICwgb3BhY2l0eSgxLjBmKSAvLyBGdWxs
eSBvcGFxdWUuCisgICAgICAgICAgICAsIHZibygwKQorICAgICAgICAgICAgLCBwcm9ncmFtKDAp
CisgICAgICAgICAgICAsIGNvbG9yTG9jYXRpb24oLTEpCisgICAgICAgICAgICAsIHBvc2l0aW9u
TG9jYXRpb24oLTEpCisgICAgICAgIHsKKyAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclswXSA9
IGJhY2tncm91bmRDb2xvclsxXSA9IGJhY2tncm91bmRDb2xvclsyXSA9IDA7CisgICAgICAgICAg
ICBwcmltaXRpdmVDb2xvclswXSA9IHByaW1pdGl2ZUNvbG9yWzFdID0gcHJpbWl0aXZlQ29sb3Jb
Ml0gPSAwOworICAgICAgICB9CisgICAgfTsKKworICAgIC8vIEZ1bmN0aW9ucyBmb3IgcGFyc2lu
ZyBwbHVnaW4gcGFyYW1ldGVycy4KKyAgICBQcmltaXRpdmUgcGFyc2VQcmltaXRpdmUoY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmKTsKKyAgICB2b2lkIHBhcnNlQ29sb3IoY29uc3QgV2ViS2l0OjpX
ZWJTdHJpbmcmLCB1bnNpZ25lZCBjb2xvclszXSk7CisgICAgZmxvYXQgcGFyc2VPcGFjaXR5KGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CisgICAgYm9vbCBwYXJzZUJvb2xlYW4oY29uc3QgV2Vi
S2l0OjpXZWJTdHJpbmcmKTsKKworICAgIC8vIEZ1bmN0aW9ucyBmb3IgbG9hZGluZyBhbmQgZHJh
d2luZyBzY2VuZS4KKyAgICBib29sIGluaXRTY2VuZSgpOworICAgIHZvaWQgZHJhd1NjZW5lKCk7
CisgICAgdm9pZCBkZXN0cm95U2NlbmUoKTsKKyAgICBib29sIGluaXRQcm9ncmFtKCk7CisgICAg
Ym9vbCBpbml0UHJpbWl0aXZlKCk7CisgICAgdm9pZCBkcmF3UHJpbWl0aXZlKCk7CisgICAgdW5z
aWduZWQgbG9hZFNoYWRlcih1bnNpZ25lZCB0eXBlLCBjb25zdCBXVEY6OkNTdHJpbmcmIHNvdXJj
ZSk7CisgICAgdW5zaWduZWQgbG9hZFByb2dyYW0oY29uc3QgV1RGOjpDU3RyaW5nJiB2ZXJ0ZXhT
b3VyY2UsIGNvbnN0IFdURjo6Q1N0cmluZyYgZnJhZ21lbnRTb3VyY2UpOworCisgICAgV2ViS2l0
OjpXZWJGcmFtZSogbV9mcmFtZTsKKyAgICBXZWJUZXN0RGVsZWdhdGUqIG1fZGVsZWdhdGU7Cisg
ICAgV2ViS2l0OjpXZWJQbHVnaW5Db250YWluZXIqIG1fY29udGFpbmVyOworCisgICAgV2ViS2l0
OjpXZWJSZWN0IG1fcmVjdDsKKyAgICBXZWJLaXQ6OldlYkdyYXBoaWNzQ29udGV4dDNEKiBtX2Nv
bnRleHQ7CisgICAgdW5zaWduZWQgbV9jb2xvclRleHR1cmU7CisgICAgdW5zaWduZWQgbV9mcmFt
ZWJ1ZmZlcjsKKyAgICBTY2VuZSBtX3NjZW5lOworICAgIE93blB0cjxXZWJLaXQ6OldlYkV4dGVy
bmFsVGV4dHVyZUxheWVyPiBtX2xheWVyOworCisgICAgV2ViS2l0OjpXZWJQbHVnaW5Db250YWlu
ZXI6OlRvdWNoRXZlbnRSZXF1ZXN0VHlwZSBtX3RvdWNoRXZlbnRSZXF1ZXN0OworICAgIC8vIFJl
cXVlc3RzIHRvdWNoIGV2ZW50cyBmcm9tIHRoZSBXZWJQbHVnaW5Db250YWluZXJJbXBsIG11bHRp
cGxlIHRpbWVzIHRvIHRpY2tsZSB3ZWJraXQub3JnL2IvMTA4MzgxCisgICAgYm9vbCBtX3JlUmVx
dWVzdFRvdWNoRXZlbnRzOworICAgIGJvb2wgbV9wcmludEV2ZW50RGV0YWlsczsKKyAgICBib29s
IG1fcHJpbnRVc2VyR2VzdHVyZVN0YXR1czsKKyAgICBib29sIG1fY2FuUHJvY2Vzc0RyYWc7Cit9
OworCit9CisKKyNlbmRpZiAvLyBUZXN0UGx1Z2luX2gKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQbHVnaW4uY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFBsdWdpbi5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyMDMyOGJiM2UwOWNkY2U3NWMzMDg2
NDJjMWE2YzIzNjIwZDdhZmIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2Vi
VGVzdFBsdWdpbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NTcgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5E
IElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0g
KiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJXZWJUZXN0UGx1Z2luLmgiCi0KLSNpbmNsdWRl
ICJXZWJGcmFtZS5oIgotI2luY2x1ZGUgIldlYklucHV0RXZlbnQuaCIKLSNpbmNsdWRlICJXZWJL
aXQuaCIKLSNpbmNsdWRlICJXZWJQbHVnaW5Db250YWluZXIuaCIKLSNpbmNsdWRlICJXZWJQbHVn
aW5QYXJhbXMuaCIKLSNpbmNsdWRlICJXZWJUZXN0RGVsZWdhdGUuaCIKLSNpbmNsdWRlICJXZWJU
b3VjaFBvaW50LmgiCi0jaW5jbHVkZSA8cHVibGljL1BsYXRmb3JtLmg+Ci0jaW5jbHVkZSA8cHVi
bGljL1dlYkNvbXBvc2l0b3JTdXBwb3J0Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFs
VGV4dHVyZUxheWVyLmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkV4dGVybmFsVGV4dHVyZUxheWVy
Q2xpZW50Lmg+Ci0jaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+Ci0jaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNsdWRlIDx3dGYvU3RyaW5nRXh0cmFzLmg+Ci0jaW5j
bHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1u
YW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7Ci0KLW5hbWVzcGFjZSB7Ci0KLS8vIEdMZW51bSB2YWx1
ZXMgY29waWVkIGZyb20gZ2wyLmguCi0jZGVmaW5lIEdMX0ZBTFNFICAgICAgICAgICAgICAgICAg
MAotI2RlZmluZSBHTF9UUlVFICAgICAgICAgICAgICAgICAgIDEKLSNkZWZpbmUgR0xfT05FICAg
ICAgICAgICAgICAgICAgICAxCi0jZGVmaW5lIEdMX1RSSUFOR0xFUyAgICAgICAgICAgICAgMHgw
MDA0Ci0jZGVmaW5lIEdMX09ORV9NSU5VU19TUkNfQUxQSEEgICAgMHgwMzAzCi0jZGVmaW5lIEdM
X0RFUFRIX1RFU1QgICAgICAgICAgICAgMHgwQjcxCi0jZGVmaW5lIEdMX0JMRU5EICAgICAgICAg
ICAgICAgICAgMHgwQkUyCi0jZGVmaW5lIEdMX1NDSVNTT1JfVEVTVCAgICAgICAgICAgMHgwQjkw
Ci0jZGVmaW5lIEdMX1RFWFRVUkVfMkQgICAgICAgICAgICAgMHgwREUxCi0jZGVmaW5lIEdMX0ZM
T0FUICAgICAgICAgICAgICAgICAgMHgxNDA2Ci0jZGVmaW5lIEdMX1JHQkEgICAgICAgICAgICAg
ICAgICAgMHgxOTA4Ci0jZGVmaW5lIEdMX1VOU0lHTkVEX0JZVEUgICAgICAgICAgMHgxNDAxCi0j
ZGVmaW5lIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiAgICAgMHgyODAwCi0jZGVmaW5lIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiAgICAgMHgyODAxCi0jZGVmaW5lIEdMX1RFWFRVUkVfV1JBUF9TICAgICAg
ICAgMHgyODAyCi0jZGVmaW5lIEdMX1RFWFRVUkVfV1JBUF9UICAgICAgICAgMHgyODAzCi0jZGVm
aW5lIEdMX05FQVJFU1QgICAgICAgICAgICAgICAgMHgyNjAwCi0jZGVmaW5lIEdMX0NPTE9SX0JV
RkZFUl9CSVQgICAgICAgMHg0MDAwCi0jZGVmaW5lIEdMX0NMQU1QX1RPX0VER0UgICAgICAgICAg
MHg4MTJGCi0jZGVmaW5lIEdMX0FSUkFZX0JVRkZFUiAgICAgICAgICAgMHg4ODkyCi0jZGVmaW5l
IEdMX1NUQVRJQ19EUkFXICAgICAgICAgICAgMHg4OEU0Ci0jZGVmaW5lIEdMX0ZSQUdNRU5UX1NI
QURFUiAgICAgICAgMHg4QjMwCi0jZGVmaW5lIEdMX1ZFUlRFWF9TSEFERVIgICAgICAgICAgMHg4
QjMxCi0jZGVmaW5lIEdMX0NPTVBJTEVfU1RBVFVTICAgICAgICAgMHg4QjgxCi0jZGVmaW5lIEdM
X0xJTktfU1RBVFVTICAgICAgICAgICAgMHg4QjgyCi0jZGVmaW5lIEdMX0NPTE9SX0FUVEFDSE1F
TlQwICAgICAgMHg4Q0UwCi0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFICAgMHg4Q0Q1
Ci0jZGVmaW5lIEdMX0ZSQU1FQlVGRkVSICAgICAgICAgICAgMHg4RDQwCi0KLXZvaWQgcHJlbXVs
dGlwbHlBbHBoYShjb25zdCB1bnNpZ25lZCBjb2xvckluWzNdLCBmbG9hdCBhbHBoYSwgZmxvYXQg
Y29sb3JPdXRbNF0pCi17Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCAzOyArK2kpCi0gICAgICAg
IGNvbG9yT3V0W2ldID0gKGNvbG9ySW5baV0gLyAyNTUuMGYpICogYWxwaGE7Ci0KLSAgICBjb2xv
ck91dFszXSA9IGFscGhhOwotfQotCi1jb25zdCBjaGFyKiBwb2ludFN0YXRlKFdlYlRvdWNoUG9p
bnQ6OlN0YXRlIHN0YXRlKQotewotICAgIHN3aXRjaCAoc3RhdGUpIHsKLSAgICBjYXNlIFdlYlRv
dWNoUG9pbnQ6OlN0YXRlUmVsZWFzZWQ6Ci0gICAgICAgIHJldHVybiAiUmVsZWFzZWQiOwotICAg
IGNhc2UgV2ViVG91Y2hQb2ludDo6U3RhdGVQcmVzc2VkOgotICAgICAgICByZXR1cm4gIlByZXNz
ZWQiOwotICAgIGNhc2UgV2ViVG91Y2hQb2ludDo6U3RhdGVNb3ZlZDoKLSAgICAgICAgcmV0dXJu
ICJNb3ZlZCI7Ci0gICAgY2FzZSBXZWJUb3VjaFBvaW50OjpTdGF0ZUNhbmNlbGxlZDoKLSAgICAg
ICAgcmV0dXJuICJDYW5jZWxsZWQiOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIHJldHVybiAiVW5r
bm93biI7Ci0gICAgfQotCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KLXZvaWQgcHJpbnRUb3VjaExpc3QoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSwgY29u
c3QgV2ViVG91Y2hQb2ludCogcG9pbnRzLCBpbnQgbGVuZ3RoKQotewotICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgY2hhciBidWZmZXJbMTAwXTsKLSAgICAg
ICAgc25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgIiogJWQsICVkOiAlc1xuIiwgcG9p
bnRzW2ldLnBvc2l0aW9uLngsIHBvaW50c1tpXS5wb3NpdGlvbi55LCBwb2ludFN0YXRlKHBvaW50
c1tpXS5zdGF0ZSkpOwotICAgICAgICBkZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKGJ1ZmZlcik7Ci0g
ICAgfQotfQotCi12b2lkIHByaW50RXZlbnREZXRhaWxzKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdh
dGUsIGNvbnN0IFdlYklucHV0RXZlbnQmIGV2ZW50KQotewotICAgIGlmIChXZWJJbnB1dEV2ZW50
Ojppc1RvdWNoRXZlbnRUeXBlKGV2ZW50LnR5cGUpKSB7Ci0gICAgICAgIGNvbnN0IFdlYlRvdWNo
RXZlbnQmIHRvdWNoID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCY+KGV2ZW50KTsK
LSAgICAgICAgcHJpbnRUb3VjaExpc3QoZGVsZWdhdGUsIHRvdWNoLnRvdWNoZXMsIHRvdWNoLnRv
dWNoZXNMZW5ndGgpOwotICAgICAgICBwcmludFRvdWNoTGlzdChkZWxlZ2F0ZSwgdG91Y2guY2hh
bmdlZFRvdWNoZXMsIHRvdWNoLmNoYW5nZWRUb3VjaGVzTGVuZ3RoKTsKLSAgICAgICAgcHJpbnRU
b3VjaExpc3QoZGVsZWdhdGUsIHRvdWNoLnRhcmdldFRvdWNoZXMsIHRvdWNoLnRhcmdldFRvdWNo
ZXNMZW5ndGgpOwotICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNNb3VzZUV2ZW50VHlw
ZShldmVudC50eXBlKSB8fCBldmVudC50eXBlID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwp
IHsKLSAgICAgICAgY29uc3QgV2ViTW91c2VFdmVudCYgbW91c2UgPSBzdGF0aWNfY2FzdDxjb25z
dCBXZWJNb3VzZUV2ZW50Jj4oZXZlbnQpOwotICAgICAgICBjaGFyIGJ1ZmZlclsxMDBdOwotICAg
ICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiKiAlZCwgJWRcbiIsIG1vdXNl
LngsIG1vdXNlLnkpOwotICAgICAgICBkZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKGJ1ZmZlcik7Ci0g
ICAgfSBlbHNlIGlmIChXZWJJbnB1dEV2ZW50Ojppc0dlc3R1cmVFdmVudFR5cGUoZXZlbnQudHlw
ZSkpIHsKLSAgICAgICAgY29uc3QgV2ViR2VzdHVyZUV2ZW50JiBnZXN0dXJlID0gc3RhdGljX2Nh
c3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Jj4oZXZlbnQpOwotICAgICAgICBjaGFyIGJ1ZmZlclsx
MDBdOwotICAgICAgICBzbnByaW50ZihidWZmZXIsIHNpemVvZihidWZmZXIpLCAiKiAlZCwgJWRc
biIsIGdlc3R1cmUueCwgZ2VzdHVyZS55KTsKLSAgICAgICAgZGVsZWdhdGUtPnByaW50TWVzc2Fn
ZShidWZmZXIpOwotICAgIH0KLX0KLQotV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVx
dWVzdFR5cGUgcGFyc2VUb3VjaEV2ZW50UmVxdWVzdFR5cGUoY29uc3QgV2ViU3RyaW5nJiBzdHJp
bmcpCi17Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBXZWJTdHJpbmcsIGtQcmltaXRp
dmVSYXcsIChXZWJTdHJpbmc6OmZyb21VVEY4KCJyYXciKSkpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoY29uc3QgV2ViU3RyaW5nLCBrUHJpbWl0aXZlU3ludGhldGljLCAoV2ViU3RyaW5nOjpm
cm9tVVRGOCgic3ludGhldGljIikpKTsKLQotICAgIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVJh
dykKLSAgICAgICAgcmV0dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RU
eXBlUmF3OwotICAgIGlmIChzdHJpbmcgPT0ga1ByaW1pdGl2ZVN5bnRoZXRpYykKLSAgICAgICAg
cmV0dXJuIFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RUeXBlU3ludGhlc2l6
ZWRNb3VzZTsKLSAgICByZXR1cm4gV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVz
dFR5cGVOb25lOwotfQotCi1jbGFzcyBXZWJUZXN0UGx1Z2luSW1wbCA6IHB1YmxpYyBXZWJUZXN0
UGx1Z2luLCBwdWJsaWMgV2ViRXh0ZXJuYWxUZXh0dXJlTGF5ZXJDbGllbnQgewotcHVibGljOgot
ICAgIFdlYlRlc3RQbHVnaW5JbXBsKFdlYkZyYW1lKiwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJiwg
V2ViVGVzdERlbGVnYXRlKik7Ci0gICAgdmlydHVhbCB+V2ViVGVzdFBsdWdpbkltcGwoKTsKLQot
ICAgIC8vIFdlYlBsdWdpbiBtZXRob2RzOgotICAgIHZpcnR1YWwgYm9vbCBpbml0aWFsaXplKFdl
YlBsdWdpbkNvbnRhaW5lciopOwotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCk7Ci0gICAgdmly
dHVhbCBOUE9iamVjdCogc2NyaXB0YWJsZU9iamVjdCgpIHsgcmV0dXJuIDA7IH0KLSAgICB2aXJ0
dWFsIGJvb2wgY2FuUHJvY2Vzc0RyYWcoKSBjb25zdCB7IHJldHVybiBtX2NhblByb2Nlc3NEcmFn
OyB9Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50KFdlYkNhbnZhcyosIGNvbnN0IFdlYlJlY3QmKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2VvbWV0cnkoY29uc3QgV2ViUmVjdCYgZnJhbWVS
ZWN0LCBjb25zdCBXZWJSZWN0JiBjbGlwUmVjdCwgY29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JiBj
dXRPdXRzUmVjdHMsIGJvb2wgaXNWaXNpYmxlKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRm9j
dXMoYm9vbCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZVZpc2liaWxpdHkoYm9vbCkgeyB9
Ci0gICAgdmlydHVhbCBib29sIGFjY2VwdHNJbnB1dEV2ZW50cygpIHsgcmV0dXJuIHRydWU7IH0K
LSAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50Jiwg
V2ViQ3Vyc29ySW5mbyYpOwotICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVEcmFnU3RhdHVzVXBkYXRl
KFdlYkRyYWdTdGF0dXMsIGNvbnN0IFdlYkRyYWdEYXRhJiwgV2ViRHJhZ09wZXJhdGlvbnNNYXNr
LCBjb25zdCBXZWJQb2ludCYgcG9zaXRpb24sIGNvbnN0IFdlYlBvaW50JiBzY3JlZW5Qb3NpdGlv
bik7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBXZWJVUkxSZXNw
b25zZSYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBk
YXRhLCBpbnQgZGF0YUxlbmd0aCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRp
bmcoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbExvYWRpbmcoY29uc3QgV2ViVVJMRXJy
b3ImKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZGluZ0ZyYW1lUmVxdWVzdChj
b25zdCBXZWJVUkwmLCB2b2lkKiBub3RpZnlEYXRhKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlk
RmFpbExvYWRpbmdGcmFtZVJlcXVlc3QoY29uc3QgV2ViVVJMJiwgdm9pZCogbm90aWZ5RGF0YSwg
Y29uc3QgV2ViVVJMRXJyb3ImKSB7IH0KLSAgICB2aXJ0dWFsIGJvb2wgaXNQbGFjZWhvbGRlcigp
IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICAvLyBXZWJFeHRlcm5hbFRleHR1cmVMYXllckNsaWVu
dCBtZXRob2RzOgotICAgIHZpcnR1YWwgdW5zaWduZWQgcHJlcGFyZVRleHR1cmUoV2ViVGV4dHVy
ZVVwZGF0ZXImKSB7IHJldHVybiBtX2NvbG9yVGV4dHVyZTsgfQotICAgIHZpcnR1YWwgV2ViR3Jh
cGhpY3NDb250ZXh0M0QqIGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQ7IH0KLQotcHJpdmF0
ZToKLSAgICBlbnVtIFByaW1pdGl2ZSB7Ci0gICAgICAgIFByaW1pdGl2ZU5vbmUsCi0gICAgICAg
IFByaW1pdGl2ZVRyaWFuZ2xlCi0gICAgfTsKLQotICAgIHN0cnVjdCBTY2VuZSB7Ci0gICAgICAg
IFByaW1pdGl2ZSBwcmltaXRpdmU7Ci0gICAgICAgIHVuc2lnbmVkIGJhY2tncm91bmRDb2xvclsz
XTsKLSAgICAgICAgdW5zaWduZWQgcHJpbWl0aXZlQ29sb3JbM107Ci0gICAgICAgIGZsb2F0IG9w
YWNpdHk7Ci0KLSAgICAgICAgdW5zaWduZWQgdmJvOwotICAgICAgICB1bnNpZ25lZCBwcm9ncmFt
OwotICAgICAgICBpbnQgY29sb3JMb2NhdGlvbjsKLSAgICAgICAgaW50IHBvc2l0aW9uTG9jYXRp
b247Ci0KLSAgICAgICAgU2NlbmUoKQotICAgICAgICAgICAgOiBwcmltaXRpdmUoUHJpbWl0aXZl
Tm9uZSkKLSAgICAgICAgICAgICwgb3BhY2l0eSgxLjBmKSAvLyBGdWxseSBvcGFxdWUuCi0gICAg
ICAgICAgICAsIHZibygwKQotICAgICAgICAgICAgLCBwcm9ncmFtKDApCi0gICAgICAgICAgICAs
IGNvbG9yTG9jYXRpb24oLTEpCi0gICAgICAgICAgICAsIHBvc2l0aW9uTG9jYXRpb24oLTEpCi0g
ICAgICAgIHsKLSAgICAgICAgICAgIGJhY2tncm91bmRDb2xvclswXSA9IGJhY2tncm91bmRDb2xv
clsxXSA9IGJhY2tncm91bmRDb2xvclsyXSA9IDA7Ci0gICAgICAgICAgICBwcmltaXRpdmVDb2xv
clswXSA9IHByaW1pdGl2ZUNvbG9yWzFdID0gcHJpbWl0aXZlQ29sb3JbMl0gPSAwOwotICAgICAg
ICB9Ci0gICAgfTsKLQotICAgIC8vIEZ1bmN0aW9ucyBmb3IgcGFyc2luZyBwbHVnaW4gcGFyYW1l
dGVycy4KLSAgICBQcmltaXRpdmUgcGFyc2VQcmltaXRpdmUoY29uc3QgV2ViU3RyaW5nJik7Ci0g
ICAgdm9pZCBwYXJzZUNvbG9yKGNvbnN0IFdlYlN0cmluZyYsIHVuc2lnbmVkIGNvbG9yWzNdKTsK
LSAgICBmbG9hdCBwYXJzZU9wYWNpdHkoY29uc3QgV2ViU3RyaW5nJik7Ci0gICAgYm9vbCBwYXJz
ZUJvb2xlYW4oY29uc3QgV2ViU3RyaW5nJik7Ci0KLSAgICAvLyBGdW5jdGlvbnMgZm9yIGxvYWRp
bmcgYW5kIGRyYXdpbmcgc2NlbmUuCi0gICAgYm9vbCBpbml0U2NlbmUoKTsKLSAgICB2b2lkIGRy
YXdTY2VuZSgpOwotICAgIHZvaWQgZGVzdHJveVNjZW5lKCk7Ci0gICAgYm9vbCBpbml0UHJvZ3Jh
bSgpOwotICAgIGJvb2wgaW5pdFByaW1pdGl2ZSgpOwotICAgIHZvaWQgZHJhd1ByaW1pdGl2ZSgp
OwotICAgIHVuc2lnbmVkIGxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwgY29uc3QgV1RGOjpDU3Ry
aW5nJiBzb3VyY2UpOwotICAgIHVuc2lnbmVkIGxvYWRQcm9ncmFtKGNvbnN0IFdURjo6Q1N0cmlu
ZyYgdmVydGV4U291cmNlLCBjb25zdCBXVEY6OkNTdHJpbmcmIGZyYWdtZW50U291cmNlKTsKLQot
ICAgIFdlYkZyYW1lKiBtX2ZyYW1lOwotICAgIFdlYlRlc3REZWxlZ2F0ZSogbV9kZWxlZ2F0ZTsK
LSAgICBXZWJQbHVnaW5Db250YWluZXIqIG1fY29udGFpbmVyOwotCi0gICAgV2ViUmVjdCBtX3Jl
Y3Q7Ci0gICAgV2ViR3JhcGhpY3NDb250ZXh0M0QqIG1fY29udGV4dDsKLSAgICB1bnNpZ25lZCBt
X2NvbG9yVGV4dHVyZTsKLSAgICB1bnNpZ25lZCBtX2ZyYW1lYnVmZmVyOwotICAgIFNjZW5lIG1f
c2NlbmU7Ci0gICAgT3duUHRyPFdlYkV4dGVybmFsVGV4dHVyZUxheWVyPiBtX2xheWVyOwotCi0g
ICAgV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGUgbV90b3VjaEV2ZW50
UmVxdWVzdDsKLSAgICAvLyBSZXF1ZXN0cyB0b3VjaCBldmVudHMgZnJvbSB0aGUgV2ViUGx1Z2lu
Q29udGFpbmVySW1wbCBtdWx0aXBsZSB0aW1lcyB0byB0aWNrbGUgd2Via2l0Lm9yZy9iLzEwODM4
MQotICAgIGJvb2wgbV9yZVJlcXVlc3RUb3VjaEV2ZW50czsKLSAgICBib29sIG1fcHJpbnRFdmVu
dERldGFpbHM7Ci0gICAgYm9vbCBtX3ByaW50VXNlckdlc3R1cmVTdGF0dXM7Ci0gICAgYm9vbCBt
X2NhblByb2Nlc3NEcmFnOwotfTsKLQotV2ViVGVzdFBsdWdpbkltcGw6OldlYlRlc3RQbHVnaW5J
bXBsKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJiBwYXJhbXMsIFdlYlRl
c3REZWxlZ2F0ZSogZGVsZWdhdGUpCi0gICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV9kZWxl
Z2F0ZShkZWxlZ2F0ZSkKLSAgICAsIG1fY29udGFpbmVyKDApCi0gICAgLCBtX2NvbnRleHQoMCkK
LSAgICAsIG1fdG91Y2hFdmVudFJlcXVlc3QoV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50
UmVxdWVzdFR5cGVOb25lKQotICAgICwgbV9yZVJlcXVlc3RUb3VjaEV2ZW50cyhmYWxzZSkKLSAg
ICAsIG1fcHJpbnRFdmVudERldGFpbHMoZmFsc2UpCi0gICAgLCBtX3ByaW50VXNlckdlc3R1cmVT
dGF0dXMoZmFsc2UpCi0gICAgLCBtX2NhblByb2Nlc3NEcmFnKGZhbHNlKQotewotICAgIHN0YXRp
YyBjb25zdCBXZWJTdHJpbmcga0F0dHJpYnV0ZVByaW1pdGl2ZSA9IFdlYlN0cmluZzo6ZnJvbVVU
RjgoInByaW1pdGl2ZSIpOwotICAgIHN0YXRpYyBjb25zdCBXZWJTdHJpbmcga0F0dHJpYnV0ZUJh
Y2tncm91bmRDb2xvciA9IFdlYlN0cmluZzo6ZnJvbVVURjgoImJhY2tncm91bmQtY29sb3IiKTsK
LSAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5nIGtBdHRyaWJ1dGVQcmltaXRpdmVDb2xvciA9IFdl
YlN0cmluZzo6ZnJvbVVURjgoInByaW1pdGl2ZS1jb2xvciIpOwotICAgIHN0YXRpYyBjb25zdCBX
ZWJTdHJpbmcga0F0dHJpYnV0ZU9wYWNpdHkgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJvcGFjaXR5
Iik7Ci0gICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrQXR0cmlidXRlQWNjZXB0c1RvdWNoID0g
V2ViU3RyaW5nOjpmcm9tVVRGOCgiYWNjZXB0cy10b3VjaCIpOwotICAgIHN0YXRpYyBjb25zdCBX
ZWJTdHJpbmcga0F0dHJpYnV0ZVJlUmVxdWVzdFRvdWNoRXZlbnRzID0gV2ViU3RyaW5nOjpmcm9t
VVRGOCgicmUtcmVxdWVzdC10b3VjaCIpOwotICAgIHN0YXRpYyBjb25zdCBXZWJTdHJpbmcga0F0
dHJpYnV0ZVByaW50RXZlbnREZXRhaWxzID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgicHJpbnQtZXZl
bnQtZGV0YWlscyIpOwotICAgIHN0YXRpYyBjb25zdCBXZWJTdHJpbmcga0F0dHJpYnV0ZUNhblBy
b2Nlc3NEcmFnID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgiY2FuLXByb2Nlc3MtZHJhZyIpOwotICAg
IHN0YXRpYyBjb25zdCBXZWJTdHJpbmcga0F0dHJpYnV0ZVByaW50VXNlckdlc3R1cmVTdGF0dXMg
PSBXZWJTdHJpbmc6OmZyb21VVEY4KCJwcmludC11c2VyLWdlc3R1cmUtc3RhdHVzIik7Ci0KLSAg
ICBBU1NFUlQocGFyYW1zLmF0dHJpYnV0ZU5hbWVzLnNpemUoKSA9PSBwYXJhbXMuYXR0cmlidXRl
VmFsdWVzLnNpemUoKSk7Ci0gICAgc2l6ZV90IHNpemUgPSBwYXJhbXMuYXR0cmlidXRlTmFtZXMu
c2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKSB7Ci0gICAgICAg
IGNvbnN0IFdlYlN0cmluZyYgYXR0cmlidXRlTmFtZSA9IHBhcmFtcy5hdHRyaWJ1dGVOYW1lc1tp
XTsKLSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBhdHRyaWJ1dGVWYWx1ZSA9IHBhcmFtcy5hdHRy
aWJ1dGVWYWx1ZXNbaV07Ci0KLSAgICAgICAgaWYgKGF0dHJpYnV0ZU5hbWUgPT0ga0F0dHJpYnV0
ZVByaW1pdGl2ZSkKLSAgICAgICAgICAgIG1fc2NlbmUucHJpbWl0aXZlID0gcGFyc2VQcmltaXRp
dmUoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGtB
dHRyaWJ1dGVCYWNrZ3JvdW5kQ29sb3IpCi0gICAgICAgICAgICBwYXJzZUNvbG9yKGF0dHJpYnV0
ZVZhbHVlLCBtX3NjZW5lLmJhY2tncm91bmRDb2xvcik7Ci0gICAgICAgIGVsc2UgaWYgKGF0dHJp
YnV0ZU5hbWUgPT0ga0F0dHJpYnV0ZVByaW1pdGl2ZUNvbG9yKQotICAgICAgICAgICAgcGFyc2VD
b2xvcihhdHRyaWJ1dGVWYWx1ZSwgbV9zY2VuZS5wcmltaXRpdmVDb2xvcik7Ci0gICAgICAgIGVs
c2UgaWYgKGF0dHJpYnV0ZU5hbWUgPT0ga0F0dHJpYnV0ZU9wYWNpdHkpCi0gICAgICAgICAgICBt
X3NjZW5lLm9wYWNpdHkgPSBwYXJzZU9wYWNpdHkoYXR0cmlidXRlVmFsdWUpOwotICAgICAgICBl
bHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGtBdHRyaWJ1dGVBY2NlcHRzVG91Y2gpCi0gICAgICAg
ICAgICBtX3RvdWNoRXZlbnRSZXF1ZXN0ID0gcGFyc2VUb3VjaEV2ZW50UmVxdWVzdFR5cGUoYXR0
cmlidXRlVmFsdWUpOwotICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGtBdHRyaWJ1
dGVSZVJlcXVlc3RUb3VjaEV2ZW50cykKLSAgICAgICAgICAgIG1fcmVSZXF1ZXN0VG91Y2hFdmVu
dHMgPSBwYXJzZUJvb2xlYW4oYXR0cmlidXRlVmFsdWUpOwotICAgICAgICBlbHNlIGlmIChhdHRy
aWJ1dGVOYW1lID09IGtBdHRyaWJ1dGVQcmludEV2ZW50RGV0YWlscykKLSAgICAgICAgICAgIG1f
cHJpbnRFdmVudERldGFpbHMgPSBwYXJzZUJvb2xlYW4oYXR0cmlidXRlVmFsdWUpOwotICAgICAg
ICBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGtBdHRyaWJ1dGVDYW5Qcm9jZXNzRHJhZykKLSAg
ICAgICAgICAgIG1fY2FuUHJvY2Vzc0RyYWcgPSBwYXJzZUJvb2xlYW4oYXR0cmlidXRlVmFsdWUp
OwotICAgICAgICBlbHNlIGlmIChhdHRyaWJ1dGVOYW1lID09IGtBdHRyaWJ1dGVQcmludFVzZXJH
ZXN0dXJlU3RhdHVzKQotICAgICAgICAgICAgbV9wcmludFVzZXJHZXN0dXJlU3RhdHVzID0gcGFy
c2VCb29sZWFuKGF0dHJpYnV0ZVZhbHVlKTsKLSAgICB9Ci19Ci0KLVdlYlRlc3RQbHVnaW5JbXBs
Ojp+V2ViVGVzdFBsdWdpbkltcGwoKQotewotfQotCi1ib29sIFdlYlRlc3RQbHVnaW5JbXBsOjpp
bml0aWFsaXplKFdlYlBsdWdpbkNvbnRhaW5lciogY29udGFpbmVyKQotewotICAgIFdlYkdyYXBo
aWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOwotICAgIG1fY29udGV4dCA9IFBsYXRmb3Jt
OjpjdXJyZW50KCktPmNyZWF0ZU9mZnNjcmVlbkdyYXBoaWNzQ29udGV4dDNEKGF0dHJzKTsKLSAg
ICBpZiAoIW1fY29udGV4dCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFtX2Nv
bnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBpZiAoIWluaXRTY2VuZSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2xheWVy
ID0gYWRvcHRQdHIoUGxhdGZvcm06OmN1cnJlbnQoKS0+Y29tcG9zaXRvclN1cHBvcnQoKS0+Y3Jl
YXRlRXh0ZXJuYWxUZXh0dXJlTGF5ZXIodGhpcykpOwotICAgIG1fY29udGFpbmVyID0gY29udGFp
bmVyOwotICAgIG1fY29udGFpbmVyLT5zZXRXZWJMYXllcihtX2xheWVyLT5sYXllcigpKTsKLSAg
ICBpZiAobV9yZVJlcXVlc3RUb3VjaEV2ZW50cykgewotICAgICAgICBtX2NvbnRhaW5lci0+cmVx
dWVzdFRvdWNoRXZlbnRUeXBlKFdlYlBsdWdpbkNvbnRhaW5lcjo6VG91Y2hFdmVudFJlcXVlc3RU
eXBlU3ludGhlc2l6ZWRNb3VzZSk7Ci0gICAgICAgIG1fY29udGFpbmVyLT5yZXF1ZXN0VG91Y2hF
dmVudFR5cGUoV2ViUGx1Z2luQ29udGFpbmVyOjpUb3VjaEV2ZW50UmVxdWVzdFR5cGVSYXcpOwot
ICAgIH0KLSAgICBtX2NvbnRhaW5lci0+cmVxdWVzdFRvdWNoRXZlbnRUeXBlKG1fdG91Y2hFdmVu
dFJlcXVlc3QpOwotICAgIG1fY29udGFpbmVyLT5zZXRXYW50c1doZWVsRXZlbnRzKHRydWUpOwot
ICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFdlYlRlc3RQbHVnaW5JbXBsOjpkZXN0cm95KCkK
LXsKLSAgICBpZiAobV9jb250YWluZXIpCi0gICAgICAgIG1fY29udGFpbmVyLT5zZXRXZWJMYXll
cigwKTsKLSAgICBtX2xheWVyLmNsZWFyKCk7Ci0gICAgZGVzdHJveVNjZW5lKCk7Ci0KLSAgICBk
ZWxldGUgbV9jb250ZXh0OwotICAgIG1fY29udGV4dCA9IDA7Ci0KLSAgICBtX2NvbnRhaW5lciA9
IDA7Ci0gICAgbV9mcmFtZSA9IDA7Ci19Ci0KLXZvaWQgV2ViVGVzdFBsdWdpbkltcGw6OnVwZGF0
ZUdlb21ldHJ5KGNvbnN0IFdlYlJlY3QmIGZyYW1lUmVjdCwgY29uc3QgV2ViUmVjdCYgY2xpcFJl
Y3QsIGNvbnN0IFdlYlZlY3RvcjxXZWJSZWN0PiYgY3V0T3V0c1JlY3RzLCBib29sIGlzVmlzaWJs
ZSkKLXsKLSAgICBpZiAoY2xpcFJlY3QgPT0gbV9yZWN0KQotICAgICAgICByZXR1cm47Ci0gICAg
bV9yZWN0ID0gY2xpcFJlY3Q7Ci0gICAgaWYgKG1fcmVjdC5pc0VtcHR5KCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fY29udGV4dC0+cmVzaGFwZShtX3JlY3Qud2lkdGgsIG1fcmVjdC5oZWln
aHQpOwotICAgIG1fY29udGV4dC0+dmlld3BvcnQoMCwgMCwgbV9yZWN0LndpZHRoLCBtX3JlY3Qu
aGVpZ2h0KTsKLQotICAgIG1fY29udGV4dC0+YmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbV9j
b2xvclRleHR1cmUpOwotICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJE
LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIG1fY29udGV4dC0+dGV4
UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJF
U1QpOwotICAgIG1fY29udGV4dC0+dGV4UGFyYW1ldGVyaShHTF9URVhUVVJFXzJELCBHTF9URVhU
VVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgbV9jb250ZXh0LT50ZXhQYXJhbWV0
ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsK
LSAgICBtX2NvbnRleHQtPnRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwgR0xfUkdCQSwgbV9y
ZWN0LndpZHRoLCBtX3JlY3QuaGVpZ2h0LCAwLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAw
KTsKLSAgICBtX2NvbnRleHQtPmJpbmRGcmFtZWJ1ZmZlcihHTF9GUkFNRUJVRkZFUiwgbV9mcmFt
ZWJ1ZmZlcik7Ci0gICAgbV9jb250ZXh0LT5mcmFtZWJ1ZmZlclRleHR1cmUyRChHTF9GUkFNRUJV
RkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsIEdMX1RFWFRVUkVfMkQsIG1fY29sb3JUZXh0dXJl
LCAwKTsKLQotICAgIGRyYXdTY2VuZSgpOwotCi0gICAgbV9jb250ZXh0LT5mbHVzaCgpOwotICAg
IG1fbGF5ZXItPmxheWVyKCktPmludmFsaWRhdGUoKTsKLX0KLQotV2ViVGVzdFBsdWdpbkltcGw6
OlByaW1pdGl2ZSBXZWJUZXN0UGx1Z2luSW1wbDo6cGFyc2VQcmltaXRpdmUoY29uc3QgV2ViU3Ry
aW5nJiBzdHJpbmcpCi17Ci0gICAgc3RhdGljIGNvbnN0IFdlYlN0cmluZyBrUHJpbWl0aXZlTm9u
ZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoIm5vbmUiKTsKLSAgICBzdGF0aWMgY29uc3QgV2ViU3Ry
aW5nIGtQcmltaXRpdmVUcmlhbmdsZSA9IFdlYlN0cmluZzo6ZnJvbVVURjgoInRyaWFuZ2xlIik7
Ci0KLSAgICBQcmltaXRpdmUgcHJpbWl0aXZlID0gUHJpbWl0aXZlTm9uZTsKLSAgICBpZiAoc3Ry
aW5nID09IGtQcmltaXRpdmVOb25lKQotICAgICAgICBwcmltaXRpdmUgPSBQcmltaXRpdmVOb25l
OwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSBrUHJpbWl0aXZlVHJpYW5nbGUpCi0gICAgICAgIHBy
aW1pdGl2ZSA9IFByaW1pdGl2ZVRyaWFuZ2xlOwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIHByaW1pdGl2ZTsKLX0KLQotLy8gRklYTUU6IFRoaXMg
bWV0aG9kIHNob3VsZCBhbHJlYWR5IGV4aXN0LiBVc2UgaXQuCi0vLyBGb3Igbm93IGp1c3QgcGFy
c2UgcHJpbWFyeSBjb2xvcnMuCi12b2lkIFdlYlRlc3RQbHVnaW5JbXBsOjpwYXJzZUNvbG9yKGNv
bnN0IFdlYlN0cmluZyYgc3RyaW5nLCB1bnNpZ25lZCBjb2xvclszXSkKLXsKLSAgICBjb2xvclsw
XSA9IGNvbG9yWzFdID0gY29sb3JbMl0gPSAwOwotICAgIGlmIChzdHJpbmcgPT0gImJsYWNrIikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKHN0cmluZyA9PSAicmVkIikKLSAgICAgICAgY29s
b3JbMF0gPSAyNTU7Ci0gICAgZWxzZSBpZiAoc3RyaW5nID09ICJncmVlbiIpCi0gICAgICAgIGNv
bG9yWzFdID0gMjU1OwotICAgIGVsc2UgaWYgKHN0cmluZyA9PSAiYmx1ZSIpCi0gICAgICAgIGNv
bG9yWzJdID0gMjU1OwotICAgIGVsc2UKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci19
Ci0KLWZsb2F0IFdlYlRlc3RQbHVnaW5JbXBsOjpwYXJzZU9wYWNpdHkoY29uc3QgV2ViU3RyaW5n
JiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0PihhdG9mKHN0cmluZy51
dGY4KCkuZGF0YSgpKSk7Ci19Ci0KLWJvb2wgV2ViVGVzdFBsdWdpbkltcGw6OnBhcnNlQm9vbGVh
bihjb25zdCBXZWJTdHJpbmcmIHN0cmluZykKLXsKLSAgICBzdGF0aWMgY29uc3QgV2ViU3RyaW5n
IGtQcmltaXRpdmVUcnVlID0gV2ViU3RyaW5nOjpmcm9tVVRGOCgidHJ1ZSIpOwotICAgIHJldHVy
biBzdHJpbmcgPT0ga1ByaW1pdGl2ZVRydWU7Ci19Ci0KLWJvb2wgV2ViVGVzdFBsdWdpbkltcGw6
OmluaXRTY2VuZSgpCi17Ci0gICAgZmxvYXQgY29sb3JbNF07Ci0gICAgcHJlbXVsdGlwbHlBbHBo
YShtX3NjZW5lLmJhY2tncm91bmRDb2xvciwgbV9zY2VuZS5vcGFjaXR5LCBjb2xvcik7Ci0KLSAg
ICBtX2NvbG9yVGV4dHVyZSA9IG1fY29udGV4dC0+Y3JlYXRlVGV4dHVyZSgpOwotICAgIG1fZnJh
bWVidWZmZXIgPSBtX2NvbnRleHQtPmNyZWF0ZUZyYW1lYnVmZmVyKCk7Ci0KLSAgICBtX2NvbnRl
eHQtPnZpZXdwb3J0KDAsIDAsIG1fcmVjdC53aWR0aCwgbV9yZWN0LmhlaWdodCk7Ci0gICAgbV9j
b250ZXh0LT5kaXNhYmxlKEdMX0RFUFRIX1RFU1QpOwotICAgIG1fY29udGV4dC0+ZGlzYWJsZShH
TF9TQ0lTU09SX1RFU1QpOwotCi0gICAgbV9jb250ZXh0LT5jbGVhckNvbG9yKGNvbG9yWzBdLCBj
b2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdKTsKLQotICAgIG1fY29udGV4dC0+ZW5hYmxlKEdM
X0JMRU5EKTsKLSAgICBtX2NvbnRleHQtPmJsZW5kRnVuYyhHTF9PTkUsIEdMX09ORV9NSU5VU19T
UkNfQUxQSEEpOwotCi0gICAgcmV0dXJuIG1fc2NlbmUucHJpbWl0aXZlICE9IFByaW1pdGl2ZU5v
bmUgPyBpbml0UHJvZ3JhbSgpICYmIGluaXRQcmltaXRpdmUoKSA6IHRydWU7Ci19Ci0KLXZvaWQg
V2ViVGVzdFBsdWdpbkltcGw6OmRyYXdTY2VuZSgpCi17Ci0gICAgbV9jb250ZXh0LT52aWV3cG9y
dCgwLCAwLCBtX3JlY3Qud2lkdGgsIG1fcmVjdC5oZWlnaHQpOwotICAgIG1fY29udGV4dC0+Y2xl
YXIoR0xfQ09MT1JfQlVGRkVSX0JJVCk7Ci0KLSAgICBpZiAobV9zY2VuZS5wcmltaXRpdmUgIT0g
UHJpbWl0aXZlTm9uZSkKLSAgICAgICAgZHJhd1ByaW1pdGl2ZSgpOwotfQotCi12b2lkIFdlYlRl
c3RQbHVnaW5JbXBsOjpkZXN0cm95U2NlbmUoKQotewotICAgIGlmIChtX3NjZW5lLnByb2dyYW0p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVQcm9ncmFtKG1fc2NlbmUucHJvZ3JhbSk7Ci0g
ICAgICAgIG1fc2NlbmUucHJvZ3JhbSA9IDA7Ci0gICAgfQotICAgIGlmIChtX3NjZW5lLnZibykg
ewotICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZUJ1ZmZlcihtX3NjZW5lLnZibyk7Ci0gICAgICAg
IG1fc2NlbmUudmJvID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9mcmFtZWJ1ZmZlcikgewotICAg
ICAgICBtX2NvbnRleHQtPmRlbGV0ZUZyYW1lYnVmZmVyKG1fZnJhbWVidWZmZXIpOwotICAgICAg
ICBtX2ZyYW1lYnVmZmVyID0gMDsKLSAgICB9Ci0KLSAgICBpZiAobV9jb2xvclRleHR1cmUpIHsK
LSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVUZXh0dXJlKG1fY29sb3JUZXh0dXJlKTsKLSAgICAg
ICAgbV9jb2xvclRleHR1cmUgPSAwOwotICAgIH0KLX0KLQotYm9vbCBXZWJUZXN0UGx1Z2luSW1w
bDo6aW5pdFByb2dyYW0oKQotewotICAgIGNvbnN0IENTdHJpbmcgdmVydGV4U291cmNlKAotICAg
ICAgICAiYXR0cmlidXRlIHZlYzQgcG9zaXRpb247ICBcbiIKLSAgICAgICAgInZvaWQgbWFpbigp
IHsgICAgICAgICAgICAgXG4iCi0gICAgICAgICIgIGdsX1Bvc2l0aW9uID0gcG9zaXRpb247IFxu
IgotICAgICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICApOwotCi0gICAg
Y29uc3QgQ1N0cmluZyBmcmFnbWVudFNvdXJjZSgKLSAgICAgICAgInByZWNpc2lvbiBtZWRpdW1w
IGZsb2F0OyBcbiIKLSAgICAgICAgInVuaWZvcm0gdmVjNCBjb2xvcjsgICAgICBcbiIKLSAgICAg
ICAgInZvaWQgbWFpbigpIHsgICAgICAgICAgICBcbiIKLSAgICAgICAgIiAgZ2xfRnJhZ0NvbG9y
ID0gY29sb3I7ICBcbiIKLSAgICAgICAgIn0gICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAg
ICApOwotCi0gICAgbV9zY2VuZS5wcm9ncmFtID0gbG9hZFByb2dyYW0odmVydGV4U291cmNlLCBm
cmFnbWVudFNvdXJjZSk7Ci0gICAgaWYgKCFtX3NjZW5lLnByb2dyYW0pCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLQotICAgIG1fc2NlbmUuY29sb3JMb2NhdGlvbiA9IG1fY29udGV4dC0+Z2V0VW5p
Zm9ybUxvY2F0aW9uKG1fc2NlbmUucHJvZ3JhbSwgImNvbG9yIik7Ci0gICAgbV9zY2VuZS5wb3Np
dGlvbkxvY2F0aW9uID0gbV9jb250ZXh0LT5nZXRBdHRyaWJMb2NhdGlvbihtX3NjZW5lLnByb2dy
YW0sICJwb3NpdGlvbiIpOwotICAgIHJldHVybiB0cnVlOwotfQotCi1ib29sIFdlYlRlc3RQbHVn
aW5JbXBsOjppbml0UHJpbWl0aXZlKCkKLXsKLSAgICBBU1NFUlQobV9zY2VuZS5wcmltaXRpdmUg
PT0gUHJpbWl0aXZlVHJpYW5nbGUpOwotCi0gICAgbV9zY2VuZS52Ym8gPSBtX2NvbnRleHQtPmNy
ZWF0ZUJ1ZmZlcigpOwotICAgIGlmICghbV9zY2VuZS52Ym8pCi0gICAgICAgIHJldHVybiBmYWxz
ZTsKLQotICAgIGNvbnN0IGZsb2F0IHZlcnRpY2VzW10gPSB7Ci0gICAgICAgIDAuMGYsICAwLjhm
LCAwLjBmLAotICAgICAgICAtMC44ZiwgLTAuOGYsIDAuMGYsCi0gICAgICAgIDAuOGYsIC0wLjhm
LCAwLjBmIH07Ci0gICAgbV9jb250ZXh0LT5iaW5kQnVmZmVyKEdMX0FSUkFZX0JVRkZFUiwgbV9z
Y2VuZS52Ym8pOwotICAgIG1fY29udGV4dC0+YnVmZmVyRGF0YShHTF9BUlJBWV9CVUZGRVIsIHNp
emVvZih2ZXJ0aWNlcyksIDAsIEdMX1NUQVRJQ19EUkFXKTsKLSAgICBtX2NvbnRleHQtPmJ1ZmZl
clN1YkRhdGEoR0xfQVJSQVlfQlVGRkVSLCAwLCBzaXplb2YodmVydGljZXMpLCB2ZXJ0aWNlcyk7
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgV2ViVGVzdFBsdWdpbkltcGw6OmRyYXdQcmlt
aXRpdmUoKQotewotICAgIEFTU0VSVChtX3NjZW5lLnByaW1pdGl2ZSA9PSBQcmltaXRpdmVUcmlh
bmdsZSk7Ci0gICAgQVNTRVJUKG1fc2NlbmUudmJvKTsKLSAgICBBU1NFUlQobV9zY2VuZS5wcm9n
cmFtKTsKLQotICAgIG1fY29udGV4dC0+dXNlUHJvZ3JhbShtX3NjZW5lLnByb2dyYW0pOwotCi0g
ICAgLy8gQmluZCBwcmltaXRpdmUgY29sb3IuCi0gICAgZmxvYXQgY29sb3JbNF07Ci0gICAgcHJl
bXVsdGlwbHlBbHBoYShtX3NjZW5lLnByaW1pdGl2ZUNvbG9yLCBtX3NjZW5lLm9wYWNpdHksIGNv
bG9yKTsKLSAgICBtX2NvbnRleHQtPnVuaWZvcm00ZihtX3NjZW5lLmNvbG9yTG9jYXRpb24sIGNv
bG9yWzBdLCBjb2xvclsxXSwgY29sb3JbMl0sIGNvbG9yWzNdKTsKLQotICAgIC8vIEJpbmQgcHJp
bWl0aXZlIHZlcnRpY2VzLgotICAgIG1fY29udGV4dC0+YmluZEJ1ZmZlcihHTF9BUlJBWV9CVUZG
RVIsIG1fc2NlbmUudmJvKTsKLSAgICBtX2NvbnRleHQtPmVuYWJsZVZlcnRleEF0dHJpYkFycmF5
KG1fc2NlbmUucG9zaXRpb25Mb2NhdGlvbik7Ci0gICAgbV9jb250ZXh0LT52ZXJ0ZXhBdHRyaWJQ
b2ludGVyKG1fc2NlbmUucG9zaXRpb25Mb2NhdGlvbiwgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLCAw
LCAwKTsKLSAgICBtX2NvbnRleHQtPmRyYXdBcnJheXMoR0xfVFJJQU5HTEVTLCAwLCAzKTsKLX0K
LQotdW5zaWduZWQgV2ViVGVzdFBsdWdpbkltcGw6OmxvYWRTaGFkZXIodW5zaWduZWQgdHlwZSwg
Y29uc3QgQ1N0cmluZyYgc291cmNlKQotewotICAgIHVuc2lnbmVkIHNoYWRlciA9IG1fY29udGV4
dC0+Y3JlYXRlU2hhZGVyKHR5cGUpOwotICAgIGlmIChzaGFkZXIpIHsKLSAgICAgICAgbV9jb250
ZXh0LT5zaGFkZXJTb3VyY2Uoc2hhZGVyLCBzb3VyY2UuZGF0YSgpKTsKLSAgICAgICAgbV9jb250
ZXh0LT5jb21waWxlU2hhZGVyKHNoYWRlcik7Ci0KLSAgICAgICAgaW50IGNvbXBpbGVkID0gMDsK
LSAgICAgICAgbV9jb250ZXh0LT5nZXRTaGFkZXJpdihzaGFkZXIsIEdMX0NPTVBJTEVfU1RBVFVT
LCAmY29tcGlsZWQpOwotICAgICAgICBpZiAoIWNvbXBpbGVkKSB7Ci0gICAgICAgICAgICBtX2Nv
bnRleHQtPmRlbGV0ZVNoYWRlcihzaGFkZXIpOwotICAgICAgICAgICAgc2hhZGVyID0gMDsKLSAg
ICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gc2hhZGVyOwotfQotCi11bnNpZ25lZCBXZWJUZXN0
UGx1Z2luSW1wbDo6bG9hZFByb2dyYW0oY29uc3QgQ1N0cmluZyYgdmVydGV4U291cmNlLCBjb25z
dCBDU3RyaW5nJiBmcmFnbWVudFNvdXJjZSkKLXsKLSAgICB1bnNpZ25lZCB2ZXJ0ZXhTaGFkZXIg
PSBsb2FkU2hhZGVyKEdMX1ZFUlRFWF9TSEFERVIsIHZlcnRleFNvdXJjZSk7Ci0gICAgdW5zaWdu
ZWQgZnJhZ21lbnRTaGFkZXIgPSBsb2FkU2hhZGVyKEdMX0ZSQUdNRU5UX1NIQURFUiwgZnJhZ21l
bnRTb3VyY2UpOwotICAgIHVuc2lnbmVkIHByb2dyYW0gPSBtX2NvbnRleHQtPmNyZWF0ZVByb2dy
YW0oKTsKLSAgICBpZiAodmVydGV4U2hhZGVyICYmIGZyYWdtZW50U2hhZGVyICYmIHByb2dyYW0p
IHsKLSAgICAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgdmVydGV4U2hhZGVy
KTsKLSAgICAgICAgbV9jb250ZXh0LT5hdHRhY2hTaGFkZXIocHJvZ3JhbSwgZnJhZ21lbnRTaGFk
ZXIpOwotICAgICAgICBtX2NvbnRleHQtPmxpbmtQcm9ncmFtKHByb2dyYW0pOwotCi0gICAgICAg
IGludCBsaW5rZWQgPSAwOwotICAgICAgICBtX2NvbnRleHQtPmdldFByb2dyYW1pdihwcm9ncmFt
LCBHTF9MSU5LX1NUQVRVUywgJmxpbmtlZCk7Ci0gICAgICAgIGlmICghbGlua2VkKSB7Ci0gICAg
ICAgICAgICBtX2NvbnRleHQtPmRlbGV0ZVByb2dyYW0ocHJvZ3JhbSk7Ci0gICAgICAgICAgICBw
cm9ncmFtID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAodmVydGV4U2hhZGVyKQotICAg
ICAgICBtX2NvbnRleHQtPmRlbGV0ZVNoYWRlcih2ZXJ0ZXhTaGFkZXIpOwotICAgIGlmIChmcmFn
bWVudFNoYWRlcikKLSAgICAgICAgbV9jb250ZXh0LT5kZWxldGVTaGFkZXIoZnJhZ21lbnRTaGFk
ZXIpOwotCi0gICAgcmV0dXJuIHByb2dyYW07Ci19Ci0KLWJvb2wgV2ViVGVzdFBsdWdpbkltcGw6
OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCYgZXZlbnQsIFdlYkN1cnNvcklu
Zm8mIGluZm8pCi17Ci0gICAgY29uc3QgY2hhciogZXZlbnROYW1lID0gMDsKLSAgICBzd2l0Y2gg
KGV2ZW50LnR5cGUpIHsKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZDogICAgICAg
ICAgIGV2ZW50TmFtZSA9ICJ1bmtub3duIjsgYnJlYWs7Ci0KLSAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Ok1vdXNlRG93bjogICAgICAgICAgIGV2ZW50TmFtZSA9ICJNb3VzZURvd24iOyBicmVhazsK
LSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA6ICAgICAgICAgICAgIGV2ZW50TmFtZSA9
ICJNb3VzZVVwIjsgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU6ICAg
ICAgICAgICBldmVudE5hbWUgPSAiTW91c2VNb3ZlIjsgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1
dEV2ZW50OjpNb3VzZUVudGVyOiAgICAgICAgICBldmVudE5hbWUgPSAiTW91c2VFbnRlciI7IGJy
ZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6TW91c2VMZWF2ZTogICAgICAgICAgZXZlbnRO
YW1lID0gIk1vdXNlTGVhdmUiOyBicmVhazsKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OkNvbnRl
eHRNZW51OiAgICAgICAgIGV2ZW50TmFtZSA9ICJDb250ZXh0TWVudSI7IGJyZWFrOwotCi0gICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsOiAgICAgICAgICBldmVudE5hbWUgPSAiTW91
c2VXaGVlbCI7IGJyZWFrOwotCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpSYXdLZXlEb3duOiAg
ICAgICAgICBldmVudE5hbWUgPSAiUmF3S2V5RG93biI7IGJyZWFrOwotICAgIGNhc2UgV2ViSW5w
dXRFdmVudDo6S2V5RG93bjogICAgICAgICAgICAgZXZlbnROYW1lID0gIktleURvd24iOyBicmVh
azsKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6OktleVVwOiAgICAgICAgICAgICAgIGV2ZW50TmFt
ZSA9ICJLZXlVcCI7IGJyZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6Q2hhcjogICAgICAg
ICAgICAgICAgZXZlbnROYW1lID0gIkNoYXIiOyBicmVhazsKLQotICAgIGNhc2UgV2ViSW5wdXRF
dmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOiAgZXZlbnROYW1lID0gIkdlc3R1cmVTY3JvbGxCZWdp
biI7IGJyZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbEVuZDogICAg
ZXZlbnROYW1lID0gIkdlc3R1cmVTY3JvbGxFbmQiOyBicmVhazsKLSAgICBjYXNlIFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU6IGV2ZW50TmFtZSA9ICJHZXN0dXJlU2Nyb2xsVXBk
YXRlIjsgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlRmxpbmdTdGFydDog
ICBldmVudE5hbWUgPSAiR2VzdHVyZUZsaW5nU3RhcnQiOyBicmVhazsKLSAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVGbGluZ0NhbmNlbDogIGV2ZW50TmFtZSA9ICJHZXN0dXJlRmxpbmdD
YW5jZWwiOyBicmVhazsKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXA6ICAgICAg
ICAgIGV2ZW50TmFtZSA9ICJHZXN0dXJlVGFwIjsgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlVGFwRG93bjogICAgICBldmVudE5hbWUgPSAiR2VzdHVyZVRhcERvd24iOyBi
cmVhazsKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBDYW5jZWw6ICAgIGV2ZW50
TmFtZSA9ICJHZXN0dXJlVGFwQ2FuY2VsIjsgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlRG91YmxlVGFwOiAgICBldmVudE5hbWUgPSAiR2VzdHVyZURvdWJsZVRhcCI7IGJy
ZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDogZXZlbnRO
YW1lID0gIkdlc3R1cmVUd29GaW5nZXJUYXAiOyBicmVhazsKLSAgICBjYXNlIFdlYklucHV0RXZl
bnQ6Okdlc3R1cmVMb25nUHJlc3M6ICAgIGV2ZW50TmFtZSA9ICJHZXN0dXJlTG9uZ1ByZXNzIjsg
YnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcDogICAgICBldmVu
dE5hbWUgPSAiR2VzdHVyZUxvbmdUYXAiOyBicmVhazsKLSAgICBjYXNlIFdlYklucHV0RXZlbnQ6
Okdlc3R1cmVQaW5jaEJlZ2luOiAgIGV2ZW50TmFtZSA9ICJHZXN0dXJlUGluY2hCZWdpbiI7IGJy
ZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoRW5kOiAgICAgZXZlbnRO
YW1lID0gIkdlc3R1cmVQaW5jaEVuZCI7IGJyZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6
R2VzdHVyZVBpbmNoVXBkYXRlOiAgZXZlbnROYW1lID0gIkdlc3R1cmVQaW5jaFVwZGF0ZSI7IGJy
ZWFrOwotCi0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaFN0YXJ0OiAgICAgICAgICBldmVu
dE5hbWUgPSAiVG91Y2hTdGFydCI7IGJyZWFrOwotICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6VG91
Y2hNb3ZlOiAgICAgICAgICAgZXZlbnROYW1lID0gIlRvdWNoTW92ZSI7IGJyZWFrOwotICAgIGNh
c2UgV2ViSW5wdXRFdmVudDo6VG91Y2hFbmQ6ICAgICAgICAgICAgZXZlbnROYW1lID0gIlRvdWNo
RW5kIjsgYnJlYWs7Ci0gICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpUb3VjaENhbmNlbDogICAgICAg
ICBldmVudE5hbWUgPSAiVG91Y2hDYW5jZWwiOyBicmVhazsKLSAgICB9Ci0KLSAgICBtX2RlbGVn
YXRlLT5wcmludE1lc3NhZ2Uoc3RkOjpzdHJpbmcoIlBsdWdpbiByZWNlaXZlZCBldmVudDogIikg
KyAoZXZlbnROYW1lID8gZXZlbnROYW1lIDogInVua25vd24iKSArICJcbiIpOwotICAgIGlmICht
X3ByaW50RXZlbnREZXRhaWxzKQotICAgICAgICBwcmludEV2ZW50RGV0YWlscyhtX2RlbGVnYXRl
LCBldmVudCk7Ci0gICAgaWYgKG1fcHJpbnRVc2VyR2VzdHVyZVN0YXR1cykKLSAgICAgICAgbV9k
ZWxlZ2F0ZS0+cHJpbnRNZXNzYWdlKHN0ZDo6c3RyaW5nKCIqICIpICsgKG1fZnJhbWUtPmlzUHJv
Y2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyAiIiA6ICJub3QgIikgKyAiaGFuZGxpbmcgdXNlciBnZXN0
dXJlXG4iKTsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLWJvb2wgV2ViVGVzdFBsdWdpbkltcGw6
OmhhbmRsZURyYWdTdGF0dXNVcGRhdGUoV2ViRHJhZ1N0YXR1cyBkcmFnU3RhdHVzLCBjb25zdCBX
ZWJEcmFnRGF0YSYsIFdlYkRyYWdPcGVyYXRpb25zTWFzaywgY29uc3QgV2ViUG9pbnQmIHBvc2l0
aW9uLCBjb25zdCBXZWJQb2ludCYgc2NyZWVuUG9zaXRpb24pCi17Ci0gICAgY29uc3QgY2hhciog
ZHJhZ1N0YXR1c05hbWUgPSAwOwotICAgIHN3aXRjaCAoZHJhZ1N0YXR1cykgewotICAgIGNhc2Ug
V2ViRHJhZ1N0YXR1c0VudGVyOgotICAgICAgICBkcmFnU3RhdHVzTmFtZSA9ICJEcmFnRW50ZXIi
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkRyYWdTdGF0dXNPdmVyOgotICAgICAgICBk
cmFnU3RhdHVzTmFtZSA9ICJEcmFnT3ZlciI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2Vi
RHJhZ1N0YXR1c0xlYXZlOgotICAgICAgICBkcmFnU3RhdHVzTmFtZSA9ICJEcmFnTGVhdmUiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYkRyYWdTdGF0dXNEcm9wOgotICAgICAgICBkcmFn
U3RhdHVzTmFtZSA9ICJEcmFnRHJvcCI7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2ViRHJh
Z1N0YXR1c1Vua25vd246Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLSAg
ICBtX2RlbGVnYXRlLT5wcmludE1lc3NhZ2Uoc3RkOjpzdHJpbmcoIlBsdWdpbiByZWNlaXZlZCBl
dmVudDogIikgKyBkcmFnU3RhdHVzTmFtZSArICJcbiIpOwotICAgIHJldHVybiBmYWxzZTsKLX0K
LQotfQotCi1XZWJUZXN0UGx1Z2luKiBXZWJUZXN0UGx1Z2luOjpjcmVhdGUoV2ViRnJhbWUqIGZy
YW1lLCBjb25zdCBXZWJQbHVnaW5QYXJhbXMmIHBhcmFtcywgV2ViVGVzdERlbGVnYXRlKiBkZWxl
Z2F0ZSkKLXsKLSAgICByZXR1cm4gbmV3IFdlYlRlc3RQbHVnaW5JbXBsKGZyYW1lLCBwYXJhbXMs
IGRlbGVnYXRlKTsKLX0KLQotV2ViVGVzdFBsdWdpbjo6V2ViVGVzdFBsdWdpbigpCi17Ci19Ci0K
LVdlYlRlc3RQbHVnaW46On5XZWJUZXN0UGx1Z2luKCkKLXsKLX0KLQotY29uc3QgV2ViU3RyaW5n
JiBXZWJUZXN0UGx1Z2luOjptaW1lVHlwZSgpCi17Ci0gICAgc3RhdGljIGNvbnN0IFdlYlN0cmlu
ZyBrTWltZVR5cGUgPSBXZWJTdHJpbmc6OmZyb21VVEY4KCJhcHBsaWNhdGlvbi94LXdlYmtpdC10
ZXN0LXdlYnBsdWdpbiIpOwotICAgIHJldHVybiBrTWltZVR5cGU7Ci19Ci0KLX0KZGlmZiAtLWdp
dCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQ
cm94eS5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9X
ZWJUZXN0UHJveHkuY3BwCmluZGV4IDE4NzM1YmI2Nzk4NmVjYzdkZGU5M2I5OGM2ZmU4YzY5YTEz
MTY5NDkuLjU3YTdjZGY2MjM0MjFmMGYwZGIzNGE3YzkzYmY2ZTQxNTJhYzBhNmMgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQ
cm94eS5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViVGVzdFByb3h5LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldlYlRlc3RQ
cm94eS5oIgogCiAjaW5jbHVkZSAiU3BlbGxDaGVja0NsaWVudC5oIgorI2luY2x1ZGUgIlRlc3RQ
bHVnaW4uaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgogI2luY2x1
ZGUgIldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0LmgiCkBAIC00NSw2ICs0Niw3IEBACiAjaW5jbHVkZSAiV2ViSW50ZW50UmVx
dWVzdC5oIgogI2luY2x1ZGUgIldlYkludGVudFNlcnZpY2VJbmZvLmgiCiAjaW5jbHVkZSAiV2Vi
Tm9kZS5oIgorI2luY2x1ZGUgIldlYlBsdWdpblBhcmFtcy5oIgogI2luY2x1ZGUgIldlYlJhbmdl
LmgiCiAjaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViVGVzdEludGVy
ZmFjZXMuaCIKQEAgLTU5Nyw2ICs1OTksMTMgQEAgYm9vbCBXZWJUZXN0UHJveHlCYXNlOjpjcmVh
dGVWaWV3KFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMUmVxdWVzdCYgcmVxdWVzdCwgY29uc3QKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAorV2ViUGx1Z2luKiBXZWJUZXN0UHJveHlCYXNlOjpjcmVhdGVQ
bHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJQbHVnaW5QYXJhbXMmIHBhcmFtcykKK3sK
KyAgICBpZiAocGFyYW1zLm1pbWVUeXBlID09IFRlc3RQbHVnaW46Om1pbWVUeXBlKCkpCisgICAg
ICAgIHJldHVybiBUZXN0UGx1Z2luOjpjcmVhdGUoZnJhbWUsIHBhcmFtcywgbV9kZWxlZ2F0ZSk7
CisgICAgcmV0dXJuIDA7Cit9CisKIHZvaWQgV2ViVGVzdFByb3h5QmFzZTo6c2V0U3RhdHVzVGV4
dChjb25zdCBXZWJTdHJpbmcmIHRleHQpCiB7CiAgICAgaWYgKCFtX3Rlc3RJbnRlcmZhY2VzLT50
ZXN0UnVubmVyKCkgfHwgIW1fdGVzdEludGVyZmFjZXMtPnRlc3RSdW5uZXIoKS0+c2hvdWxkRHVt
cFN0YXR1c0NhbGxiYWNrcygpKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCmluZGV4IGM1ZTY1NzgwMDQ4MWIzYmYzNWNiY2MwNjNkNzMzZjU4NjU4OTI5
ZDguLmM3YmIxYTc4Yjk2ZjM3MzZhZTdjM2U1M2FkMDhjMTcyZTk4NDNmZjMgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTU5LDcgKzU5LDYg
QEAKICNpbmNsdWRlICJXZWJTY3JlZW5JbmZvLmgiCiAjaW5jbHVkZSAiV2ViU2VyaWFsaXplZFNj
cmlwdFZhbHVlLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZS5oIgotI2luY2x1ZGUg
IldlYlRlc3RQbHVnaW4uaCIKICNpbmNsdWRlICJXZWJVc2VyTWVkaWFDbGllbnRNb2NrLmgiCiAj
aW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgIldlYldpbmRvd0ZlYXR1cmVzLmgiCkBAIC01
MzYsOSArNTM1LDYgQEAgdm9pZCBXZWJWaWV3SG9zdDo6ZXhpdEZ1bGxTY3JlZW4oKQogCiBXZWJQ
bHVnaW4qIFdlYlZpZXdIb3N0OjpjcmVhdGVQbHVnaW4oV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBX
ZWJQbHVnaW5QYXJhbXMmIHBhcmFtcykKIHsKLSAgICBpZiAocGFyYW1zLm1pbWVUeXBlID09IFdl
YlRlc3RQbHVnaW46Om1pbWVUeXBlKCkpCi0gICAgICAgIHJldHVybiBXZWJUZXN0UGx1Z2luOjpj
cmVhdGUoZnJhbWUsIHBhcmFtcywgdGhpcyk7Ci0KICAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6
OkNyZWF0ZVdlYlBsdWdpbihmcmFtZSwgcGFyYW1zKTsKIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186359</attachid>
            <date>2013-02-04 05:48:41 -0800</date>
            <delta_ts>2013-02-04 14:16:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108467-20130204144520.patch</filename>
            <type>text/plain</type>
            <size>44295</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxNzUwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzQxZDgzYWRkNDBkNzRhZGJlYWYwODMwMTI1Mzg0YjI4
ZTkxMWJlYS4uYWM4NzhlZDcxZGQ3YzkwZTIwYTQ1NDg5YjFlN2I5MTYzMzU5ZjA2MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUy
IEBACisyMDEzLTAyLTA0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIFdlYkV2ZW50U2VuZGVyIGFuZCBXZWJBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlciBmcm9tIHB1YmxpYyBUZXN0UnVubmVyIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NDY3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9EdW1w
UmVuZGVyVHJlZS5neXBpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmg6IFJlbW92ZWQuCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViRXZlbnRT
ZW5kZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAoV2ViVGVzdFJ1bm5l
cik6CisgICAgICAgIChXZWJUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5Lmg6CisgICAgICAgIChX
ZWJUZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RQcm94eUJhc2UpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaDoK
KyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50U2VuZGVyLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5u
ZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rl
c3RJbnRlcmZhY2VzLmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2Vz
OjpUZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNl
czo6c2V0V2ViVmlldyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpUZXN0SW50ZXJmYWNlczo6
d2ViVmlldyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oOgorICAgICAgICAo
VGVzdEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1Rlc3RSdW5uZXIuaDoKKyAgICAgICAgKFRlc3RSdW5uZXIpOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJFdmVudFNlbmRlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMu
Y3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OldlYlRlc3RJ
bnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2VzOjp+
V2ViVGVzdEludGVyZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVy
ZmFjZXM6OnNldFdlYlZpZXcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVy
ZmFjZXM6OnNldERlbGVnYXRlKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRl
cmZhY2VzOjpiaW5kVG8pOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFj
ZXM6OnJlc2V0QWxsKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZhY2Vz
OjpzZXRUZXN0SXNSdW5uaW5nKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRl
cmZhY2VzOjp3ZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZh
Y2VzOjp0ZXN0UnVubmVyKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OldlYlRlc3RJbnRlcmZh
Y2VzOjp0ZXN0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcDoKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6
OldlYlRlc3RQcm94eUJhc2U6OnNldEludGVyZmFjZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RSdW5uZXIuY3BwOiBSZW1vdmVkLgor
ICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oOgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCiAyMDEzLTAyLTAzICBBbGFuIEN1
dHRlciAgPGFsYW5jdXR0ZXJAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFBhdGNoTG9ncyBhcmUg
bm90IGdldHRpbmcgY3JlYXRlZCBvbiBRdWV1ZVN0YXR1c1NlcnZlcgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaSBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKaW5kZXggMTM5YjhlYWZkOTA2NmExZDEyODAxZjdhNThm
MzJjM2RkMDNjMWZhMC4uMDU1MmUzODJiMmY3ZTAyZjlkZGE1OTAxNWExYmU1ZDQwMGQ4ZThhNSAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpCkBAIC01Miw5ICs1Miw3
IEBACiAgICAgICAgICAgICAnY2hyb21pdW0vV2ViVmlld0hvc3QuaCcsCiAgICAgICAgIF0sCiAg
ICAgICAgICd0ZXN0X3J1bm5lcl9maWxlcyc6IFsKLSAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0
UnVubmVyL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oJywKICAgICAgICAgICAg
ICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0RGVsZWdhdGUuaCcsCi0gICAgICAg
ICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViRXZlbnRTZW5kZXIuaCcsCiAgICAg
ICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViUHJlZmVyZW5jZXMuaCcsCiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGFzay5oJywKICAgICAg
ICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oJywK
QEAgLTg3LDggKzg1LDYgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9U
ZXh0SW5wdXRDb250cm9sbGVyLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3Ny
Yy9UZXN0UnVubmVyLmgnLAotICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIuY3BwJywKICAgICAgICAgICAgICdjaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJQZXJtaXNzaW9ucy5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlBlcm1pc3Npb25zLmgnLAogICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1dlYlByZWZlcmVuY2VzLmNwcCcsCkBAIC05Niw3ICs5Miw2IEBACiAg
ICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3Bw
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UGx1Z2luLmNw
cCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNw
cCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFJ1bm5lci5j
cHAnLAogICAgICAgICBdLAogICAgICAgICAndGVzdF9wbHVnaW5fZmlsZXMnOiBbCiAgICAgICAg
ICAgICAnVGVzdE5ldHNjYXBlUGx1Z0luL1BsdWdpbk9iamVjdC5jcHAnLApkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGYyZWM1MDg2OTMyZGRjMDBhZjg4Nzk1YjhmMDA4NmMxZTY2MzA1YjAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYkFjY2Vz
c2liaWxpdHlDb250cm9sbGVyX2gKLSNkZWZpbmUgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJf
aAotCi1uYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkFjY2Vzc2liaWxpdHlPYmplY3Q7Ci19
Ci0KLW5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKLQotY2xhc3MgQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXI7Ci0KLWNsYXNzIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyIHsKLXB1YmxpYzoKLSNp
ZiBXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIoQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqKTsKLSNlbmRpZgotCi0gICAg
dm9pZCBzZXRGb2N1c2VkRWxlbWVudChjb25zdCBXZWJLaXQ6OldlYkFjY2Vzc2liaWxpdHlPYmpl
Y3QmKTsKLSAgICB2b2lkIG5vdGlmaWNhdGlvblJlY2VpdmVkKGNvbnN0IFdlYktpdDo6V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdCYgdGFyZ2V0LCBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1lKTsK
LSAgICBib29sIHNob3VsZExvZ0FjY2Vzc2liaWxpdHlFdmVudHMoKTsKLQotcHJpdmF0ZToKLSAg
ICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogbV9wcml2YXRlOwotfTsKLQotfQotCi0jZW5kaWYg
Ly8gV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJfaApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViRXZlbnRTZW5kZXIuaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYkV2ZW50U2Vu
ZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YzU5ZWZlNjllNWQzYmEyNDVj
MzU1Y2JhZjBiZWI0NTI1YjQzMWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJs
aWMvV2ViRXZlbnRTZW5kZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLS8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlz
dHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVm
IFdlYkV2ZW50U2VuZGVyX2gKLSNkZWZpbmUgV2ViRXZlbnRTZW5kZXJfaAotCi0jaW5jbHVkZSAi
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJEcmFnT3BlcmF0aW9uLmgiCi0KLW5hbWVzcGFjZSBX
ZWJLaXQgewotY2xhc3MgV2ViRHJhZ0RhdGE7Ci19Ci0KLW5hbWVzcGFjZSBXZWJUZXN0UnVubmVy
IHsKLQotY2xhc3MgRXZlbnRTZW5kZXI7Ci0KLWNsYXNzIFdlYkV2ZW50U2VuZGVyIHsKLXB1Ymxp
YzoKLSNpZiBXRUJURVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViRXZl
bnRTZW5kZXIoRXZlbnRTZW5kZXIqKTsKLSNlbmRpZgotCi0gICAgLy8gU2ltdWxhdGUgZHJhZyZk
cm9wIHN5c3RlbSBjYWxsLgotICAgIHZvaWQgZG9EcmFnRHJvcChjb25zdCBXZWJLaXQ6OldlYkRy
YWdEYXRhJiwgV2ViS2l0OjpXZWJEcmFnT3BlcmF0aW9uc01hc2spOwotCi1wcml2YXRlOgotICAg
IEV2ZW50U2VuZGVyKiBtX3ByaXZhdGU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBXZWJFdmVudFNl
bmRlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaAppbmRleCA5NWRlYTZk
ODNiZjJlOTNlNjZkMTYzNGQzYzk3NzFhYjk1ZWQ4MGUzLi4yY2NkNjFlMjVjMTBiYTQ3MjA4NjE1
MjIwOTYzNjU2ZTk4ODZlZGI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2Vz
LmgKQEAgLTM4LDggKzM4LDcgQEAgY2xhc3MgV2ViVmlldzsKIAogbmFtZXNwYWNlIFdlYlRlc3RS
dW5uZXIgewogCi1jbGFzcyBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKLWNsYXNzIFdlYkV2
ZW50U2VuZGVyOworY2xhc3MgVGVzdEludGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7
CiBjbGFzcyBXZWJUZXN0UnVubmVyOwogCkBAIC01NSwxMyArNTQsMTQgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0VGVzdElzUnVubmluZyhib29sKTsKIAogICAgIFdlYktpdDo6V2ViVmlldyogd2Vi
VmlldygpIGNvbnN0OwotICAgIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlcigpOwotICAgIFdlYkV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpOwogICAg
IFdlYlRlc3RSdW5uZXIqIHRlc3RSdW5uZXIoKTsKIAorI2lmIFdFQlRFU1RSVU5ORVJfSU1QTEVN
RU5UQVRJT04KKyAgICBUZXN0SW50ZXJmYWNlcyogdGVzdEludGVyZmFjZXMoKTsKKyNlbmRpZgor
CiBwcml2YXRlOgotICAgIGNsYXNzIEludGVybmFsOwotICAgIEludGVybmFsKiBtX2ludGVybmFs
OworICAgIFRlc3RJbnRlcmZhY2VzKiBtX2ludGVyZmFjZXM7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0
UHJveHkuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGlj
L1dlYlRlc3RQcm94eS5oCmluZGV4IGM1NDE0ZjQ4ODhmODRjZWUwZjE5NjIyOTQ3ZGIyODkxZGI5
OWI3NGQuLjE3N2M4N2UwZjUwZDU3MjFhMTRkNjg0NGY3NDk5MzNlZmI0MmEyZTIgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRl
c3RQcm94eS5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
cHVibGljL1dlYlRlc3RQcm94eS5oCkBAIC03Miw2ICs3Miw3IEBAIHN0cnVjdCBXZWJXaW5kb3dG
ZWF0dXJlczsKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAogY2xhc3MgU3BlbGxDaGVja0Ns
aWVudDsKK2NsYXNzIFRlc3RJbnRlcmZhY2VzOwogY2xhc3MgV2ViVGVzdERlbGVnYXRlOwogY2xh
c3MgV2ViVGVzdEludGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0UnVubmVyOwpAQCAtMTU4LDcgKzE1
OSw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgdm9pZCBsb2NhdGlvbkNoYW5nZURvbmUo
V2ViS2l0OjpXZWJGcmFtZSopOwogCi0gICAgV2ViVGVzdEludGVyZmFjZXMqIG1fdGVzdEludGVy
ZmFjZXM7CisgICAgVGVzdEludGVyZmFjZXMqIG1fdGVzdEludGVyZmFjZXM7CiAgICAgV2ViVGVz
dERlbGVnYXRlKiBtX2RlbGVnYXRlOwogCiAgICAgU3BlbGxDaGVja0NsaWVudCogbV9zcGVsbGNo
ZWNrOwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oCmluZGV4IGE5N2I5MDdiZTk4YmUyNGI2
MWJhZmUwODkxNGE4YjgzODU1NjdlYWEuLjk5ZWRhODY2MThmNzk0MzZiNmNiM2Y2YWE4YThlZjk5
MTE5NjgxYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKQEAgLTQzLDU5ICs0Myw1
MCBAQCBjbGFzcyBXZWJGcmFtZTsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCi1jbGFz
cyBUZXN0UnVubmVyOwotCiBjbGFzcyBXZWJUZXN0UnVubmVyIHsKIHB1YmxpYzoKLSNpZiBXRUJU
RVNUUlVOTkVSX0lNUExFTUVOVEFUSU9OCi0gICAgZXhwbGljaXQgV2ViVGVzdFJ1bm5lcihUZXN0
UnVubmVyKik7Ci0jZW5kaWYKLQotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wRWRpdGluZ0Nh
bGxiYWNrcygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQXNUZXh0KCkgY29u
c3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNldFNob3VsZER1bXBBc1RleHQoYm9vbCk7Ci0gICAgdmly
dHVhbCBib29sIHNob3VsZEdlbmVyYXRlUGl4ZWxSZXN1bHRzKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCB2b2lkIHNldFNob3VsZEdlbmVyYXRlUGl4ZWxSZXN1bHRzKGJvb2wpOwotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucygpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBzaG91bGREdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSBjb25zdDsKLSAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRHVtcEFzQXVkaW8oKSBjb25zdDsKLSAgICB2aXJ0dWFsIGNvbnN0IFdl
YktpdDo6V2ViQXJyYXlCdWZmZXJWaWV3KiBhdWRpb0RhdGEoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcygpIGNvbnN0OwotICAgIHZpcnR1YWwg
dm9pZCBzZXRTaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wpOwotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREdW1wVXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpIGNvbnN0Owot
ICAgIHZpcnR1YWwgYm9vbCBzdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRzKCkgY29uc3Q7Ci0gICAg
dmlydHVhbCBib29sIHNob3VsZER1bXBUaXRsZUNoYW5nZXMoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRHVtcENyZWF0ZVZpZXcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgY2Fu
T3BlbldpbmRvd3MoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFJlc291cmNl
TG9hZENhbGxiYWNrcygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wUmVzb3Vy
Y2VSZXF1ZXN0Q2FsbGJhY2tzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBS
ZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBXZWJLaXQ6Oldl
YlBlcm1pc3Npb25DbGllbnQqIHdlYlBlcm1pc3Npb25zKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZER1bXBTdGF0dXNDYWxsYmFja3MoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjaygpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGREdW1wQmFja0ZvcndhcmRMaXN0KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29s
IGRlZmVyTWFpblJlc291cmNlRGF0YUxvYWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgdGVzdFJlcGFp
bnQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc3dlZXBIb3Jpem9udGFsbHkoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgaXNQcmludGluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpIGNvbnN0OwotICAgIHZp
cnR1YWwgdm9pZCBzZXRUaXRsZVRleHREaXJlY3Rpb24oV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9u
KTsKLSAgICB2aXJ0dWFsIGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiogaHR0cEhlYWRlcnNU
b0NsZWFyKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZEJsb2NrUmVkaXJlY3RzKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHdpbGxTZW5kUmVxdWVzdFNob3VsZFJldHVybk51bGwo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0VG9wTG9hZGluZ0ZyYW1lKFdlYktpdDo6V2Vi
RnJhbWUqLCBib29sKTsKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViRnJhbWUqIHRvcExvYWRpbmdG
cmFtZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgdm9pZCBwb2xpY3lEZWxlZ2F0ZURvbmUoKTsKLSAg
ICB2aXJ0dWFsIGJvb2wgcG9saWN5RGVsZWdhdGVFbmFibGVkKCkgY29uc3Q7Ci0gICAgdmlydHVh
bCBib29sIHBvbGljeURlbGVnYXRlSXNQZXJtaXNzaXZlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIHBvbGljeURlbGVnYXRlU2hvdWxkTm90aWZ5RG9uZSgpIGNvbnN0OwotICAgIHZpcnR1YWwg
Ym9vbCBzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBpc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBp
c1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAg
ICBUZXN0UnVubmVyKiBtX3ByaXZhdGU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBFZGl0
aW5nQ2FsbGJhY2tzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQXNU
ZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGREdW1wQXNUZXh0KGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZEdlbmVyYXRlUGl4ZWxSZXN1bHRz
KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVTY3JvbGxQ
b3NpdGlvbnMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDaGlsZEZy
YW1lc0FzVGV4dCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEFzQXVk
aW8oKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYkFycmF5QnVmZmVy
VmlldyogYXVkaW9EYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1w
RnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91
bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIHN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMoKSBjb25zdCA9IDA7CisgICAg
dmlydHVhbCBib29sIHNob3VsZER1bXBUaXRsZUNoYW5nZXMoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIHNob3VsZER1bXBDcmVhdGVWaWV3KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
Ym9vbCBjYW5PcGVuV2luZG93cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
RHVtcFJlc291cmNlTG9hZENhbGxiYWNrcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wg
c2hvdWxkRHVtcFJlc291cmNlUmVxdWVzdENhbGxiYWNrcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSBjb25zdCA9IDA7
CisgICAgdmlydHVhbCBXZWJLaXQ6OldlYlBlcm1pc3Npb25DbGllbnQqIHdlYlBlcm1pc3Npb25z
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wU3RhdHVzQ2FsbGJhY2tz
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wUHJvZ3Jlc3NGaW5pc2hl
ZENhbGxiYWNrKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQmFja0Zv
cndhcmRMaXN0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBkZWZlck1haW5SZXNvdXJj
ZURhdGFMb2FkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wU2VsZWN0
aW9uUmVjdCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgdGVzdFJlcGFpbnQoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHN3ZWVwSG9yaXpvbnRhbGx5KCkgY29uc3QgPSAwOwor
ICAgIHZpcnR1YWwgYm9vbCBpc1ByaW50aW5nKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9hZCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGVUZXh0RGlyZWN0aW9uKFdlYktpdDo6V2ViVGV4dERp
cmVjdGlvbikgPSAwOworICAgIHZpcnR1YWwgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBo
dHRwSGVhZGVyc1RvQ2xlYXIoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZEJs
b2NrUmVkaXJlY3RzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCB3aWxsU2VuZFJlcXVl
c3RTaG91bGRSZXR1cm5OdWxsKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRUb3BM
b2FkaW5nRnJhbWUoV2ViS2l0OjpXZWJGcmFtZSosIGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViRnJhbWUqIHRvcExvYWRpbmdGcmFtZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcG9saWN5RGVsZWdhdGVEb25lKCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwb2xpY3lE
ZWxlZ2F0ZUVuYWJsZWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHBvbGljeURlbGVn
YXRlSXNQZXJtaXNzaXZlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBwb2xpY3lEZWxl
Z2F0ZVNob3VsZE5vdGlmeURvbmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZEludGVyY2VwdFBvc3RNZXNzYWdlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1Nt
YXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNT
ZWxlY3RUcmFpbGluZ1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgPSAwOwogfTsKIAogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZl
bnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvRXZlbnRTZW5kZXIuY3BwCmluZGV4IDBhNDQ1N2Y0ZTRhOWU4NjQxMjAzZWE4NmNkNzI3ZTk4
NTEwMTIwYmMuLmFiNjAxOTNkNzcwODJkMzljNTU2ZjNlMzljMzNhMDA0Mzc5NjVmNWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2ZW50
U2VuZGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9FdmVudFNlbmRlci5jcHAKQEAgLTQ3LDcgKzQ3LDYgQEAKICNpbmNsdWRlICJNb2NrU3Bl
bGxDaGVjay5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51RGF0YS5oIgogI2luY2x1ZGUgIldl
YkRyYWdPcGVyYXRpb24uaCIKLSNpbmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUg
IldlYlRlc3REZWxlZ2F0ZS5oIgogI2luY2x1ZGUgIldlYlRvdWNoUG9pbnQuaCIKICNpbmNsdWRl
ICJXZWJWaWV3LmgiCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKaW5kZXggMDdjNDc2NmMx
NWI1Yjk2ZDYxMGZiYTc0MjVlN2EyODM0NDU5M2Y4Ny4uZTNkY2Y4MDIwNTE2YzVjMWJmZTE1YzMy
YzZkMjc0MDFjZTViMTYwOCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcApAQCAtNDUs
NiArNDUsNyBAQCB1c2luZyBXZWJLaXQ6OldlYlZpZXc7CiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5l
ciB7CiAKIFRlc3RJbnRlcmZhY2VzOjpUZXN0SW50ZXJmYWNlcygpCisgICAgOiBtX3dlYlZpZXco
MCkKIHsKICAgICBtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKCkpOwogICAgIG1fZXZlbnRTZW5kZXIgPSBhZG9wdFB0cihuZXcg
RXZlbnRTZW5kZXIoKSk7CkBAIC03MCw2ICs3MSw3IEBAIFRlc3RJbnRlcmZhY2VzOjp+VGVzdElu
dGVyZmFjZXMoKQogCiB2b2lkIFRlc3RJbnRlcmZhY2VzOjpzZXRXZWJWaWV3KFdlYlZpZXcqIHdl
YlZpZXcpCiB7CisgICAgbV93ZWJWaWV3ID0gd2ViVmlldzsKICAgICBtX2FjY2Vzc2liaWxpdHlD
b250cm9sbGVyLT5zZXRXZWJWaWV3KHdlYlZpZXcpOwogICAgIG1fZXZlbnRTZW5kZXItPnNldFdl
YlZpZXcod2ViVmlldyk7CiAgICAgLy8gbV9nYW1lcGFkQ29udHJvbGxlciBkb2Vzbid0IGRlcGVu
ZCBvbiBXZWJWaWV3LgpAQCAtMTI1LDQgKzEyNyw5IEBAIFRlc3RSdW5uZXIqIFRlc3RJbnRlcmZh
Y2VzOjp0ZXN0UnVubmVyKCkKICAgICByZXR1cm4gbV90ZXN0UnVubmVyLmdldCgpOwogfQogCitX
ZWJWaWV3KiBUZXN0SW50ZXJmYWNlczo6d2ViVmlldygpCit7CisgICAgcmV0dXJuIG1fd2ViVmll
dzsKK30KKwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKaW5kZXggOTk2ZjNkNzg4MzZkNTAx
NjNiN2VkODA5NTUxMDcwMDY0ODg2MGFmNS4uZDgzNGM0MGIxNjI3NDJhNjQ4NjFhY2Q0Y2JjNzhi
NmViYmU3NDkyOSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5oCkBAIC02MSw2ICs2MSw4IEBA
IHB1YmxpYzoKICAgICBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIoKTsKICAgICBFdmVudFNlbmRlciogZXZlbnRTZW5kZXIoKTsKICAgICBUZXN0UnVubmVy
KiB0ZXN0UnVubmVyKCk7CisgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3KCk7CisKIAogcHJp
dmF0ZToKICAgICBPd25QdHI8QWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI+IG1fYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXI7CkBAIC02OCw2ICs3MCw3IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPEdhbWVw
YWRDb250cm9sbGVyPiBtX2dhbWVwYWRDb250cm9sbGVyOwogICAgIE93blB0cjxUZXh0SW5wdXRD
b250cm9sbGVyPiBtX3RleHRJbnB1dENvbnRyb2xsZXI7CiAgICAgT3duUHRyPFRlc3RSdW5uZXI+
IG1fdGVzdFJ1bm5lcjsKKyAgICBXZWJLaXQ6OldlYlZpZXcqIG1fd2ViVmlldzsKIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3Jj
L1Rlc3RSdW5uZXIuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1Rlc3RSdW5uZXIuaAppbmRleCA4MjhmYjRiYjBmNzkyMTVkZDU4Zjc4OTRjMTdjNjhhNDVm
YjAwNGVjLi5kODUyZDdjODk2YjcyZDdmMzU0M2MwYmJhODQxYmJkMzg2MGFiNDNhIDEwMDY0NAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
VGVzdFJ1bm5lci5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV2ViQXJyYXlCdWZmZXJW
aWV3LmgiCiAjaW5jbHVkZSAiV2ViRGVsaXZlcmVkSW50ZW50Q2xpZW50LmgiCiAjaW5jbHVkZSAi
V2ViVGFzay5oIgorI2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKICNpbmNsdWRlICJXZWJUZXh0
RGlyZWN0aW9uLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYlVSTC5oPgogI2luY2x1ZGUgPHNldD4K
QEAgLTU0LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogY2xhc3MgV2ViUGVy
bWlzc2lvbnM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CiAKLWNsYXNzIFRlc3RSdW5uZXIgOiBw
dWJsaWMgQ3BwQm91bmRDbGFzcyB7CitjbGFzcyBUZXN0UnVubmVyIDogcHVibGljIFdlYlRlc3RS
dW5uZXIsIHB1YmxpYyBDcHBCb3VuZENsYXNzIHsKIHB1YmxpYzoKICAgICBUZXN0UnVubmVyKCk7
CiAgICAgdmlydHVhbCB+VGVzdFJ1bm5lcigpOwpAQCAtNjcsNDggKzY4LDUwIEBAIHB1YmxpYzoK
ICAgICBXZWJUYXNrTGlzdCogdGFza0xpc3QoKSB7IHJldHVybiAmbV90YXNrTGlzdDsgfQogCiAg
ICAgdm9pZCBzZXRUZXN0SXNSdW5uaW5nKGJvb2wpOwotICAgIGJvb2wgc2hvdWxkRHVtcEVkaXRp
bmdDYWxsYmFja3MoKSBjb25zdDsKLSAgICBib29sIHNob3VsZER1bXBBc1RleHQoKSBjb25zdDsK
LSAgICB2b2lkIHNldFNob3VsZER1bXBBc1RleHQoYm9vbCk7Ci0gICAgYm9vbCBzaG91bGRHZW5l
cmF0ZVBpeGVsUmVzdWx0cygpIGNvbnN0OwotICAgIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVQaXhl
bFJlc3VsdHMoYm9vbCk7Ci0gICAgYm9vbCBzaG91bGREdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0
aW9ucygpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVzQXNUZXh0KCkgY29u
c3Q7Ci0gICAgYm9vbCBzaG91bGREdW1wQXNBdWRpbygpIGNvbnN0OwotICAgIGNvbnN0IFdlYktp
dDo6V2ViQXJyYXlCdWZmZXJWaWV3KiBhdWRpb0RhdGEoKSBjb25zdDsKLSAgICBib29sIHNob3Vs
ZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdDsKLSAgICB2b2lkIHNldFNob3VsZER1bXBG
cmFtZUxvYWRDYWxsYmFja3MoYm9vbCk7Ci0gICAgYm9vbCBzaG91bGREdW1wVXNlckdlc3R1cmVJ
bkZyYW1lTG9hZENhbGxiYWNrcygpIGNvbnN0OwotICAgIGJvb2wgc3RvcFByb3Zpc2lvbmFsRnJh
bWVMb2FkcygpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRHVtcFRpdGxlQ2hhbmdlcygpIGNvbnN0
OwotICAgIGJvb2wgc2hvdWxkRHVtcENyZWF0ZVZpZXcoKSBjb25zdDsKLSAgICBib29sIGNhbk9w
ZW5XaW5kb3dzKCkgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCkgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VSZXF1ZXN0Q2FsbGJhY2tz
KCkgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygp
IGNvbnN0OwotICAgIFdlYktpdDo6V2ViUGVybWlzc2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMo
KSBjb25zdDsKLSAgICBib29sIHNob3VsZER1bXBTdGF0dXNDYWxsYmFja3MoKSBjb25zdDsKLSAg
ICBib29sIHNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJhY2soKSBjb25zdDsKLSAgICBi
b29sIHNob3VsZER1bXBCYWNrRm9yd2FyZExpc3QoKSBjb25zdDsKLSAgICBib29sIGRlZmVyTWFp
blJlc291cmNlRGF0YUxvYWQoKSBjb25zdDsKLSAgICBib29sIHNob3VsZER1bXBTZWxlY3Rpb25S
ZWN0KCkgY29uc3Q7Ci0gICAgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0OwotICAgIGJvb2wgc3dl
ZXBIb3Jpem9udGFsbHkoKSBjb25zdDsKLSAgICBib29sIGlzUHJpbnRpbmcoKSBjb25zdDsKLSAg
ICBib29sIHNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRUaXRsZVRleHREaXJlY3Rpb24oV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9u
KTsKLSAgICBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIGh0dHBIZWFkZXJzVG9DbGVhcigp
IGNvbnN0OwotICAgIGJvb2wgc2hvdWxkQmxvY2tSZWRpcmVjdHMoKSBjb25zdDsKLSAgICBib29s
IHdpbGxTZW5kUmVxdWVzdFNob3VsZFJldHVybk51bGwoKSBjb25zdDsKLSAgICB2b2lkIHNldFRv
cExvYWRpbmdGcmFtZShXZWJLaXQ6OldlYkZyYW1lKiwgYm9vbCk7Ci0gICAgV2ViS2l0OjpXZWJG
cmFtZSogdG9wTG9hZGluZ0ZyYW1lKCkgY29uc3Q7Ci0gICAgdm9pZCBwb2xpY3lEZWxlZ2F0ZURv
bmUoKTsKLSAgICBib29sIHBvbGljeURlbGVnYXRlRW5hYmxlZCgpIGNvbnN0OwotICAgIGJvb2wg
cG9saWN5RGVsZWdhdGVJc1Blcm1pc3NpdmUoKSBjb25zdDsKLSAgICBib29sIHBvbGljeURlbGVn
YXRlU2hvdWxkTm90aWZ5RG9uZSgpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkSW50ZXJjZXB0UG9z
dE1lc3NhZ2UoKSBjb25zdDsKLSAgICBib29sIGlzU21hcnRJbnNlcnREZWxldGVFbmFibGVkKCkg
Y29uc3Q7Ci0gICAgYm9vbCBpc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25z
dDsKKworICAgIC8vIFdlYlRlc3RSdW5uZXIgaW1wbGVtZW50YXRpb24uCisgICAgdmlydHVhbCBi
b29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCBib29sIHNob3VsZER1bXBBc1RleHQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0U2hvdWxkRHVtcEFzVGV4dChib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoYm9vbCkgT1ZFUlJJREU7Cisg
ICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDaGlsZEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDaGlsZEZyYW1lc0FzVGV4
dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQXNBdWRpbygp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpXZWJBcnJheUJ1ZmZl
clZpZXcqIGF1ZGlvRGF0YSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2
b2lkIHNldFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHN0b3BQcm92aXNpb25hbEZyYW1lTG9h
ZHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFRpdGxlQ2hh
bmdlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQ3JlYXRl
VmlldygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBjYW5PcGVuV2luZG93cygp
IGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2Fk
Q2FsbGJhY2tzKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBS
ZXNvdXJjZVJlcXVlc3RDYWxsYmFja3MoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRHVtcFJlc291cmNlUmVzcG9uc2VNSU1FVHlwZXMoKSBjb25zdCBPVkVSUklERTsK
KyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGVybWlzc2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFN0YXR1c0NhbGxi
YWNrcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wUHJvZ3Jl
c3NGaW5pc2hlZENhbGxiYWNrKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNo
b3VsZER1bXBCYWNrRm9yd2FyZExpc3QoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgZGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1
YWwgYm9vbCBzaG91bGREdW1wU2VsZWN0aW9uUmVjdCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9v
bCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBp
c1ByaW50aW5nKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZFN0YXlP
blBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmly
dHVhbCB2b2lkIHNldFRpdGxlVGV4dERpcmVjdGlvbihXZWJLaXQ6OldlYlRleHREaXJlY3Rpb24p
IE9WRVJSSURFOworICAgIHZpcnR1YWwgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBodHRw
SGVhZGVyc1RvQ2xlYXIoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxk
QmxvY2tSZWRpcmVjdHMoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgd2lsbFNl
bmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwg
dm9pZCBzZXRUb3BMb2FkaW5nRnJhbWUoV2ViS2l0OjpXZWJGcmFtZSosIGJvb2wpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJGcmFtZSogdG9wTG9hZGluZ0ZyYW1lKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHBvbGljeURlbGVnYXRlRG9uZSgpIE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIGJvb2wgcG9saWN5RGVsZWdhdGVJc1Blcm1pc3NpdmUoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgcG9saWN5RGVsZWdhdGVTaG91bGROb3RpZnlEb25l
KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZEludGVyY2VwdFBvc3RN
ZXNzYWdlKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzU21hcnRJbnNlcnRE
ZWxldGVFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzU2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgLy8gQSBz
aW5nbGUgaXRlbSBpbiB0aGUgd29yayBxdWV1ZS4KICAgICBjbGFzcyBXb3JrSXRlbSB7CmRpZmYg
LS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmYmUzMDk0NWI5MDdmNTJjYjc1Njc3MjU0ZTRhZGQ4M2Nh
YTE2YTYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENv
cHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmli
dXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJj
b25maWcuaCIKLSNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgotCi0jaW5j
bHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5oIgotCi11c2luZyBXZWJLaXQ6
OldlYkFjY2Vzc2liaWxpdHlPYmplY3Q7Ci0KLW5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKLQot
V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKEFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKiBjb250cm9sbGVyKQotICAgIDogbV9wcml2YXRlKGNvbnRy
b2xsZXIpCi17Ci19Ci0KLXZvaWQgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNldEZvY3Vz
ZWRFbGVtZW50KGNvbnN0IFdlYkFjY2Vzc2liaWxpdHlPYmplY3QmIG9iamVjdCkKLXsKLSAgICBt
X3ByaXZhdGUtPnNldEZvY3VzZWRFbGVtZW50KG9iamVjdCk7Ci19Ci0KLXZvaWQgV2ViQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXI6Om5vdGlmaWNhdGlvblJlY2VpdmVkKGNvbnN0IFdlYkFjY2Vzc2li
aWxpdHlPYmplY3QmIHRhcmdldCwgY29uc3QgY2hhciogbm90aWZpY2F0aW9uTmFtZSkKLXsKLSAg
ICBtX3ByaXZhdGUtPm5vdGlmaWNhdGlvblJlY2VpdmVkKHRhcmdldCwgbm90aWZpY2F0aW9uTmFt
ZSk7Ci19Ci0KLWJvb2wgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI6OnNob3VsZExvZ0FjY2Vz
c2liaWxpdHlFdmVudHMoKQotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNob3VsZExvZ0FjY2Vz
c2liaWxpdHlFdmVudHMoKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2MwYmJhNDk4ZWUzZDBmNjk2MjhlZTA1NTJj
M2I4OTQxYTAzNzRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkV2ZW50
U2VuZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICog
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9u
LgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICog
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmln
LmgiCi0jaW5jbHVkZSAiV2ViRXZlbnRTZW5kZXIuaCIKLQotI2luY2x1ZGUgIkV2ZW50U2VuZGVy
LmgiCi0KLXVzaW5nIFdlYktpdDo6V2ViRHJhZ0RhdGE7Ci11c2luZyBXZWJLaXQ6OldlYkRyYWdP
cGVyYXRpb25zTWFzazsKLQotbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewotCi1XZWJFdmVudFNl
bmRlcjo6V2ViRXZlbnRTZW5kZXIoRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKQotICAgIDogbV9w
cml2YXRlKGV2ZW50U2VuZGVyKQotewotfQotCi12b2lkIFdlYkV2ZW50U2VuZGVyOjpkb0RyYWdE
cm9wKGNvbnN0IFdlYkRyYWdEYXRhJiBkYXRhLCBXZWJEcmFnT3BlcmF0aW9uc01hc2sgbWFzaykK
LXsKLSAgICBtX3ByaXZhdGUtPmRvRHJhZ0Ryb3AoZGF0YSwgbWFzayk7Ci19Ci0KLX0KZGlmZiAt
LWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRl
c3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1dlYlRlc3RJbnRlcmZhY2VzLmNwcAppbmRleCAwOTNkN2E2MmUxNGIyZmJhODMwYzhh
MjY3MTk3ZTI5YjY0ZDhkM2IxLi44OTI2M2JkN2JlMDM5ZjY0Y2JmZmI5MTQxYWU3YjA2ODg0YTE3
N2Q3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVyZmFjZXMuY3BwCkBAIC0zMiwxMjUgKzMy
LDYwIEBACiAjaW5jbHVkZSAiV2ViVGVzdEludGVyZmFjZXMuaCIKIAogI2luY2x1ZGUgIlRlc3RJ
bnRlcmZhY2VzLmgiCi0jaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaCIKLSNp
bmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgotI2luY2x1ZGUgIldlYlRlc3REZWxlZ2F0ZS5oIgot
I2luY2x1ZGUgIldlYlRlc3RSdW5uZXIuaCIKKyNpbmNsdWRlICJUZXN0UnVubmVyLmgiCiAKLXVz
aW5nIFdlYktpdDo6V2ViQ29udGV4dE1lbnVEYXRhOwotdXNpbmcgV2ViS2l0OjpXZWJGcmFtZTsK
LXVzaW5nIFdlYktpdDo6V2ViR2FtZXBhZHM7Ci11c2luZyBXZWJLaXQ6OldlYlN0cmluZzsKLXVz
aW5nIFdlYktpdDo6V2ViVmVjdG9yOwotdXNpbmcgV2ViS2l0OjpXZWJWaWV3OwordXNpbmcgbmFt
ZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCi1jbGFzcyBXZWJU
ZXN0SW50ZXJmYWNlczo6SW50ZXJuYWwgewotcHVibGljOgotICAgIEludGVybmFsKCk7Ci0gICAg
dmlydHVhbCB+SW50ZXJuYWwoKTsKLQotICAgIFRlc3RJbnRlcmZhY2VzKiB0ZXN0SW50ZXJmYWNl
cygpIHsgcmV0dXJuICZtX2ludGVyZmFjZXM7IH0KLSAgICB2b2lkIHNldERlbGVnYXRlKFdlYlRl
c3REZWxlZ2F0ZSopOwotICAgIHZvaWQgc2V0V2ViVmlldyhXZWJWaWV3Kik7Ci0gICAgdm9pZCBz
ZXRUZXN0SXNSdW5uaW5nKGJvb2wpOwotICAgIFdlYlZpZXcqIHdlYlZpZXcoKSBjb25zdCB7IHJl
dHVybiBtX3dlYlZpZXc7IH0KLSAgICBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciogYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIoKSB7IHJldHVybiAmbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsg
fQotICAgIFdlYkV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpIHsgcmV0dXJuICZtX2V2ZW50U2Vu
ZGVyOyB9Ci0gICAgV2ViVGVzdFJ1bm5lciogdGVzdFJ1bm5lcigpIHsgcmV0dXJuICZtX3Rlc3RS
dW5uZXI7IH0KLQotcHJpdmF0ZToKLSAgICBUZXN0SW50ZXJmYWNlcyBtX2ludGVyZmFjZXM7Ci0g
ICAgYm9vbCBtX3Rlc3RJc1J1bm5pbmc7Ci0gICAgV2ViVmlldyogbV93ZWJWaWV3OwotICAgIFdl
YkFjY2Vzc2liaWxpdHlDb250cm9sbGVyIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXI7Ci0gICAg
V2ViRXZlbnRTZW5kZXIgbV9ldmVudFNlbmRlcjsKLSAgICBXZWJUZXN0UnVubmVyIG1fdGVzdFJ1
bm5lcjsKLX07Ci0KLVdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6SW50ZXJuYWwoKQotICAg
IDogbV90ZXN0SXNSdW5uaW5nKGZhbHNlKQotICAgICwgbV93ZWJWaWV3KDApCi0gICAgLCBtX2Fj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKG1faW50ZXJmYWNlcy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cigpKQotICAgICwgbV9ldmVudFNlbmRlcihtX2ludGVyZmFjZXMuZXZlbnRTZW5kZXIoKSkKLSAg
ICAsIG1fdGVzdFJ1bm5lcihtX2ludGVyZmFjZXMudGVzdFJ1bm5lcigpKQotewotfQotCi1XZWJU
ZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6On5JbnRlcm5hbCgpCi17Ci19Ci0KLXZvaWQgV2ViVGVz
dEludGVyZmFjZXM6OkludGVybmFsOjpzZXREZWxlZ2F0ZShXZWJUZXN0RGVsZWdhdGUqIGRlbGVn
YXRlKQotewotICAgIG1faW50ZXJmYWNlcy5zZXREZWxlZ2F0ZShkZWxlZ2F0ZSk7Ci19Ci0KLXZv
aWQgV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpzZXRXZWJWaWV3KFdlYlZpZXcqIHdlYlZp
ZXcpCi17Ci0gICAgbV93ZWJWaWV3ID0gd2ViVmlldzsKLSAgICBtX2ludGVyZmFjZXMuc2V0V2Vi
Vmlldyh3ZWJWaWV3KTsKLX0KLQotdm9pZCBXZWJUZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnNl
dFRlc3RJc1J1bm5pbmcoYm9vbCBydW5uaW5nKQotewotICAgIG1faW50ZXJmYWNlcy5zZXRUZXN0
SXNSdW5uaW5nKHJ1bm5pbmcpOwotfQotCiBXZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVzdEludGVy
ZmFjZXMoKQogewotICAgIG1faW50ZXJuYWwgPSBuZXcgSW50ZXJuYWw7CisgICAgbV9pbnRlcmZh
Y2VzID0gbmV3IFRlc3RJbnRlcmZhY2VzOwogfQogCiBXZWJUZXN0SW50ZXJmYWNlczo6fldlYlRl
c3RJbnRlcmZhY2VzKCkKIHsKLSAgICBkZWxldGUgbV9pbnRlcm5hbDsKKyAgICBkZWxldGUgbV9p
bnRlcmZhY2VzOwogfQogCiB2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpzZXRXZWJWaWV3KFdlYlZp
ZXcqIHdlYlZpZXcpCiB7Ci0gICAgbV9pbnRlcm5hbC0+c2V0V2ViVmlldyh3ZWJWaWV3KTsKKyAg
ICBtX2ludGVyZmFjZXMtPnNldFdlYlZpZXcod2ViVmlldyk7CiB9CiAKIHZvaWQgV2ViVGVzdElu
dGVyZmFjZXM6OnNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCiB7Ci0gICAg
bV9pbnRlcm5hbC0+c2V0RGVsZWdhdGUoZGVsZWdhdGUpOworICAgIG1faW50ZXJmYWNlcy0+c2V0
RGVsZWdhdGUoZGVsZWdhdGUpOwogfQogCiB2b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpiaW5kVG8o
V2ViRnJhbWUqIGZyYW1lKQogewotICAgIG1faW50ZXJuYWwtPnRlc3RJbnRlcmZhY2VzKCktPmJp
bmRUbyhmcmFtZSk7CisgICAgbV9pbnRlcmZhY2VzLT5iaW5kVG8oZnJhbWUpOwogfQogCiB2b2lk
IFdlYlRlc3RJbnRlcmZhY2VzOjpyZXNldEFsbCgpCiB7Ci0gICAgbV9pbnRlcm5hbC0+dGVzdElu
dGVyZmFjZXMoKS0+cmVzZXRBbGwoKTsKKyAgICBtX2ludGVyZmFjZXMtPnJlc2V0QWxsKCk7CiB9
CiAKIHZvaWQgV2ViVGVzdEludGVyZmFjZXM6OnNldFRlc3RJc1J1bm5pbmcoYm9vbCBydW5uaW5n
KQogewotICAgIG1faW50ZXJuYWwtPnNldFRlc3RJc1J1bm5pbmcocnVubmluZyk7CisgICAgbV9p
bnRlcmZhY2VzLT5zZXRUZXN0SXNSdW5uaW5nKHJ1bm5pbmcpOwogfQogCiBXZWJWaWV3KiBXZWJU
ZXN0SW50ZXJmYWNlczo6d2ViVmlldygpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwt
PndlYlZpZXcoKTsKKyAgICByZXR1cm4gbV9pbnRlcmZhY2VzLT53ZWJWaWV3KCk7CiB9CiAKLVdl
YkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBXZWJUZXN0SW50ZXJmYWNlczo6YWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoKQotewotICAgIHJldHVybiBtX2ludGVybmFsLT5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcigpOwotfQotCi1XZWJFdmVudFNlbmRlciogV2ViVGVzdEludGVyZmFjZXM6OmV2ZW50
U2VuZGVyKCkKK1dlYlRlc3RSdW5uZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0UnVubmVyKCkK
IHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+ZXZlbnRTZW5kZXIoKTsKKyAgICByZXR1cm4gbV9p
bnRlcmZhY2VzLT50ZXN0UnVubmVyKCk7CiB9CiAKLVdlYlRlc3RSdW5uZXIqIFdlYlRlc3RJbnRl
cmZhY2VzOjp0ZXN0UnVubmVyKCkKK1Rlc3RJbnRlcmZhY2VzKiBXZWJUZXN0SW50ZXJmYWNlczo6
dGVzdEludGVyZmFjZXMoKQogewotICAgIHJldHVybiBtX2ludGVybmFsLT50ZXN0UnVubmVyKCk7
CisgICAgcmV0dXJuIG1faW50ZXJmYWNlczsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5j
cHAKaW5kZXggMTg3MzViYjY3OTg2ZWNjN2RkZTkzYjk4YzZmZThjNjlhMTMxNjk0OS4uYzE4ODUy
MTJiYWU4YTExOGEwNzliMmUxMWI0NmQzNThlODcwMTA0NyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJv
eHkuY3BwCkBAIC0zMSwxNSArMzEsMTcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRl
ICJXZWJUZXN0UHJveHkuaCIKIAorI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlDb250cm9sbGVyQ2hy
b21pdW0uaCIKKyNpbmNsdWRlICJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUgIlNwZWxsQ2hlY2tD
bGllbnQuaCIKLSNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgorI2luY2x1
ZGUgIlRlc3RJbnRlcmZhY2VzLmgiCisjaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUg
IldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCIKICNpbmNsdWRlICJXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVkVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUg
IldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViRGF0YVNvdXJjZS5oIgogI2luY2x1
ZGUgIldlYkVsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgogI2luY2x1ZGUg
IldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAjaW5jbHVkZSAiV2ViSW50ZW50
UmVxdWVzdC5oIgpAQCAtMjY4LDcgKzI3MCw3IEBAIFdlYlRlc3RQcm94eUJhc2U6On5XZWJUZXN0
UHJveHlCYXNlKCkKIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpzZXRJbnRlcmZhY2VzKFdlYlRl
c3RJbnRlcmZhY2VzKiBpbnRlcmZhY2VzKQogewotICAgIG1fdGVzdEludGVyZmFjZXMgPSBpbnRl
cmZhY2VzOworICAgIG1fdGVzdEludGVyZmFjZXMgPSBpbnRlcmZhY2VzLT50ZXN0SW50ZXJmYWNl
cygpOwogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldERlbGVnYXRlKFdlYlRlc3REZWxl
Z2F0ZSogZGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UnVubmVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RSdW5uZXIuY3BwCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxMjY1ZDQ2ODYwYjQyMjVmNDQ4YzM4MDE5NTFlYTViZjQyZmZjODVi
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RSdW5uZXIuY3BwCisr
KyAvZGV2L251bGwKQEAgLTEsMjU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICog
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiV2ViVGVzdFJ1bm5lci5oIgotCi0jaW5jbHVkZSAiVGVzdFJ1bm5lci5oIgotCi11c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7Ci0KLVdlYlRlc3RS
dW5uZXI6OldlYlRlc3RSdW5uZXIoVGVzdFJ1bm5lciogdGVzdFJ1bm5lcikKLSAgICA6IG1fcHJp
dmF0ZSh0ZXN0UnVubmVyKQotewotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNob3VsZER1bXBF
ZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91bGRE
dW1wRWRpdGluZ0NhbGxiYWNrcygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNob3VsZER1
bXBBc1RleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBBc1Rl
eHQoKTsKLX0KLQotdm9pZCBXZWJUZXN0UnVubmVyOjpzZXRTaG91bGREdW1wQXNUZXh0KGJvb2wg
dmFsdWUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTaG91bGREdW1wQXNUZXh0KHZhbHVlKTsKLX0K
LQotYm9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGRHZW5lcmF0ZVBpeGVsUmVzdWx0cygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoKTsK
LX0KLQotdm9pZCBXZWJUZXN0UnVubmVyOjpzZXRTaG91bGRHZW5lcmF0ZVBpeGVsUmVzdWx0cyhi
b29sIHZhbHVlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxkR2VuZXJhdGVQaXhlbFJlc3Vs
dHModmFsdWUpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNob3VsZER1bXBDaGlsZEZyYW1l
U2Nyb2xsUG9zaXRpb25zKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91bGRE
dW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6
OnNob3VsZER1bXBDaGlsZEZyYW1lc0FzVGV4dCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c2hvdWxkRHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1
bm5lcjo6c2hvdWxkRHVtcEFzQXVkaW8oKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUt
PnNob3VsZER1bXBBc0F1ZGlvKCk7Ci19Ci0KLWNvbnN0IFdlYkFycmF5QnVmZmVyVmlldyogV2Vi
VGVzdFJ1bm5lcjo6YXVkaW9EYXRhKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5h
dWRpb0RhdGEoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGREdW1wRnJhbWVMb2Fk
Q2FsbGJhY2tzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91bGREdW1wRnJh
bWVMb2FkQ2FsbGJhY2tzKCk7Ci19Ci0KLXZvaWQgV2ViVGVzdFJ1bm5lcjo6c2V0U2hvdWxkRHVt
cEZyYW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hv
dWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyh2YWx1ZSk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5l
cjo6c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdAotewot
ICAgIHJldHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2Fs
bGJhY2tzKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6c3RvcFByb3Zpc2lvbmFsRnJhbWVM
b2FkcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3RvcFByb3Zpc2lvbmFsRnJh
bWVMb2FkcygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNob3VsZER1bXBUaXRsZUNoYW5n
ZXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBUaXRsZUNoYW5n
ZXMoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGREdW1wQ3JlYXRlVmlldygpIGNv
bnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkRHVtcENyZWF0ZVZpZXcoKTsKLX0K
LQotYm9vbCBXZWJUZXN0UnVubmVyOjpjYW5PcGVuV2luZG93cygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+Y2FuT3BlbldpbmRvd3MoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVy
OjpzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5zaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCk7Ci19Ci0KLWJvb2wg
V2ViVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcFJlc291cmNlUmVxdWVzdENhbGxiYWNrcygpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkRHVtcFJlc291cmNlUmVxdWVzdENhbGxi
YWNrcygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNob3VsZER1bXBSZXNvdXJjZVJlc3Bv
bnNlTUlNRVR5cGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91bGREdW1w
UmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOwotfQotCi1XZWJQZXJtaXNzaW9uQ2xpZW50KiBX
ZWJUZXN0UnVubmVyOjp3ZWJQZXJtaXNzaW9ucygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+d2ViUGVybWlzc2lvbnMoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGRE
dW1wU3RhdHVzQ2FsbGJhY2tzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91
bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6c2hvdWxk
RHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjaygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjaygpOwotfQotCi1ib29sIFdl
YlRlc3RSdW5uZXI6OnNob3VsZER1bXBCYWNrRm9yd2FyZExpc3QoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBCYWNrRm9yd2FyZExpc3QoKTsKLX0KLQotYm9vbCBX
ZWJUZXN0UnVubmVyOjpkZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5kZWZlck1haW5SZXNvdXJjZURhdGFMb2FkKCk7Ci19Ci0KLWJvb2wg
V2ViVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCk7Ci19Ci0KLWJvb2wgV2Vi
VGVzdFJ1bm5lcjo6dGVzdFJlcGFpbnQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUt
PnRlc3RSZXBhaW50KCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6c3dlZXBIb3Jpem9udGFs
bHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnN3ZWVwSG9yaXpvbnRhbGx5KCk7
Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6aXNQcmludGluZygpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+aXNQcmludGluZygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNo
b3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5zaG91bGRTdGF5T25QYWdlQWZ0ZXJIYW5kbGluZ0JlZm9yZVVubG9h
ZCgpOwotfQotCi12b2lkIFdlYlRlc3RSdW5uZXI6OnNldFRpdGxlVGV4dERpcmVjdGlvbihXZWJU
ZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBtX3ByaXZhdGUtPnNldFRpdGxlVGV4dERp
cmVjdGlvbihkaXJlY3Rpb24pOwotfQotCi1jb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIFdl
YlRlc3RSdW5uZXI6Omh0dHBIZWFkZXJzVG9DbGVhcigpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+aHR0cEhlYWRlcnNUb0NsZWFyKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6
c2hvdWxkQmxvY2tSZWRpcmVjdHMoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNo
b3VsZEJsb2NrUmVkaXJlY3RzKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6d2lsbFNlbmRS
ZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
d2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpOwotfQotCi12b2lkIFdlYlRlc3RSdW5u
ZXI6OnNldFRvcExvYWRpbmdGcmFtZShXZWJGcmFtZSogZnJhbWUsIGJvb2wgY2xlYXIpCi17Ci0g
ICAgbV9wcml2YXRlLT5zZXRUb3BMb2FkaW5nRnJhbWUoZnJhbWUsIGNsZWFyKTsKLX0KLQotV2Vi
RnJhbWUqIFdlYlRlc3RSdW5uZXI6OnRvcExvYWRpbmdGcmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0
dXJuIG1fcHJpdmF0ZS0+dG9wTG9hZGluZ0ZyYW1lKCk7Ci19Ci0KLXZvaWQgV2ViVGVzdFJ1bm5l
cjo6cG9saWN5RGVsZWdhdGVEb25lKCkKLXsKLSAgICBtX3ByaXZhdGUtPnBvbGljeURlbGVnYXRl
RG9uZSgpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnBvbGljeURlbGVnYXRlRW5hYmxlZCgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+cG9saWN5RGVsZWdhdGVFbmFibGVkKCk7
Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVJc1Blcm1pc3NpdmUoKSBj
b25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnBvbGljeURlbGVnYXRlSXNQZXJtaXNzaXZl
KCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVTaG91bGROb3RpZnlE
b25lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5wb2xpY3lEZWxlZ2F0ZVNob3Vs
ZE5vdGlmeURvbmUoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGRJbnRlcmNlcHRQ
b3N0TWVzc2FnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkSW50ZXJj
ZXB0UG9zdE1lc3NhZ2UoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjppc1NtYXJ0SW5zZXJ0
RGVsZXRlRW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNTbWFydElu
c2VydERlbGV0ZUVuYWJsZWQoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjppc1NlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUt
PmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwotfQotCi19CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4IGI1NjA4MDQ3MzA0Y2M0NTM5MDZm
ZmE1NDMwYzVhYjUxMzJiNWI2YzcuLjRmNjZjMTJjN2QzMTljNjZjZGI4MjhiNTdiNTU3ZjJkNDk4
OGI2YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCkBAIC04
NCw4ICs4NCw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRoZSBob3N0IGZvciB0aGUgbWFp
biBXZWJWaWV3LgogICAgIFdlYlZpZXdIb3N0KiB3ZWJWaWV3SG9zdCgpIGNvbnN0IHsgcmV0dXJu
IG1fd2ViVmlld0hvc3QuZ2V0KCk7IH0KICAgICBXZWJUZXN0UnVubmVyOjpXZWJUZXN0UnVubmVy
KiB0ZXN0UnVubmVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW50ZXJmYWNlcy0+dGVzdFJ1bm5l
cigpOyB9Ci0gICAgV2ViVGVzdFJ1bm5lcjo6V2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCkg
Y29uc3QgeyByZXR1cm4gbV90ZXN0SW50ZXJmYWNlcy0+ZXZlbnRTZW5kZXIoKTsgfQotICAgIFdl
YlRlc3RSdW5uZXI6OldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEludGVyZmFjZXMtPmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKCk7IH0KICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9OUykKICAgICBOb3RpZmljYXRp
b25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNvbnN0IHsgcmV0dXJuIG1fbm90
aWZpY2F0aW9uUHJlc2VudGVyLmdldCgpOyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBjNWU2NTc4MDA0ODFiM2JmMzVjYmNj
MDYzZDczM2Y1ODY1ODkyOWQ4Li5jYTgzOTFmZWEwYjkyZWU3ZDVhZjEyZDk1NGViNzQzYTFjNzBm
NDc3IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3Bw
CkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNsdWRlICJXZWJFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiV2ViRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRlICJXZWJGcmFtZS5oIgogI2lu
Y2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgogI2luY2x1ZGUgIldlYkhpc3RvcnlJ
dGVtLmgiCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRl
eCA0MGE4MTYwYzAxYTAwNTMyZjczZDg0NWY4NjY5ZmI4OTgyOGFlNGNjLi4zMjFmZDY5YjFhYWFh
NzQ2NDA1ZDdlMjBmYjU5MDkxNzNiYTg2N2M4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgV2ViVmlld0hv
c3RfaAogCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9sbGVyLmgiCi0jaW5jbHVkZSAi
V2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oIgogI2luY2x1ZGUgIldlYkN1cnNvckluZm8u
aCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1ZGUgIldlYkludGVudFJlcXVl
c3QuaCIK
</data>
<flag name="review"
          id="205775"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="205851"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186459</attachid>
            <date>2013-02-04 14:15:25 -0800</date>
            <delta_ts>2013-02-04 15:25:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-108467-20130204231204.patch</filename>
            <type>text/plain</type>
            <size>44370</size>
            <attacher>jochen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODA3CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmM0NjQ4OGU0NTcxYzI0ZDIzMzlhNjBmZjQ5MzQ3Y2Vm
YmY1ODJhZi4uNGU0NGQwZmFhYTliNzUxMDI1MjRmNDE4M2NhOGNjZmExMGI0NmUxMyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU0
IEBACiAyMDEzLTAyLTA0ICBKb2NoZW4gRWlzaW5nZXIgIDxqb2NoZW5AY2hyb21pdW0ub3JnPgog
CisgICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIFdlYkV2ZW50U2VuZGVyIGFuZCBXZWJBY2Nlc3Np
YmlsaXR5Q29udHJvbGxlciBmcm9tIHB1YmxpYyBUZXN0UnVubmVyIEFQSQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NDY3CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0R1bXBSZW5k
ZXJUcmVlLmd5cGk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9wdWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaDogUmVtb3ZlZC4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRl
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChXZWJUZXN0UnVubmVyKToK
KyAgICAgICAgKFdlYlRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0UHJveHkuaDoKKyAgICAgICAgKFdlYlRl
c3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFByb3h5QmFzZSk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFJ1bm5lci5oOgorICAg
ICAgICAoV2ViVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcik6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdElu
dGVyZmFjZXMuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6VGVzdEludGVyZmFjZXM6OlRl
c3RJbnRlcmZhY2VzKToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjpz
ZXRXZWJWaWV3KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXI6OlRlc3RJbnRlcmZhY2VzOjp3ZWJW
aWV3KToKKyAgICAgICAgKFdlYlRlc3RSdW5uZXIpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmg6CisgICAgICAgIChUZXN0
SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5l
ci9zcmMvVGVzdFJ1bm5lci5oOgorICAgICAgICAoVGVzdFJ1bm5lcik6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViQWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvc3JjL1dlYkV2ZW50U2VuZGVyLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHA6
CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6V2ViVGVzdEludGVy
ZmFjZXMpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6On5XZWJU
ZXN0SW50ZXJmYWNlcyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNl
czo6c2V0V2ViVmlldyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNl
czo6c2V0RGVsZWdhdGUpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFj
ZXM6OmJpbmRUbyk6CisgICAgICAgIChXZWJUZXN0UnVubmVyOjpXZWJUZXN0SW50ZXJmYWNlczo6
cmVzZXRBbGwpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6OnNl
dFRlc3RJc1J1bm5pbmcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFj
ZXM6OndlYlZpZXcpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6
OnRlc3RSdW5uZXIpOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2ViVGVzdEludGVyZmFjZXM6
OnRlc3RJbnRlcmZhY2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwOgorICAgICAgICAoV2ViVGVzdFJ1bm5lcjo6V2Vi
VGVzdFByb3h5QmFzZTo6c2V0SW50ZXJmYWNlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFJ1bm5lci5jcHA6IFJlbW92ZWQuCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAqIER1bXBSZW5k
ZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisKKzIwMTMtMDItMDQgIEpvY2hlbiBFaXNp
bmdlciAgPGpvY2hlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW2Nocm9taXVtXSByZW1vdmUg
V2ViVGVzdFBsdWdpbiBmcm9tIHRoZSBwdWJsaWMgVGVzdFJ1bm5lciBBUEkKICAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODQ2NwogCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBpIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvRHVtcFJlbmRlclRyZWUuZ3lwaQppbmRleCAxM2EwODg1NDY2MDdhZWQ3MjRhYWFk
NzQyN2ViNWY2ZTViMTJlMTM3Li43NzZhOGE1NmE2Y2ZjNDU0MTM5MjA4NWMxOTM5MjUwNzkwZTIx
YTY2IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9EdW1wUmVuZGVyVHJlZS5neXBp
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL0R1bXBSZW5kZXJUcmVlLmd5cGkKQEAgLTUyLDkg
KzUyLDcgQEAKICAgICAgICAgICAgICdjaHJvbWl1bS9XZWJWaWV3SG9zdC5oJywKICAgICAgICAg
XSwKICAgICAgICAgJ3Rlc3RfcnVubmVyX2ZpbGVzJzogWwotICAgICAgICAgICAgJ2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgnLAogICAgICAg
ICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3REZWxlZ2F0ZS5oJywKLSAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oJywK
ICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJQcmVmZXJlbmNlcy5o
JywKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJUYXNrLmgnLAog
ICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2Vz
LmgnLApAQCAtODYsOCArODQsNiBAQAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5uZXIv
c3JjL1RleHRJbnB1dENvbnRyb2xsZXIuaCcsCiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1
bm5lci9zcmMvVGVzdFJ1bm5lci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RSdW5uZXIuaCcsCi0gICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9z
cmMvV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuY3BwJywKLSAgICAgICAgICAgICdjaHJvbWl1
bS9UZXN0UnVubmVyL3NyYy9XZWJFdmVudFNlbmRlci5jcHAnLAogICAgICAgICAgICAgJ2Nocm9t
aXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlBlcm1pc3Npb25zLmNwcCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUGVybWlzc2lvbnMuaCcsCiAgICAgICAgICAgICAnY2hy
b21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViUHJlZmVyZW5jZXMuY3BwJywKQEAgLTk2LDcgKzkyLDYg
QEAKICAgICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UGx1Z2luLmNwcCcs
CiAgICAgICAgICAgICAnY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFBsdWdpbi5oJywKICAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwJywKLSAg
ICAgICAgICAgICdjaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UnVubmVyLmNwcCcsCiAg
ICAgICAgIF0sCiAgICAgICAgICd0ZXN0X3BsdWdpbl9maWxlcyc6IFsKICAgICAgICAgICAgICdU
ZXN0TmV0c2NhcGVQbHVnSW4vUGx1Z2luT2JqZWN0LmNwcCcsCmRpZmYgLS1naXQgYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjJlYzUwODY5MzJkZGMwMGFmODg3OTViOGYwMDg2YzFlNjYzMDViMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXJfaAotI2RlZmluZSBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCi0KLW5h
bWVzcGFjZSBXZWJLaXQgewotY2xhc3MgV2ViQWNjZXNzaWJpbGl0eU9iamVjdDsKLX0KLQotbmFt
ZXNwYWNlIFdlYlRlc3RSdW5uZXIgewotCi1jbGFzcyBBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsK
LQotY2xhc3MgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgewotcHVibGljOgotI2lmIFdFQlRF
U1RSVU5ORVJfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJBY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcihBY2Nlc3NpYmlsaXR5Q29udHJvbGxlciopOwotI2VuZGlmCi0KLSAgICB2b2lkIHNl
dEZvY3VzZWRFbGVtZW50KGNvbnN0IFdlYktpdDo6V2ViQWNjZXNzaWJpbGl0eU9iamVjdCYpOwot
ICAgIHZvaWQgbm90aWZpY2F0aW9uUmVjZWl2ZWQoY29uc3QgV2ViS2l0OjpXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0JiB0YXJnZXQsIGNvbnN0IGNoYXIqIG5vdGlmaWNhdGlvbk5hbWUpOwotICAgIGJv
b2wgc2hvdWxkTG9nQWNjZXNzaWJpbGl0eUV2ZW50cygpOwotCi1wcml2YXRlOgotICAgIEFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKiBtX3ByaXZhdGU7Ci19OwotCi19Ci0KLSNlbmRpZiAvLyBXZWJB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcl9oCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJFdmVudFNlbmRlci5oIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViRXZlbnRTZW5kZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdjNTllZmU2OWU1ZDNiYTI0NWMzNTVjYmFm
MGJlYjQ1MjViNDMxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1YmxpYy9XZWJF
dmVudFNlbmRlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHly
aWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRp
b24uCi0gKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0g
KiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgV2ViRXZl
bnRTZW5kZXJfaAotI2RlZmluZSBXZWJFdmVudFNlbmRlcl9oCi0KLSNpbmNsdWRlICJXZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkRyYWdPcGVyYXRpb24uaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7
Ci1jbGFzcyBXZWJEcmFnRGF0YTsKLX0KLQotbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewotCi1j
bGFzcyBFdmVudFNlbmRlcjsKLQotY2xhc3MgV2ViRXZlbnRTZW5kZXIgewotcHVibGljOgotI2lm
IFdFQlRFU1RSVU5ORVJfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJFdmVudFNlbmRl
cihFdmVudFNlbmRlciopOwotI2VuZGlmCi0KLSAgICAvLyBTaW11bGF0ZSBkcmFnJmRyb3Agc3lz
dGVtIGNhbGwuCi0gICAgdm9pZCBkb0RyYWdEcm9wKGNvbnN0IFdlYktpdDo6V2ViRHJhZ0RhdGEm
LCBXZWJLaXQ6OldlYkRyYWdPcGVyYXRpb25zTWFzayk7Ci0KLXByaXZhdGU6Ci0gICAgRXZlbnRT
ZW5kZXIqIG1fcHJpdmF0ZTsKLX07Ci0KLX0KLQotI2VuZGlmIC8vIFdlYkV2ZW50U2VuZGVyX2gK
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVi
bGljL1dlYlRlc3RJbnRlcmZhY2VzLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3B1YmxpYy9XZWJUZXN0SW50ZXJmYWNlcy5oCmluZGV4IDk1ZGVhNmQ4M2JmMmU5
M2U2NmQxNjM0ZDNjOTc3MWFiOTVlZDgwZTMuLjJjY2Q2MWUyNWMxMGJhNDcyMDg2MTUyMjA5NjM2
NTZlOTg4NmVkYjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rl
c3RSdW5uZXIvcHVibGljL1dlYlRlc3RJbnRlcmZhY2VzLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdEludGVyZmFjZXMuaApAQCAt
MzgsOCArMzgsNyBAQCBjbGFzcyBXZWJWaWV3OwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7
CiAKLWNsYXNzIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyOwotY2xhc3MgV2ViRXZlbnRTZW5k
ZXI7CitjbGFzcyBUZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIGNsYXNz
IFdlYlRlc3RSdW5uZXI7CiAKQEAgLTU1LDEzICs1NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCBz
ZXRUZXN0SXNSdW5uaW5nKGJvb2wpOwogCiAgICAgV2ViS2l0OjpXZWJWaWV3KiB3ZWJWaWV3KCkg
Y29uc3Q7Ci0gICAgV2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIqIGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKCk7Ci0gICAgV2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCk7CiAgICAgV2ViVGVz
dFJ1bm5lciogdGVzdFJ1bm5lcigpOwogCisjaWYgV0VCVEVTVFJVTk5FUl9JTVBMRU1FTlRBVElP
TgorICAgIFRlc3RJbnRlcmZhY2VzKiB0ZXN0SW50ZXJmYWNlcygpOworI2VuZGlmCisKIHByaXZh
dGU6Ci0gICAgY2xhc3MgSW50ZXJuYWw7Ci0gICAgSW50ZXJuYWwqIG1faW50ZXJuYWw7CisgICAg
VGVzdEludGVyZmFjZXMqIG1faW50ZXJmYWNlczsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RQcm94eS5o
IGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVz
dFByb3h5LmgKaW5kZXggYzFiMGY0NzUxZjA0NzJiMDAwNGFmMWVhMTJkODNkZDk3YmQxYzkwNy4u
NDI5MDk2OWJkZDdhNjg2N2M2MDNlZmE4OTQ3NWMwNWQ3ZjQwZmM1ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMvV2ViVGVzdFByb3h5
LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9wdWJsaWMv
V2ViVGVzdFByb3h5LmgKQEAgLTc0LDYgKzc0LDcgQEAgc3RydWN0IFdlYldpbmRvd0ZlYXR1cmVz
OwogbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewogCiBjbGFzcyBTcGVsbENoZWNrQ2xpZW50Owor
Y2xhc3MgVGVzdEludGVyZmFjZXM7CiBjbGFzcyBXZWJUZXN0RGVsZWdhdGU7CiBjbGFzcyBXZWJU
ZXN0SW50ZXJmYWNlczsKIGNsYXNzIFdlYlRlc3RSdW5uZXI7CkBAIC0xNjEsNyArMTYyLDcgQEAg
cHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICB2b2lkIGxvY2F0aW9uQ2hhbmdlRG9uZShXZWJLaXQ6
OldlYkZyYW1lKik7CiAKLSAgICBXZWJUZXN0SW50ZXJmYWNlcyogbV90ZXN0SW50ZXJmYWNlczsK
KyAgICBUZXN0SW50ZXJmYWNlcyogbV90ZXN0SW50ZXJmYWNlczsKICAgICBXZWJUZXN0RGVsZWdh
dGUqIG1fZGVsZWdhdGU7CiAKICAgICBTcGVsbENoZWNrQ2xpZW50KiBtX3NwZWxsY2hlY2s7CmRp
ZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3B1Ymxp
Yy9XZWJUZXN0UnVubmVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVu
bmVyL3B1YmxpYy9XZWJUZXN0UnVubmVyLmgKaW5kZXggYTk3YjkwN2JlOThiZTI0YjYxYmFmZTA4
OTE0YThiODM4NTU2N2VhYS4uOTllZGE4NjYxOGY3OTQzNmI2Y2IzZjZhYThhOGVmOTkxMTk2ODFh
YyAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9w
dWJsaWMvV2ViVGVzdFJ1bm5lci5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvcHVibGljL1dlYlRlc3RSdW5uZXIuaApAQCAtNDMsNTkgKzQzLDUwIEBAIGNs
YXNzIFdlYkZyYW1lOwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLWNsYXNzIFRlc3RS
dW5uZXI7Ci0KIGNsYXNzIFdlYlRlc3RSdW5uZXIgewogcHVibGljOgotI2lmIFdFQlRFU1RSVU5O
RVJfSU1QTEVNRU5UQVRJT04KLSAgICBleHBsaWNpdCBXZWJUZXN0UnVubmVyKFRlc3RSdW5uZXIq
KTsKLSNlbmRpZgotCi0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tz
KCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBBc1RleHQoKSBjb25zdDsKLSAg
ICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkRHVtcEFzVGV4dChib29sKTsKLSAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0U2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZER1bXBDaGlsZEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBi
b29sIHNob3VsZER1bXBDaGlsZEZyYW1lc0FzVGV4dCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREdW1wQXNBdWRpbygpIGNvbnN0OwotICAgIHZpcnR1YWwgY29uc3QgV2ViS2l0OjpX
ZWJBcnJheUJ1ZmZlclZpZXcqIGF1ZGlvRGF0YSgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dFNob3VsZER1bXBGcmFtZUxvYWRDYWxsYmFja3MoYm9vbCk7Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3Q7Ci0gICAgdmly
dHVhbCBib29sIHN0b3BQcm92aXNpb25hbEZyYW1lTG9hZHMoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRHVtcFRpdGxlQ2hhbmdlcygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBz
aG91bGREdW1wQ3JlYXRlVmlldygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBjYW5PcGVuV2lu
ZG93cygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2Fs
bGJhY2tzKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlcXVl
c3RDYWxsYmFja3MoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFJlc291cmNl
UmVzcG9uc2VNSU1FVHlwZXMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGVybWlz
c2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRHVtcFN0YXR1c0NhbGxiYWNrcygpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
dW1wUHJvZ3Jlc3NGaW5pc2hlZENhbGxiYWNrKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZER1bXBCYWNrRm9yd2FyZExpc3QoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgZGVmZXJN
YWluUmVzb3VyY2VEYXRhTG9hZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1w
U2VsZWN0aW9uUmVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgYm9vbCB0ZXN0UmVwYWludCgpIGNv
bnN0OwotICAgIHZpcnR1YWwgYm9vbCBzd2VlcEhvcml6b250YWxseSgpIGNvbnN0OwotICAgIHZp
cnR1YWwgYm9vbCBpc1ByaW50aW5nKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNob3VsZFN0
YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCB2
b2lkIHNldFRpdGxlVGV4dERpcmVjdGlvbihXZWJLaXQ6OldlYlRleHREaXJlY3Rpb24pOwotICAg
IHZpcnR1YWwgY29uc3Qgc3RkOjpzZXQ8c3RkOjpzdHJpbmc+KiBodHRwSGVhZGVyc1RvQ2xlYXIo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmxvY2tSZWRpcmVjdHMoKSBjb25zdDsK
LSAgICB2aXJ0dWFsIGJvb2wgd2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0
OwotICAgIHZpcnR1YWwgdm9pZCBzZXRUb3BMb2FkaW5nRnJhbWUoV2ViS2l0OjpXZWJGcmFtZSos
IGJvb2wpOwotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJGcmFtZSogdG9wTG9hZGluZ0ZyYW1lKCkg
Y29uc3Q7Ci0gICAgdmlydHVhbCB2b2lkIHBvbGljeURlbGVnYXRlRG9uZSgpOwotICAgIHZpcnR1
YWwgYm9vbCBwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wg
cG9saWN5RGVsZWdhdGVJc1Blcm1pc3NpdmUoKSBjb25zdDsKLSAgICB2aXJ0dWFsIGJvb2wgcG9s
aWN5RGVsZWdhdGVTaG91bGROb3RpZnlEb25lKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIHNo
b3VsZEludGVyY2VwdFBvc3RNZXNzYWdlKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU21h
cnRJbnNlcnREZWxldGVFbmFibGVkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBib29sIGlzU2VsZWN0
VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIFRlc3RS
dW5uZXIqIG1fcHJpdmF0ZTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcEVkaXRpbmdDYWxs
YmFja3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBBc1RleHQoKSBj
b25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZER1bXBBc1RleHQoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRHZW5lcmF0ZVBpeGVsUmVzdWx0cygpIGNvbnN0ID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0U2hvdWxkR2VuZXJhdGVQaXhlbFJlc3VsdHMoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9u
cygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVzQXNU
ZXh0KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wQXNBdWRpbygpIGNv
bnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6V2ViQXJyYXlCdWZmZXJWaWV3KiBh
dWRpb0RhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBGcmFtZUxv
YWRDYWxsYmFja3MoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFNob3VsZER1bXBG
cmFtZUxvYWRDYWxsYmFja3MoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1w
VXNlckdlc3R1cmVJbkZyYW1lTG9hZENhbGxiYWNrcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgc3RvcFByb3Zpc2lvbmFsRnJhbWVMb2FkcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRHVtcFRpdGxlQ2hhbmdlcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRHVtcENyZWF0ZVZpZXcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGNh
bk9wZW5XaW5kb3dzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wUmVz
b3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRE
dW1wUmVzb3VyY2VSZXF1ZXN0Q2FsbGJhY2tzKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9v
bCBzaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIGNvbnN0ID0gMDsKKyAgICB2
aXJ0dWFsIFdlYktpdDo6V2ViUGVybWlzc2lvbkNsaWVudCogd2ViUGVybWlzc2lvbnMoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBTdGF0dXNDYWxsYmFja3MoKSBjb25z
dCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBQcm9ncmVzc0ZpbmlzaGVkQ2FsbGJh
Y2soKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBCYWNrRm9yd2FyZExp
c3QoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGRlZmVyTWFpblJlc291cmNlRGF0YUxv
YWQoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBTZWxlY3Rpb25SZWN0
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCB0ZXN0UmVwYWludCgpIGNvbnN0ID0gMDsK
KyAgICB2aXJ0dWFsIGJvb2wgc3dlZXBIb3Jpem9udGFsbHkoKSBjb25zdCA9IDA7CisgICAgdmly
dHVhbCBib29sIGlzUHJpbnRpbmcoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHNob3Vs
ZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2FkKCkgY29uc3QgPSAwOworICAgIHZp
cnR1YWwgdm9pZCBzZXRUaXRsZVRleHREaXJlY3Rpb24oV2ViS2l0OjpXZWJUZXh0RGlyZWN0aW9u
KSA9IDA7CisgICAgdmlydHVhbCBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIGh0dHBIZWFk
ZXJzVG9DbGVhcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkQmxvY2tSZWRp
cmVjdHMoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHdpbGxTZW5kUmVxdWVzdFNob3Vs
ZFJldHVybk51bGwoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldFRvcExvYWRpbmdG
cmFtZShXZWJLaXQ6OldlYkZyYW1lKiwgYm9vbCkgPSAwOworICAgIHZpcnR1YWwgV2ViS2l0OjpX
ZWJGcmFtZSogdG9wTG9hZGluZ0ZyYW1lKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBw
b2xpY3lEZWxlZ2F0ZURvbmUoKSA9IDA7CisgICAgdmlydHVhbCBib29sIHBvbGljeURlbGVnYXRl
RW5hYmxlZCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgcG9saWN5RGVsZWdhdGVJc1Bl
cm1pc3NpdmUoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIHBvbGljeURlbGVnYXRlU2hv
dWxkTm90aWZ5RG9uZSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJj
ZXB0UG9zdE1lc3NhZ2UoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBib29sIGlzU21hcnRJbnNl
cnREZWxldGVFbmFibGVkKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc1NlbGVjdFRy
YWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdCA9IDA7CiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVudFNlbmRl
ci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9FdmVu
dFNlbmRlci5jcHAKaW5kZXggMGE0NDU3ZjRlNGE5ZTg2NDEyMDNlYTg2Y2Q3MjdlOTg1MTAxMjBi
Yy4uYWI2MDE5M2Q3NzA4MmQzOWM1NTZmM2UzOWMzM2EwMDQzNzk2NWY1YiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvRXZlbnRTZW5kZXIu
Y3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL0V2
ZW50U2VuZGVyLmNwcApAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgIk1vY2tTcGVsbENoZWNr
LmgiCiAjaW5jbHVkZSAiV2ViQ29udGV4dE1lbnVEYXRhLmgiCiAjaW5jbHVkZSAiV2ViRHJhZ09w
ZXJhdGlvbi5oIgotI2luY2x1ZGUgIldlYkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiV2ViVGVz
dERlbGVnYXRlLmgiCiAjaW5jbHVkZSAiV2ViVG91Y2hQb2ludC5oIgogI2luY2x1ZGUgIldlYlZp
ZXcuaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5u
ZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmNwcAppbmRleCAwN2M0NzY2YzE1YjViOTZk
NjEwZmJhNzQyNWU3YTI4MzQ0NTkzZjg3Li5lM2RjZjgwMjA1MTZjNWMxYmZlMTVjMzJjNmQyNzQw
MWNlNWIxNjA4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0
UnVubmVyL3NyYy9UZXN0SW50ZXJmYWNlcy5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuY3BwCkBAIC00NSw2ICs0NSw3
IEBAIHVzaW5nIFdlYktpdDo6V2ViVmlldzsKIG5hbWVzcGFjZSBXZWJUZXN0UnVubmVyIHsKIAog
VGVzdEludGVyZmFjZXM6OlRlc3RJbnRlcmZhY2VzKCkKKyAgICA6IG1fd2ViVmlldygwKQogewog
ICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIgPSBhZG9wdFB0cihuZXcgQWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIoKSk7CiAgICAgbV9ldmVudFNlbmRlciA9IGFkb3B0UHRyKG5ldyBFdmVudFNl
bmRlcigpKTsKQEAgLTcwLDYgKzcxLDcgQEAgVGVzdEludGVyZmFjZXM6On5UZXN0SW50ZXJmYWNl
cygpCiAKIHZvaWQgVGVzdEludGVyZmFjZXM6OnNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldykK
IHsKKyAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OwogICAgIG1fYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXItPnNldFdlYlZpZXcod2ViVmlldyk7CiAgICAgbV9ldmVudFNlbmRlci0+c2V0V2ViVmlldyh3
ZWJWaWV3KTsKICAgICAvLyBtX2dhbWVwYWRDb250cm9sbGVyIGRvZXNuJ3QgZGVwZW5kIG9uIFdl
YlZpZXcuCkBAIC0xMjUsNCArMTI3LDkgQEAgVGVzdFJ1bm5lciogVGVzdEludGVyZmFjZXM6OnRl
c3RSdW5uZXIoKQogICAgIHJldHVybiBtX3Rlc3RSdW5uZXIuZ2V0KCk7CiB9CiAKK1dlYlZpZXcq
IFRlc3RJbnRlcmZhY2VzOjp3ZWJWaWV3KCkKK3sKKyAgICByZXR1cm4gbV93ZWJWaWV3OworfQor
CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0SW50ZXJmYWNlcy5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVz
dFJ1bm5lci9zcmMvVGVzdEludGVyZmFjZXMuaAppbmRleCA5OTZmM2Q3ODgzNmQ1MDE2M2I3ZWQ4
MDk1NTEwNzAwNjQ4ODYwYWY1Li5kODM0YzQwYjE2Mjc0MmE2NDg2MWFjZDRjYmM3OGI2ZWJiZTc0
OTI5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVy
L3NyYy9UZXN0SW50ZXJmYWNlcy5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RSdW5uZXIvc3JjL1Rlc3RJbnRlcmZhY2VzLmgKQEAgLTYxLDYgKzYxLDggQEAgcHVibGlj
OgogICAgIEFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigp
OwogICAgIEV2ZW50U2VuZGVyKiBldmVudFNlbmRlcigpOwogICAgIFRlc3RSdW5uZXIqIHRlc3RS
dW5uZXIoKTsKKyAgICBXZWJLaXQ6OldlYlZpZXcqIHdlYlZpZXcoKTsKKwogCiBwcml2YXRlOgog
ICAgIE93blB0cjxBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcj4gbV9hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcjsKQEAgLTY4LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8R2FtZXBhZENvbnRy
b2xsZXI+IG1fZ2FtZXBhZENvbnRyb2xsZXI7CiAgICAgT3duUHRyPFRleHRJbnB1dENvbnRyb2xs
ZXI+IG1fdGV4dElucHV0Q29udHJvbGxlcjsKICAgICBPd25QdHI8VGVzdFJ1bm5lcj4gbV90ZXN0
UnVubmVyOworICAgIFdlYktpdDo6V2ViVmlldyogbV93ZWJWaWV3OwogfTsKIAogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVzdFJ1
bm5lci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvVGVz
dFJ1bm5lci5oCmluZGV4IDgyOGZiNGJiMGY3OTIxNWRkNThmNzg5NGMxN2M2OGE0NWZiMDA0ZWMu
LmQ4NTJkN2M4OTZiNzJkN2YzNTQzYzBiYmE4NDFiYmQzODYwYWI0M2EgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1Rlc3RSdW5uZXIuaAor
KysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9UZXN0UnVu
bmVyLmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlICJXZWJBcnJheUJ1ZmZlclZpZXcuaCIK
ICNpbmNsdWRlICJXZWJEZWxpdmVyZWRJbnRlbnRDbGllbnQuaCIKICNpbmNsdWRlICJXZWJUYXNr
LmgiCisjaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgogI2luY2x1ZGUgIldlYlRleHREaXJlY3Rp
b24uaCIKICNpbmNsdWRlIDxwdWJsaWMvV2ViVVJMLmg+CiAjaW5jbHVkZSA8c2V0PgpAQCAtNTQs
NyArNTUsNyBAQCBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiBjbGFzcyBXZWJQZXJtaXNzaW9u
czsKIGNsYXNzIFdlYlRlc3REZWxlZ2F0ZTsKIAotY2xhc3MgVGVzdFJ1bm5lciA6IHB1YmxpYyBD
cHBCb3VuZENsYXNzIHsKK2NsYXNzIFRlc3RSdW5uZXIgOiBwdWJsaWMgV2ViVGVzdFJ1bm5lciwg
cHVibGljIENwcEJvdW5kQ2xhc3MgewogcHVibGljOgogICAgIFRlc3RSdW5uZXIoKTsKICAgICB2
aXJ0dWFsIH5UZXN0UnVubmVyKCk7CkBAIC02Nyw0OCArNjgsNTAgQEAgcHVibGljOgogICAgIFdl
YlRhc2tMaXN0KiB0YXNrTGlzdCgpIHsgcmV0dXJuICZtX3Rhc2tMaXN0OyB9CiAKICAgICB2b2lk
IHNldFRlc3RJc1J1bm5pbmcoYm9vbCk7Ci0gICAgYm9vbCBzaG91bGREdW1wRWRpdGluZ0NhbGxi
YWNrcygpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRHVtcEFzVGV4dCgpIGNvbnN0OwotICAgIHZv
aWQgc2V0U2hvdWxkRHVtcEFzVGV4dChib29sKTsKLSAgICBib29sIHNob3VsZEdlbmVyYXRlUGl4
ZWxSZXN1bHRzKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRTaG91bGRHZW5lcmF0ZVBpeGVsUmVzdWx0
cyhib29sKTsKLSAgICBib29sIHNob3VsZER1bXBDaGlsZEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkg
Y29uc3Q7Ci0gICAgYm9vbCBzaG91bGREdW1wQ2hpbGRGcmFtZXNBc1RleHQoKSBjb25zdDsKLSAg
ICBib29sIHNob3VsZER1bXBBc0F1ZGlvKCkgY29uc3Q7Ci0gICAgY29uc3QgV2ViS2l0OjpXZWJB
cnJheUJ1ZmZlclZpZXcqIGF1ZGlvRGF0YSgpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRHVtcEZy
YW1lTG9hZENhbGxiYWNrcygpIGNvbnN0OwotICAgIHZvaWQgc2V0U2hvdWxkRHVtcEZyYW1lTG9h
ZENhbGxiYWNrcyhib29sKTsKLSAgICBib29sIHNob3VsZER1bXBVc2VyR2VzdHVyZUluRnJhbWVM
b2FkQ2FsbGJhY2tzKCkgY29uc3Q7Ci0gICAgYm9vbCBzdG9wUHJvdmlzaW9uYWxGcmFtZUxvYWRz
KCkgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGREdW1wVGl0bGVDaGFuZ2VzKCkgY29uc3Q7Ci0gICAg
Ym9vbCBzaG91bGREdW1wQ3JlYXRlVmlldygpIGNvbnN0OwotICAgIGJvb2wgY2FuT3BlbldpbmRv
d3MoKSBjb25zdDsKLSAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBj
b25zdDsKLSAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlcXVlc3RDYWxsYmFja3MoKSBjb25z
dDsKLSAgICBib29sIHNob3VsZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3Q7
Ci0gICAgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJtaXNzaW9ucygpIGNvbnN0
OwotICAgIGJvb2wgc2hvdWxkRHVtcFN0YXR1c0NhbGxiYWNrcygpIGNvbnN0OwotICAgIGJvb2wg
c2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjaygpIGNvbnN0OwotICAgIGJvb2wgc2hv
dWxkRHVtcEJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0OwotICAgIGJvb2wgZGVmZXJNYWluUmVzb3Vy
Y2VEYXRhTG9hZCgpIGNvbnN0OwotICAgIGJvb2wgc2hvdWxkRHVtcFNlbGVjdGlvblJlY3QoKSBj
b25zdDsKLSAgICBib29sIHRlc3RSZXBhaW50KCkgY29uc3Q7Ci0gICAgYm9vbCBzd2VlcEhvcml6
b250YWxseSgpIGNvbnN0OwotICAgIGJvb2wgaXNQcmludGluZygpIGNvbnN0OwotICAgIGJvb2wg
c2hvdWxkU3RheU9uUGFnZUFmdGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdDsKLSAgICB2
b2lkIHNldFRpdGxlVGV4dERpcmVjdGlvbihXZWJLaXQ6OldlYlRleHREaXJlY3Rpb24pOwotICAg
IGNvbnN0IHN0ZDo6c2V0PHN0ZDo6c3RyaW5nPiogaHR0cEhlYWRlcnNUb0NsZWFyKCkgY29uc3Q7
Ci0gICAgYm9vbCBzaG91bGRCbG9ja1JlZGlyZWN0cygpIGNvbnN0OwotICAgIGJvb2wgd2lsbFNl
bmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0OwotICAgIHZvaWQgc2V0VG9wTG9hZGlu
Z0ZyYW1lKFdlYktpdDo6V2ViRnJhbWUqLCBib29sKTsKLSAgICBXZWJLaXQ6OldlYkZyYW1lKiB0
b3BMb2FkaW5nRnJhbWUoKSBjb25zdDsKLSAgICB2b2lkIHBvbGljeURlbGVnYXRlRG9uZSgpOwot
ICAgIGJvb2wgcG9saWN5RGVsZWdhdGVFbmFibGVkKCkgY29uc3Q7Ci0gICAgYm9vbCBwb2xpY3lE
ZWxlZ2F0ZUlzUGVybWlzc2l2ZSgpIGNvbnN0OwotICAgIGJvb2wgcG9saWN5RGVsZWdhdGVTaG91
bGROb3RpZnlEb25lKCkgY29uc3Q7Ci0gICAgYm9vbCBzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2Fn
ZSgpIGNvbnN0OwotICAgIGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKSBjb25zdDsK
LSAgICBib29sIGlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpIGNvbnN0OworCisg
ICAgLy8gV2ViVGVzdFJ1bm5lciBpbXBsZW1lbnRhdGlvbi4KKyAgICB2aXJ0dWFsIGJvb2wgc2hv
dWxkRHVtcEVkaXRpbmdDYWxsYmFja3MoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkRHVtcEFzVGV4dCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9pZCBz
ZXRTaG91bGREdW1wQXNUZXh0KGJvb2wpIE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGRHZW5lcmF0ZVBpeGVsUmVzdWx0cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRTaG91bGRHZW5lcmF0ZVBpeGVsUmVzdWx0cyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0
dWFsIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVTY3JvbGxQb3NpdGlvbnMoKSBjb25zdCBPVkVS
UklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcENoaWxkRnJhbWVzQXNUZXh0KCkgY29u
c3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBBc0F1ZGlvKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldyog
YXVkaW9EYXRhKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBG
cmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0
U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyhib29sKSBPVkVSUklERTsKKyAgICB2aXJ0dWFs
IGJvb2wgc2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxsYmFja3MoKSBjb25zdCBP
VkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc3RvcFByb3Zpc2lvbmFsRnJhbWVMb2FkcygpIGNv
bnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wVGl0bGVDaGFuZ2VzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBDcmVhdGVWaWV3KCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGNhbk9wZW5XaW5kb3dzKCkgY29uc3Qg
T1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBSZXNvdXJjZUxvYWRDYWxsYmFj
a3MoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVtcFJlc291cmNl
UmVxdWVzdENhbGxiYWNrcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91
bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpIGNvbnN0IE9WRVJSSURFOworICAgIHZp
cnR1YWwgV2ViS2l0OjpXZWJQZXJtaXNzaW9uQ2xpZW50KiB3ZWJQZXJtaXNzaW9ucygpIGNvbnN0
IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCkg
Y29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHNob3VsZER1bXBQcm9ncmVzc0Zpbmlz
aGVkQ2FsbGJhY2soKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkRHVt
cEJhY2tGb3J3YXJkTGlzdCgpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBkZWZl
ck1haW5SZXNvdXJjZURhdGFMb2FkKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29s
IHNob3VsZER1bXBTZWxlY3Rpb25SZWN0KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBi
b29sIHRlc3RSZXBhaW50KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIHN3ZWVw
SG9yaXpvbnRhbGx5KCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCBib29sIGlzUHJpbnRp
bmcoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkU3RheU9uUGFnZUFm
dGVySGFuZGxpbmdCZWZvcmVVbmxvYWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0VGl0bGVUZXh0RGlyZWN0aW9uKFdlYktpdDo6V2ViVGV4dERpcmVjdGlvbikgT1ZFUlJJ
REU7CisgICAgdmlydHVhbCBjb25zdCBzdGQ6OnNldDxzdGQ6OnN0cmluZz4qIGh0dHBIZWFkZXJz
VG9DbGVhcigpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRCbG9ja1Jl
ZGlyZWN0cygpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgYm9vbCB3aWxsU2VuZFJlcXVl
c3RTaG91bGRSZXR1cm5OdWxsKCkgY29uc3QgT1ZFUlJJREU7CisgICAgdmlydHVhbCB2b2lkIHNl
dFRvcExvYWRpbmdGcmFtZShXZWJLaXQ6OldlYkZyYW1lKiwgYm9vbCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBXZWJLaXQ6OldlYkZyYW1lKiB0b3BMb2FkaW5nRnJhbWUoKSBjb25zdCBPVkVSUklE
RTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9saWN5RGVsZWdhdGVEb25lKCkgT1ZFUlJJREU7CisgICAg
dmlydHVhbCBib29sIHBvbGljeURlbGVnYXRlRW5hYmxlZCgpIGNvbnN0IE9WRVJSSURFOworICAg
IHZpcnR1YWwgYm9vbCBwb2xpY3lEZWxlZ2F0ZUlzUGVybWlzc2l2ZSgpIGNvbnN0IE9WRVJSSURF
OworICAgIHZpcnR1YWwgYm9vbCBwb2xpY3lEZWxlZ2F0ZVNob3VsZE5vdGlmeURvbmUoKSBjb25z
dCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgc2hvdWxkSW50ZXJjZXB0UG9zdE1lc3NhZ2Uo
KSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTbWFydEluc2VydERlbGV0ZUVu
YWJsZWQoKSBjb25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNTZWxlY3RUcmFpbGlu
Z1doaXRlc3BhY2VFbmFibGVkKCkgY29uc3QgT1ZFUlJJREU7CiAKICAgICAvLyBBIHNpbmdsZSBp
dGVtIGluIHRoZSB3b3JrIHF1ZXVlLgogICAgIGNsYXNzIFdvcmtJdGVtIHsKZGlmZiAtLWdpdCBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYkFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RS
dW5uZXIvc3JjL1dlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmNwcApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2ZiZTMwOTQ1YjkwN2Y1MmNiNzU2NzcyNTRlNGFkZDgzY2FhMTZhNi4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJBY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0gKiBtZXQ6Ci0gKgotICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSAqIGRpc3RyaWJ1dGlvbi4K
LSAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKLSAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0gKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0gKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0gKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5o
IgotI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCi0KLSNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlckNocm9taXVtLmgiCi0KLXVzaW5nIFdlYktpdDo6V2ViQWNj
ZXNzaWJpbGl0eU9iamVjdDsKLQotbmFtZXNwYWNlIFdlYlRlc3RSdW5uZXIgewotCi1XZWJBY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcjo6V2ViQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIoQWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIqIGNvbnRyb2xsZXIpCi0gICAgOiBtX3ByaXZhdGUoY29udHJvbGxlcikK
LXsKLX0KLQotdm9pZCBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2V0Rm9jdXNlZEVsZW1l
bnQoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9iamVjdCYgb2JqZWN0KQotewotICAgIG1fcHJpdmF0
ZS0+c2V0Rm9jdXNlZEVsZW1lbnQob2JqZWN0KTsKLX0KLQotdm9pZCBXZWJBY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcjo6bm90aWZpY2F0aW9uUmVjZWl2ZWQoY29uc3QgV2ViQWNjZXNzaWJpbGl0eU9i
amVjdCYgdGFyZ2V0LCBjb25zdCBjaGFyKiBub3RpZmljYXRpb25OYW1lKQotewotICAgIG1fcHJp
dmF0ZS0+bm90aWZpY2F0aW9uUmVjZWl2ZWQodGFyZ2V0LCBub3RpZmljYXRpb25OYW1lKTsKLX0K
LQotYm9vbCBXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjo6c2hvdWxkTG9nQWNjZXNzaWJpbGl0
eUV2ZW50cygpCi17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkTG9nQWNjZXNzaWJpbGl0
eUV2ZW50cygpOwotfQotCi19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9UZXN0UnVubmVyL3NyYy9XZWJFdmVudFNlbmRlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJFdmVudFNlbmRlci5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzYzBiYmE0OThlZTNkMGY2OTYyOGVlMDU1MmMzYjg5NDFh
MDM3NGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViRXZlbnRTZW5kZXIu
Y3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAot
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0gKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0gKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi0gKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0gKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNp
bmNsdWRlICJXZWJFdmVudFNlbmRlci5oIgotCi0jaW5jbHVkZSAiRXZlbnRTZW5kZXIuaCIKLQot
dXNpbmcgV2ViS2l0OjpXZWJEcmFnRGF0YTsKLXVzaW5nIFdlYktpdDo6V2ViRHJhZ09wZXJhdGlv
bnNNYXNrOwotCi1uYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7Ci0KLVdlYkV2ZW50U2VuZGVyOjpX
ZWJFdmVudFNlbmRlcihFdmVudFNlbmRlciogZXZlbnRTZW5kZXIpCi0gICAgOiBtX3ByaXZhdGUo
ZXZlbnRTZW5kZXIpCi17Ci19Ci0KLXZvaWQgV2ViRXZlbnRTZW5kZXI6OmRvRHJhZ0Ryb3AoY29u
c3QgV2ViRHJhZ0RhdGEmIGRhdGEsIFdlYkRyYWdPcGVyYXRpb25zTWFzayBtYXNrKQotewotICAg
IG1fcHJpdmF0ZS0+ZG9EcmFnRHJvcChkYXRhLCBtYXNrKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdEludGVy
ZmFjZXMuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMv
V2ViVGVzdEludGVyZmFjZXMuY3BwCmluZGV4IDA5M2Q3YTYyZTE0YjJmYmE4MzBjOGEyNjcxOTdl
MjliNjRkOGQzYjEuLjg5MjYzYmQ3YmUwMzlmNjRjYmZmYjkxNDFhZTdiMDY4ODRhMTc3ZDcgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRlc3RJbnRlcmZhY2VzLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0UnVubmVyL3NyYy9XZWJUZXN0SW50ZXJmYWNlcy5jcHAKQEAgLTMyLDEyNSArMzIsNjAgQEAK
ICNpbmNsdWRlICJXZWJUZXN0SW50ZXJmYWNlcy5oIgogCiAjaW5jbHVkZSAiVGVzdEludGVyZmFj
ZXMuaCIKLSNpbmNsdWRlICJXZWJBY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5oIgotI2luY2x1ZGUg
IldlYkV2ZW50U2VuZGVyLmgiCi0jaW5jbHVkZSAiV2ViVGVzdERlbGVnYXRlLmgiCi0jaW5jbHVk
ZSAiV2ViVGVzdFJ1bm5lci5oIgorI2luY2x1ZGUgIlRlc3RSdW5uZXIuaCIKIAotdXNpbmcgV2Vi
S2l0OjpXZWJDb250ZXh0TWVudURhdGE7Ci11c2luZyBXZWJLaXQ6OldlYkZyYW1lOwotdXNpbmcg
V2ViS2l0OjpXZWJHYW1lcGFkczsKLXVzaW5nIFdlYktpdDo6V2ViU3RyaW5nOwotdXNpbmcgV2Vi
S2l0OjpXZWJWZWN0b3I7Ci11c2luZyBXZWJLaXQ6OldlYlZpZXc7Cit1c2luZyBuYW1lc3BhY2Ug
V2ViS2l0OwogCiBuYW1lc3BhY2UgV2ViVGVzdFJ1bm5lciB7CiAKLWNsYXNzIFdlYlRlc3RJbnRl
cmZhY2VzOjpJbnRlcm5hbCB7Ci1wdWJsaWM6Ci0gICAgSW50ZXJuYWwoKTsKLSAgICB2aXJ0dWFs
IH5JbnRlcm5hbCgpOwotCi0gICAgVGVzdEludGVyZmFjZXMqIHRlc3RJbnRlcmZhY2VzKCkgeyBy
ZXR1cm4gJm1faW50ZXJmYWNlczsgfQotICAgIHZvaWQgc2V0RGVsZWdhdGUoV2ViVGVzdERlbGVn
YXRlKik7Ci0gICAgdm9pZCBzZXRXZWJWaWV3KFdlYlZpZXcqKTsKLSAgICB2b2lkIHNldFRlc3RJ
c1J1bm5pbmcoYm9vbCk7Ci0gICAgV2ViVmlldyogd2ViVmlldygpIGNvbnN0IHsgcmV0dXJuIG1f
d2ViVmlldzsgfQotICAgIFdlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyKiBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlcigpIHsgcmV0dXJuICZtX2FjY2Vzc2liaWxpdHlDb250cm9sbGVyOyB9Ci0gICAg
V2ViRXZlbnRTZW5kZXIqIGV2ZW50U2VuZGVyKCkgeyByZXR1cm4gJm1fZXZlbnRTZW5kZXI7IH0K
LSAgICBXZWJUZXN0UnVubmVyKiB0ZXN0UnVubmVyKCkgeyByZXR1cm4gJm1fdGVzdFJ1bm5lcjsg
fQotCi1wcml2YXRlOgotICAgIFRlc3RJbnRlcmZhY2VzIG1faW50ZXJmYWNlczsKLSAgICBib29s
IG1fdGVzdElzUnVubmluZzsKLSAgICBXZWJWaWV3KiBtX3dlYlZpZXc7Ci0gICAgV2ViQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIgbV9hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcjsKLSAgICBXZWJFdmVu
dFNlbmRlciBtX2V2ZW50U2VuZGVyOwotICAgIFdlYlRlc3RSdW5uZXIgbV90ZXN0UnVubmVyOwot
fTsKLQotV2ViVGVzdEludGVyZmFjZXM6OkludGVybmFsOjpJbnRlcm5hbCgpCi0gICAgOiBtX3Rl
c3RJc1J1bm5pbmcoZmFsc2UpCi0gICAgLCBtX3dlYlZpZXcoMCkKLSAgICAsIG1fYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIobV9pbnRlcmZhY2VzLmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCkpCi0g
ICAgLCBtX2V2ZW50U2VuZGVyKG1faW50ZXJmYWNlcy5ldmVudFNlbmRlcigpKQotICAgICwgbV90
ZXN0UnVubmVyKG1faW50ZXJmYWNlcy50ZXN0UnVubmVyKCkpCi17Ci19Ci0KLVdlYlRlc3RJbnRl
cmZhY2VzOjpJbnRlcm5hbDo6fkludGVybmFsKCkKLXsKLX0KLQotdm9pZCBXZWJUZXN0SW50ZXJm
YWNlczo6SW50ZXJuYWw6OnNldERlbGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCi17
Ci0gICAgbV9pbnRlcmZhY2VzLnNldERlbGVnYXRlKGRlbGVnYXRlKTsKLX0KLQotdm9pZCBXZWJU
ZXN0SW50ZXJmYWNlczo6SW50ZXJuYWw6OnNldFdlYlZpZXcoV2ViVmlldyogd2ViVmlldykKLXsK
LSAgICBtX3dlYlZpZXcgPSB3ZWJWaWV3OwotICAgIG1faW50ZXJmYWNlcy5zZXRXZWJWaWV3KHdl
YlZpZXcpOwotfQotCi12b2lkIFdlYlRlc3RJbnRlcmZhY2VzOjpJbnRlcm5hbDo6c2V0VGVzdElz
UnVubmluZyhib29sIHJ1bm5pbmcpCi17Ci0gICAgbV9pbnRlcmZhY2VzLnNldFRlc3RJc1J1bm5p
bmcocnVubmluZyk7Ci19Ci0KIFdlYlRlc3RJbnRlcmZhY2VzOjpXZWJUZXN0SW50ZXJmYWNlcygp
CiB7Ci0gICAgbV9pbnRlcm5hbCA9IG5ldyBJbnRlcm5hbDsKKyAgICBtX2ludGVyZmFjZXMgPSBu
ZXcgVGVzdEludGVyZmFjZXM7CiB9CiAKIFdlYlRlc3RJbnRlcmZhY2VzOjp+V2ViVGVzdEludGVy
ZmFjZXMoKQogewotICAgIGRlbGV0ZSBtX2ludGVybmFsOworICAgIGRlbGV0ZSBtX2ludGVyZmFj
ZXM7CiB9CiAKIHZvaWQgV2ViVGVzdEludGVyZmFjZXM6OnNldFdlYlZpZXcoV2ViVmlldyogd2Vi
VmlldykKIHsKLSAgICBtX2ludGVybmFsLT5zZXRXZWJWaWV3KHdlYlZpZXcpOworICAgIG1faW50
ZXJmYWNlcy0+c2V0V2ViVmlldyh3ZWJWaWV3KTsKIH0KIAogdm9pZCBXZWJUZXN0SW50ZXJmYWNl
czo6c2V0RGVsZWdhdGUoV2ViVGVzdERlbGVnYXRlKiBkZWxlZ2F0ZSkKIHsKLSAgICBtX2ludGVy
bmFsLT5zZXREZWxlZ2F0ZShkZWxlZ2F0ZSk7CisgICAgbV9pbnRlcmZhY2VzLT5zZXREZWxlZ2F0
ZShkZWxlZ2F0ZSk7CiB9CiAKIHZvaWQgV2ViVGVzdEludGVyZmFjZXM6OmJpbmRUbyhXZWJGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgbV9pbnRlcm5hbC0+dGVzdEludGVyZmFjZXMoKS0+YmluZFRvKGZy
YW1lKTsKKyAgICBtX2ludGVyZmFjZXMtPmJpbmRUbyhmcmFtZSk7CiB9CiAKIHZvaWQgV2ViVGVz
dEludGVyZmFjZXM6OnJlc2V0QWxsKCkKIHsKLSAgICBtX2ludGVybmFsLT50ZXN0SW50ZXJmYWNl
cygpLT5yZXNldEFsbCgpOworICAgIG1faW50ZXJmYWNlcy0+cmVzZXRBbGwoKTsKIH0KIAogdm9p
ZCBXZWJUZXN0SW50ZXJmYWNlczo6c2V0VGVzdElzUnVubmluZyhib29sIHJ1bm5pbmcpCiB7Ci0g
ICAgbV9pbnRlcm5hbC0+c2V0VGVzdElzUnVubmluZyhydW5uaW5nKTsKKyAgICBtX2ludGVyZmFj
ZXMtPnNldFRlc3RJc1J1bm5pbmcocnVubmluZyk7CiB9CiAKIFdlYlZpZXcqIFdlYlRlc3RJbnRl
cmZhY2VzOjp3ZWJWaWV3KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9pbnRlcm5hbC0+d2ViVmll
dygpOworICAgIHJldHVybiBtX2ludGVyZmFjZXMtPndlYlZpZXcoKTsKIH0KIAotV2ViQWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIqIFdlYlRlc3RJbnRlcmZhY2VzOjphY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcigpCi17Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPmFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KCk7Ci19Ci0KLVdlYkV2ZW50U2VuZGVyKiBXZWJUZXN0SW50ZXJmYWNlczo6ZXZlbnRTZW5kZXIo
KQorV2ViVGVzdFJ1bm5lciogV2ViVGVzdEludGVyZmFjZXM6OnRlc3RSdW5uZXIoKQogewotICAg
IHJldHVybiBtX2ludGVybmFsLT5ldmVudFNlbmRlcigpOworICAgIHJldHVybiBtX2ludGVyZmFj
ZXMtPnRlc3RSdW5uZXIoKTsKIH0KIAotV2ViVGVzdFJ1bm5lciogV2ViVGVzdEludGVyZmFjZXM6
OnRlc3RSdW5uZXIoKQorVGVzdEludGVyZmFjZXMqIFdlYlRlc3RJbnRlcmZhY2VzOjp0ZXN0SW50
ZXJmYWNlcygpCiB7Ci0gICAgcmV0dXJuIG1faW50ZXJuYWwtPnRlc3RSdW5uZXIoKTsKKyAgICBy
ZXR1cm4gbV9pbnRlcmZhY2VzOwogfQogCiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFJ1bm5lci9zcmMvV2ViVGVzdFByb3h5LmNwcAppbmRl
eCA1N2E3Y2RmNjIzNDIxZjBmMGRiMzRhN2M5M2JmNmU0MTUyYWMwYTZjLi43MmU4ZDU0NmM2Y2Nl
MDk2NGEyMGY1ODAzNGVmYmZlNDJkNzFkNDM0IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UHJveHkuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RQcm94eS5jcHAK
QEAgLTMxLDE2ICszMSwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlRl
c3RQcm94eS5oIgogCisjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUNvbnRyb2xsZXJDaHJvbWl1bS5o
IgorI2luY2x1ZGUgIkV2ZW50U2VuZGVyLmgiCiAjaW5jbHVkZSAiU3BlbGxDaGVja0NsaWVudC5o
IgorI2luY2x1ZGUgIlRlc3RJbnRlcmZhY2VzLmgiCiAjaW5jbHVkZSAiVGVzdFBsdWdpbi5oIgot
I2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiVGVzdFJ1
bm5lci5oIgogI2luY2x1ZGUgIldlYkFjY2Vzc2liaWxpdHlOb3RpZmljYXRpb24uaCIKICNpbmNs
dWRlICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiV2ViQ2FjaGVkVVJMUmVx
dWVzdC5oIgogI2luY2x1ZGUgIldlYkNvbnNvbGVNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViRGF0
YVNvdXJjZS5oIgogI2luY2x1ZGUgIldlYkVsZW1lbnQuaCIKLSNpbmNsdWRlICJXZWJFdmVudFNl
bmRlci5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViSW50ZW50LmgiCiAj
aW5jbHVkZSAiV2ViSW50ZW50UmVxdWVzdC5oIgpAQCAtMjcwLDcgKzI3Miw3IEBAIFdlYlRlc3RQ
cm94eUJhc2U6On5XZWJUZXN0UHJveHlCYXNlKCkKIAogdm9pZCBXZWJUZXN0UHJveHlCYXNlOjpz
ZXRJbnRlcmZhY2VzKFdlYlRlc3RJbnRlcmZhY2VzKiBpbnRlcmZhY2VzKQogewotICAgIG1fdGVz
dEludGVyZmFjZXMgPSBpbnRlcmZhY2VzOworICAgIG1fdGVzdEludGVyZmFjZXMgPSBpbnRlcmZh
Y2VzLT50ZXN0SW50ZXJmYWNlcygpOwogfQogCiB2b2lkIFdlYlRlc3RQcm94eUJhc2U6OnNldERl
bGVnYXRlKFdlYlRlc3REZWxlZ2F0ZSogZGVsZWdhdGUpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0UnVubmVyL3NyYy9XZWJUZXN0UnVubmVyLmNwcCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dlYlRlc3RSdW5uZXIu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjY1ZDQ2ODYwYjQyMjVmNDQ4YzM4
MDE5NTFlYTViZjQyZmZjODViLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RSdW5uZXIvc3JjL1dl
YlRlc3RSdW5uZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjU1ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJp
YnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICog
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAi
Y29uZmlnLmgiCi0jaW5jbHVkZSAiV2ViVGVzdFJ1bm5lci5oIgotCi0jaW5jbHVkZSAiVGVzdFJ1
bm5lci5oIgotCi11c2luZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgV2ViVGVzdFJ1
bm5lciB7Ci0KLVdlYlRlc3RSdW5uZXI6OldlYlRlc3RSdW5uZXIoVGVzdFJ1bm5lciogdGVzdFJ1
bm5lcikKLSAgICA6IG1fcHJpdmF0ZSh0ZXN0UnVubmVyKQotewotfQotCi1ib29sIFdlYlRlc3RS
dW5uZXI6OnNob3VsZER1bXBFZGl0aW5nQ2FsbGJhY2tzKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5zaG91bGREdW1wRWRpdGluZ0NhbGxiYWNrcygpOwotfQotCi1ib29sIFdlYlRl
c3RSdW5uZXI6OnNob3VsZER1bXBBc1RleHQoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZh
dGUtPnNob3VsZER1bXBBc1RleHQoKTsKLX0KLQotdm9pZCBXZWJUZXN0UnVubmVyOjpzZXRTaG91
bGREdW1wQXNUZXh0KGJvb2wgdmFsdWUpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRTaG91bGREdW1w
QXNUZXh0KHZhbHVlKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGRHZW5lcmF0ZVBp
eGVsUmVzdWx0cygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkR2VuZXJh
dGVQaXhlbFJlc3VsdHMoKTsKLX0KLQotdm9pZCBXZWJUZXN0UnVubmVyOjpzZXRTaG91bGRHZW5l
cmF0ZVBpeGVsUmVzdWx0cyhib29sIHZhbHVlKQotewotICAgIG1fcHJpdmF0ZS0+c2V0U2hvdWxk
R2VuZXJhdGVQaXhlbFJlc3VsdHModmFsdWUpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNo
b3VsZER1bXBDaGlsZEZyYW1lU2Nyb2xsUG9zaXRpb25zKCkgY29uc3QKLXsKLSAgICByZXR1cm4g
bV9wcml2YXRlLT5zaG91bGREdW1wQ2hpbGRGcmFtZVNjcm9sbFBvc2l0aW9ucygpOwotfQotCi1i
b29sIFdlYlRlc3RSdW5uZXI6OnNob3VsZER1bXBDaGlsZEZyYW1lc0FzVGV4dCgpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkRHVtcENoaWxkRnJhbWVzQXNUZXh0KCk7Ci19
Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcEFzQXVkaW8oKSBjb25zdAotewotICAg
IHJldHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBBc0F1ZGlvKCk7Ci19Ci0KLWNvbnN0IFdlYkFy
cmF5QnVmZmVyVmlldyogV2ViVGVzdFJ1bm5lcjo6YXVkaW9EYXRhKCkgY29uc3QKLXsKLSAgICBy
ZXR1cm4gbV9wcml2YXRlLT5hdWRpb0RhdGEoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpz
aG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2
YXRlLT5zaG91bGREdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCk7Ci19Ci0KLXZvaWQgV2ViVGVzdFJ1
bm5lcjo6c2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyhib29sIHZhbHVlKQotewotICAg
IG1fcHJpdmF0ZS0+c2V0U2hvdWxkRHVtcEZyYW1lTG9hZENhbGxiYWNrcyh2YWx1ZSk7Ci19Ci0K
LWJvb2wgV2ViVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcFVzZXJHZXN0dXJlSW5GcmFtZUxvYWRDYWxs
YmFja3MoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBVc2VyR2Vz
dHVyZUluRnJhbWVMb2FkQ2FsbGJhY2tzKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6c3Rv
cFByb3Zpc2lvbmFsRnJhbWVMb2FkcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+
c3RvcFByb3Zpc2lvbmFsRnJhbWVMb2FkcygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNo
b3VsZER1bXBUaXRsZUNoYW5nZXMoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNo
b3VsZER1bXBUaXRsZUNoYW5nZXMoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGRE
dW1wQ3JlYXRlVmlldygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkRHVt
cENyZWF0ZVZpZXcoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpjYW5PcGVuV2luZG93cygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+Y2FuT3BlbldpbmRvd3MoKTsKLX0KLQot
Ym9vbCBXZWJUZXN0UnVubmVyOjpzaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJhY2tzKCkgY29u
c3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91bGREdW1wUmVzb3VyY2VMb2FkQ2FsbGJh
Y2tzKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcFJlc291cmNlUmVxdWVz
dENhbGxiYWNrcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkRHVtcFJl
c291cmNlUmVxdWVzdENhbGxiYWNrcygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNob3Vs
ZER1bXBSZXNvdXJjZVJlc3BvbnNlTUlNRVR5cGVzKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9w
cml2YXRlLT5zaG91bGREdW1wUmVzb3VyY2VSZXNwb25zZU1JTUVUeXBlcygpOwotfQotCi1XZWJQ
ZXJtaXNzaW9uQ2xpZW50KiBXZWJUZXN0UnVubmVyOjp3ZWJQZXJtaXNzaW9ucygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+d2ViUGVybWlzc2lvbnMoKTsKLX0KLQotYm9vbCBXZWJU
ZXN0UnVubmVyOjpzaG91bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCkgY29uc3QKLXsKLSAgICByZXR1
cm4gbV9wcml2YXRlLT5zaG91bGREdW1wU3RhdHVzQ2FsbGJhY2tzKCk7Ci19Ci0KLWJvb2wgV2Vi
VGVzdFJ1bm5lcjo6c2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFjaygpIGNvbnN0Ci17
Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+c2hvdWxkRHVtcFByb2dyZXNzRmluaXNoZWRDYWxsYmFj
aygpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnNob3VsZER1bXBCYWNrRm9yd2FyZExpc3Qo
KSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBCYWNrRm9yd2FyZExp
c3QoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVyOjpkZWZlck1haW5SZXNvdXJjZURhdGFMb2Fk
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5kZWZlck1haW5SZXNvdXJjZURhdGFM
b2FkKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6c2hvdWxkRHVtcFNlbGVjdGlvblJlY3Qo
KSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnNob3VsZER1bXBTZWxlY3Rpb25SZWN0
KCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6dGVzdFJlcGFpbnQoKSBjb25zdAotewotICAg
IHJldHVybiBtX3ByaXZhdGUtPnRlc3RSZXBhaW50KCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5l
cjo6c3dlZXBIb3Jpem9udGFsbHkoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnN3
ZWVwSG9yaXpvbnRhbGx5KCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6aXNQcmludGluZygp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aXNQcmludGluZygpOwotfQotCi1ib29s
IFdlYlRlc3RSdW5uZXI6OnNob3VsZFN0YXlPblBhZ2VBZnRlckhhbmRsaW5nQmVmb3JlVW5sb2Fk
KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5zaG91bGRTdGF5T25QYWdlQWZ0ZXJI
YW5kbGluZ0JlZm9yZVVubG9hZCgpOwotfQotCi12b2lkIFdlYlRlc3RSdW5uZXI6OnNldFRpdGxl
VGV4dERpcmVjdGlvbihXZWJUZXh0RGlyZWN0aW9uIGRpcmVjdGlvbikKLXsKLSAgICBtX3ByaXZh
dGUtPnNldFRpdGxlVGV4dERpcmVjdGlvbihkaXJlY3Rpb24pOwotfQotCi1jb25zdCBzdGQ6OnNl
dDxzdGQ6OnN0cmluZz4qIFdlYlRlc3RSdW5uZXI6Omh0dHBIZWFkZXJzVG9DbGVhcigpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+aHR0cEhlYWRlcnNUb0NsZWFyKCk7Ci19Ci0KLWJv
b2wgV2ViVGVzdFJ1bm5lcjo6c2hvdWxkQmxvY2tSZWRpcmVjdHMoKSBjb25zdAotewotICAgIHJl
dHVybiBtX3ByaXZhdGUtPnNob3VsZEJsb2NrUmVkaXJlY3RzKCk7Ci19Ci0KLWJvb2wgV2ViVGVz
dFJ1bm5lcjo6d2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIG1fcHJpdmF0ZS0+d2lsbFNlbmRSZXF1ZXN0U2hvdWxkUmV0dXJuTnVsbCgpOwotfQot
Ci12b2lkIFdlYlRlc3RSdW5uZXI6OnNldFRvcExvYWRpbmdGcmFtZShXZWJGcmFtZSogZnJhbWUs
IGJvb2wgY2xlYXIpCi17Ci0gICAgbV9wcml2YXRlLT5zZXRUb3BMb2FkaW5nRnJhbWUoZnJhbWUs
IGNsZWFyKTsKLX0KLQotV2ViRnJhbWUqIFdlYlRlc3RSdW5uZXI6OnRvcExvYWRpbmdGcmFtZSgp
IGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+dG9wTG9hZGluZ0ZyYW1lKCk7Ci19Ci0K
LXZvaWQgV2ViVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdhdGVEb25lKCkKLXsKLSAgICBtX3ByaXZh
dGUtPnBvbGljeURlbGVnYXRlRG9uZSgpOwotfQotCi1ib29sIFdlYlRlc3RSdW5uZXI6OnBvbGlj
eURlbGVnYXRlRW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJpdmF0ZS0+cG9saWN5
RGVsZWdhdGVFbmFibGVkKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6cG9saWN5RGVsZWdh
dGVJc1Blcm1pc3NpdmUoKSBjb25zdAotewotICAgIHJldHVybiBtX3ByaXZhdGUtPnBvbGljeURl
bGVnYXRlSXNQZXJtaXNzaXZlKCk7Ci19Ci0KLWJvb2wgV2ViVGVzdFJ1bm5lcjo6cG9saWN5RGVs
ZWdhdGVTaG91bGROb3RpZnlEb25lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9wcml2YXRlLT5w
b2xpY3lEZWxlZ2F0ZVNob3VsZE5vdGlmeURvbmUoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVubmVy
OjpzaG91bGRJbnRlcmNlcHRQb3N0TWVzc2FnZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fcHJp
dmF0ZS0+c2hvdWxkSW50ZXJjZXB0UG9zdE1lc3NhZ2UoKTsKLX0KLQotYm9vbCBXZWJUZXN0UnVu
bmVyOjppc1NtYXJ0SW5zZXJ0RGVsZXRlRW5hYmxlZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1f
cHJpdmF0ZS0+aXNTbWFydEluc2VydERlbGV0ZUVuYWJsZWQoKTsKLX0KLQotYm9vbCBXZWJUZXN0
UnVubmVyOjppc1NlbGVjdFRyYWlsaW5nV2hpdGVzcGFjZUVuYWJsZWQoKSBjb25zdAotewotICAg
IHJldHVybiBtX3ByaXZhdGUtPmlzU2VsZWN0VHJhaWxpbmdXaGl0ZXNwYWNlRW5hYmxlZCgpOwot
fQotCi19CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hl
bGwuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5oCmluZGV4IGI1
NjA4MDQ3MzA0Y2M0NTM5MDZmZmE1NDMwYzVhYjUxMzJiNWI2YzcuLjRmNjZjMTJjN2QzMTljNjZj
ZGI4MjhiNTdiNTU3ZjJkNDk4OGI2YmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1Rlc3RTaGVsbC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1Rlc3RTaGVsbC5oCkBAIC04NCw4ICs4NCw2IEBAIHB1YmxpYzoKICAgICAvLyBSZXR1cm5zIHRo
ZSBob3N0IGZvciB0aGUgbWFpbiBXZWJWaWV3LgogICAgIFdlYlZpZXdIb3N0KiB3ZWJWaWV3SG9z
dCgpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVmlld0hvc3QuZ2V0KCk7IH0KICAgICBXZWJUZXN0UnVu
bmVyOjpXZWJUZXN0UnVubmVyKiB0ZXN0UnVubmVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW50
ZXJmYWNlcy0+dGVzdFJ1bm5lcigpOyB9Ci0gICAgV2ViVGVzdFJ1bm5lcjo6V2ViRXZlbnRTZW5k
ZXIqIGV2ZW50U2VuZGVyKCkgY29uc3QgeyByZXR1cm4gbV90ZXN0SW50ZXJmYWNlcy0+ZXZlbnRT
ZW5kZXIoKTsgfQotICAgIFdlYlRlc3RSdW5uZXI6OldlYkFjY2Vzc2liaWxpdHlDb250cm9sbGVy
KiBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlcigpIGNvbnN0IHsgcmV0dXJuIG1fdGVzdEludGVyZmFj
ZXMtPmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKCk7IH0KICNpZiBFTkFCTEUoTk9USUZJQ0FUSU9O
UykKICAgICBOb3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpIGNv
bnN0IHsgcmV0dXJuIG1fbm90aWZpY2F0aW9uUHJlc2VudGVyLmdldCgpOyB9CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcCBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCBjN2Ji
MWE3OGI5NmYzNzM2YWU3YzNlNTNhZDA4YzE3MmU5ODQzZmYzLi4zNzc1MjFlODMyNGY1ZWE5NGUy
MWNlZjQxNjYzNTA4YTdmM2UyYzUwIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCkBAIC00NSw3ICs0NSw2IEBACiAjaW5jbHVkZSAiV2ViRGV2aWNl
T3JpZW50YXRpb25DbGllbnRNb2NrLmgiCiAjaW5jbHVkZSAiV2ViRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJXZWJFbGVtZW50LmgiCi0jaW5jbHVkZSAiV2ViRXZlbnRTZW5kZXIuaCIKICNpbmNsdWRl
ICJXZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgogI2lu
Y2x1ZGUgIldlYkhpc3RvcnlJdGVtLmgiCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAppbmRleCA0MGE4MTYwYzAxYTAwNTMyZjczZDg0NWY4NjY5ZmI4OTgyOGFl
NGNjLi4zMjFmZDY5YjFhYWFhNzQ2NDA1ZDdlMjBmYjU5MDkxNzNiYTg2N2M4IDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTMyLDcgKzMyLDYgQEAK
ICNkZWZpbmUgV2ViVmlld0hvc3RfaAogCiAjaW5jbHVkZSAiVGVzdE5hdmlnYXRpb25Db250cm9s
bGVyLmgiCi0jaW5jbHVkZSAiV2ViQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlvbi5oIgogI2luY2x1
ZGUgIldlYkN1cnNvckluZm8uaCIKICNpbmNsdWRlICJXZWJGcmFtZUNsaWVudC5oIgogI2luY2x1
ZGUgIldlYkludGVudFJlcXVlc3QuaCIK
</data>

          </attachment>
      

    </bug>

</bugzilla>