<?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>88159</bug_id>
          
          <creation_ts>2012-06-01 18:32:56 -0700</creation_ts>
          <short_desc>REGRESSION(r119283): Not only broke compilation in the initial commit but also broke LayerChromiumTest.basicCreateAndDestroy (Requested by rniwa on #webkit).</short_desc>
          <delta_ts>2012-06-01 20:20:28 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>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>87686</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>jamesr</cc>
    
    <cc>vollick</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>639911</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 18:32:56 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/119283 broke the build:
Not only broke compilation in the initial commit but also broke LayerChromiumTest.basicCreateAndDestroy (Requested by rniwa on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639914</commentid>
    <comment_count>1</comment_count>
      <attachid>145418</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 18:33:33 -0700</bug_when>
    <thetext>Created attachment 145418
ROLLOUT of r119283

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639938</commentid>
    <comment_count>2</comment_count>
      <attachid>145418</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 20:20:24 -0700</bug_when>
    <thetext>Comment on attachment 145418
ROLLOUT of r119283

Clearing flags on attachment: 145418

Committed r119311: &lt;http://trac.webkit.org/changeset/119311&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639939</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-01 20:20:28 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145418</attachid>
            <date>2012-06-01 18:33:33 -0700</date>
            <delta_ts>2012-06-01 20:20:24 -0700</delta_ts>
            <desc>ROLLOUT of r119283</desc>
            <filename>bug-88159-20120602013800.patch</filename>
            <type>text/plain</type>
            <size>101973</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5MzA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjI2ZTU4Mjc4Njg2YTVl
OWI5NTg3ODFmM2EyY2I0ODJlMTE5YjlmZC4uNWNmZWRhYWRkYmU5MmYzZDQ0NGUzNDIzYzQyZGVk
ZjEyY2ZkMzNjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTA2LTAxICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTE5MjgzLCByMTE5Mjg3LCBhbmQgcjExOTI5MS4KKyAgICAgICAg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE5MjgzCisgICAgICAgIGh0dHA6Ly90
cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzExOTI4NworICAgICAgICBodHRwOi8vdHJhYy53ZWJr
aXQub3JnL2NoYW5nZXNldC8xMTkyOTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTg4MTU5CisKKyAgICAgICAgTm90IG9ubHkgYnJva2UgY29tcGlsYXRp
b24gaW4gdGhlIGluaXRpYWwgY29tbWl0IGJ1dCBhbHNvCisgICAgICAgIGJyb2tlIExheWVyQ2hy
b21pdW1UZXN0LmJhc2ljQ3JlYXRlQW5kRGVzdHJveSAoUmVxdWVzdGVkIGJ5CisgICAgICAgIHJu
aXdhIG9uICN3ZWJraXQpLgorCisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHA6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJh
bnNsYXRpb25VdGlsLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheWVy
Q2hyb21pdW06OmFkZEFuaW1hdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJDaHJvbWl1bS5oOgorICAgICAgICAoTGF5ZXJDaHJvbWl1bSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGlua0hpZ2hsaWdodC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMaW5rSGlnaGxpZ2h0OjpMaW5rSGlnaGxpZ2h0KToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmg6CisgICAgICAgIChD
Q1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ1Ry
YW5zZm9ybUtleWZyYW1lOjpDQ1RyYW5zZm9ybUtleWZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDVHJhbnNmb3JtS2V5ZnJhbWU6OnZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNDVHJhbnNm
b3JtS2V5ZnJhbWU6OmNsb25lKToKKyAgICAgICAgKFdlYkNvcmU6OkNDS2V5ZnJhbWVkVHJhbnNm
b3JtQW5pbWF0aW9uQ3VydmU6OmdldFZhbHVlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmg6CisgICAgICAgIChDQ1Ry
YW5zZm9ybUtleWZyYW1lKToKKyAgICAgICAgKENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9u
Q3VydmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJBbmltYXRp
b25Db250cm9sbGVyOjphZGRBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpwdXNoTmV3QW5pbWF0aW9uc1RvSW1w
bFRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6
cmVwbGFjZUltcGxUaHJlYWRBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyOjp0aWNrQW5pbWF0aW9ucyk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaDoKKyAgICAg
ICAgKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50KToKKyAgICAgICAgKENDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVySW1wbC5oOgorCiAyMDEyLTA2LTAxICBSYXltb25kIFRveSAgPHJ0b3lAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZW1vdmUgUmVmSW5mbyBjbGFzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCAzOGZjM2ZhOTdlY2UwZjk5YzYzM2ZlNWIwOGI5MzJmM2Y2ZTMxZWMwLi4w
MmIzZjlhYzQzZWFhMTA2YTEzNjgwZjEwODM4MjUzYWQxZWM5NThkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA2LTAxICBTaGVyaWZmIEJvdCAgPHdl
YmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5n
IG91dCByMTE5MjgzLCByMTE5Mjg3LCBhbmQgcjExOTI5MS4KKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTE5MjgzCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzExOTI4NworICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xMTkyOTEKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg4MTU5CisKKyAgICAgICAgTm90IG9ubHkgYnJva2UgY29tcGlsYXRpb24gaW4gdGhlIGlu
aXRpYWwgY29tbWl0IGJ1dCBhbHNvCisgICAgICAgIGJyb2tlIExheWVyQ2hyb21pdW1UZXN0LmJh
c2ljQ3JlYXRlQW5kRGVzdHJveSAoUmVxdWVzdGVkIGJ5CisgICAgICAgIHJuaXdhIG9uICN3ZWJr
aXQpLgorCisgICAgICAgICogdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmFkZE9wYWNpdHlUcmFuc2l0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmFk
ZEFuaW1hdGVkVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpGYWtlVHJhbnNmb3Jt
VHJhbnNpdGlvbjo6Z2V0VmFsdWUpOgorICAgICAgICAqIHRlc3RzL0NDQW5pbWF0aW9uVGVzdENv
bW1vbi5oOgorICAgICAgICAqIHRlc3RzL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmVUZXN0LmNw
cDoKKyAgICAgICAgKiB0ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwOgor
ICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwOgorICAgICAgICAoV1RGOjpD
Q0xheWVyVHJlZUhvc3RUZXN0TGF5ZXJBZGRlZFdpdGhBbmltYXRpb246OmJlZ2luVGVzdCk6Cisg
ICAgICAgICogdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6TW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQ6Om5vdGlmeUFuaW1hdGlvblN0YXJ0
ZWQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tHcmFwaGljc0xheWVyQ2xpZW50Ojpub3Rp
ZnlTeW5jUmVxdWlyZWQpOgorICAgICAgICAoV2ViS2l0VGVzdHM6Ok1vY2tHcmFwaGljc0xheWVy
Q2xpZW50OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpNb2NrR3JhcGhp
Y3NMYXllckNsaWVudDo6c2hvd0RlYnVnQm9yZGVycyk6CisgICAgICAgIChXZWJLaXRUZXN0czo6
TW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQ6OnNob3dSZXBhaW50Q291bnRlcik6CisgICAgICAgIChX
ZWJLaXRUZXN0czo6VEVTVCk6CisKIDIwMTItMDYtMDEgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVXNlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIGZvciBGaXhlZCB0
byBhdm9pZCB0aGUgY29sbGlzaW9uIHdpdGggInR5cGVkZWYgU0ludDMyIEZpeGVkIiBpbiBNYWNU
eXBlcy5oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggOTk0OWY1OTE1YTVkZmUzODcyMmQwMjI2NjhlMDIz
ODE3NTBiNDk2OS4uODdiN2I3ZTljMzYzZTBlYmMzODJkMTJjOWRkNmU2Njk1NzZiNTllMSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZ3lwaQpAQCAtMzU2Myw4ICszNTYzLDYgQEAKICAgICAgICAgICAgICdwbGF0Zm9y
bS9ncmFwaGljcy9jZy9UcmFuc2Zvcm1hdGlvbk1hdHJpeENHLmNwcCcsCiAgICAgICAgICAgICAn
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uSWRWZW5kb3IuY3BwJywKICAgICAg
ICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25JZFZlbmRvci5oJywK
LSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xh
dGlvblV0aWwuY3BwJywKLSAgICAgICAgICAgICdwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9B
bmltYXRpb25UcmFuc2xhdGlvblV0aWwuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vQml0bWFwQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLAogICAgICAg
ICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0JpdG1hcENhbnZhc0xheWVyVGV4dHVy
ZVVwZGF0ZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQml0
bWFwU2tQaWN0dXJlQ2FudmFzTGF5ZXJUZXh0dXJlVXBkYXRlci5jcHAnLApAQCAtNjY0NCw3ICs2
NjQyLDcgQEAKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWFyY2hT
bWFsbEdyYXkucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0ltYWdlcy9z
ZWFyY2hTbWFsbFdoaXRlLnBuZycsCiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9J
bWFnZXMvc2VhcmNoTmV4dC5wbmcnLAotICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQv
SW1hZ2VzL3NlYXJjaFByZXYucG5nJywKKyAgICAgICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5k
L0ltYWdlcy9zZWFyY2hQcmV2LnBuZycsICAgICAgICAgICAgCiAgICAgICAgICAgICAnaW5zcGVj
dG9yL2Zyb250LWVuZC9JbWFnZXMvc2VnbWVudC5wbmcnLAogICAgICAgICAgICAgJ2luc3BlY3Rv
ci9mcm9udC1lbmQvSW1hZ2VzL3NlZ21lbnRFbmQucG5nJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0ltYWdlcy9zZWdtZW50SG92ZXIucG5nJywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9u
VXRpbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9Bbmlt
YXRpb25UcmFuc2xhdGlvblV0aWwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
N2VkYjZkNmJhMjI5MTIxNGU4MDZjMzEzODhlNDk2ZTUxNDgyYjFmLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0FuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5jcHAKKysrIC9kZXYvbnVs
bApAQCAtMSwyMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQotICogbWV0OgotICoKLSAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0gKiBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0gKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0gKiBkaXN0cmlidXRpb24uCi0gKiAgICAgKiBOZWl0aGVyIHRo
ZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQotICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0gKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0g
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0gKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0gKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2luY2x1ZGUgIkFuaW1h
dGlvblRyYW5zbGF0aW9uVXRpbC5oIgotCi0jaW5jbHVkZSAiRmxvYXRTaXplLmgiCi0jaW5jbHVk
ZSAiR3JhcGhpY3NMYXllci5oIgotI2luY2x1ZGUgIklkZW50aXR5VHJhbnNmb3JtT3BlcmF0aW9u
LmgiCi0jaW5jbHVkZSAiTGVuZ3RoLmgiCi0jaW5jbHVkZSAiTGVuZ3RoRnVuY3Rpb25zLmgiCi0j
aW5jbHVkZSAiTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbmNsdWRlICJNYXRyaXhU
cmFuc2Zvcm1PcGVyYXRpb24uaCIKLSNpbmNsdWRlICJQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJh
dGlvbi5oIgotI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgotI2luY2x1ZGUg
IlNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCi0jaW5jbHVkZSAiU2tld1RyYW5zZm9ybU9wZXJh
dGlvbi5oIgotI2luY2x1ZGUgIlRyYW5zZm9ybU9wZXJhdGlvbnMuaCIKLSNpbmNsdWRlICJUcmFu
c2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKLQotI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0
aW9uLmgiCi0jaW5jbHVkZSAiY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oIgotCi0jaW5j
bHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybU9wZXJhdGlvbnMuaD4KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXguaD4KLQotI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7Ci11c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLVdlYlRyYW5zZm9y
bU9wZXJhdGlvbnMgdG9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zKGNvbnN0IFRyYW5zZm9ybU9wZXJh
dGlvbnMmIHRyYW5zZm9ybU9wZXJhdGlvbnMsIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkKLXsK
LSAgICBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIHdlYlRyYW5zZm9ybU9wZXJhdGlvbnM7Ci0gICAg
Zm9yIChzaXplX3QgaiA9IDA7IGogPCB0cmFuc2Zvcm1PcGVyYXRpb25zLnNpemUoKTsgKytqKSB7
Ci0gICAgICAgIFRyYW5zZm9ybU9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSBvcGVyYXRpb25UeXBl
ID0gdHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKClbal0tPmdldE9wZXJhdGlvblR5cGUo
KTsKLSAgICAgICAgc3dpdGNoIChvcGVyYXRpb25UeXBlKSB7Ci0gICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpTQ0FMRV9YOgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6
U0NBTEVfWToKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1o6Ci0gICAg
ICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV8zRDoKLSAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlNDQUxFOiB7Ci0gICAgICAgICAgICBjb25zdCBTY2FsZVRyYW5zZm9y
bU9wZXJhdGlvbiogdHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8Y29uc3QgU2NhbGVUcmFuc2Zvcm1P
cGVyYXRpb24qPih0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0g
ICAgICAgICAgICB3ZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmFwcGVuZFNjYWxlKHRyYW5zZm9ybS0+
eCgpLCB0cmFuc2Zvcm0tPnkoKSwgdHJhbnNmb3JtLT56KCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9Y
OgotICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1k6Ci0gICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWjoKLSAgICAgICAgY2FzZSBUcmFu
c2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV8zRDoKLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURTogewotICAgICAgICAgICAgY29uc3QgVHJhbnNsYXRlVHJhbnNmb3Jt
T3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxjb25zdCBUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7
Ci0gICAgICAgICAgICB3ZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmFwcGVuZFRyYW5zbGF0ZShmbG9h
dFZhbHVlRm9yTGVuZ3RoKHRyYW5zZm9ybS0+eCgpLCBib3hTaXplLndpZHRoKCkpLCBmbG9hdFZh
bHVlRm9yTGVuZ3RoKHRyYW5zZm9ybS0+eSgpLCBib3hTaXplLmhlaWdodCgpKSwgZmxvYXRWYWx1
ZUZvckxlbmd0aCh0cmFuc2Zvcm0tPnooKSwgMSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9YOgotICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFX1k6Ci0gICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpST1RBVEVfM0Q6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpST1RBVEU6IHsKLSAgICAgICAgICAgIGNvbnN0IFJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiog
dHJhbnNmb3JtID0gc3RhdGljX2Nhc3Q8Y29uc3QgUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4o
dHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKClbal0uZ2V0KCkpOwotICAgICAgICAgICAg
d2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5hcHBlbmRSb3RhdGUodHJhbnNmb3JtLT54KCksIHRyYW5z
Zm9ybS0+eSgpLCB0cmFuc2Zvcm0tPnooKSwgdHJhbnNmb3JtLT5hbmdsZSgpKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpT
S0VXX1g6Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6Ci0gICAgICAg
IGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXOiB7Ci0gICAgICAgICAgICBjb25zdCBTa2V3
VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxjb25zdCBTa2V3VHJh
bnNmb3JtT3BlcmF0aW9uKj4odHJhbnNmb3JtT3BlcmF0aW9ucy5vcGVyYXRpb25zKClbal0uZ2V0
KCkpOwotICAgICAgICAgICAgd2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5hcHBlbmRTa2V3KHRyYW5z
Zm9ybS0+YW5nbGVYKCksIHRyYW5zZm9ybS0+YW5nbGVZKCkpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246Ok1BVFJJWDogewot
ICAgICAgICAgICAgY29uc3QgTWF0cml4VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBz
dGF0aWNfY2FzdDxjb25zdCBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcGVy
YXRpb25zLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0gICAgICAgICAgICBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCBtID0gdHJhbnNmb3JtLT5tYXRyaXgoKTsKLSAgICAgICAgICAgIHdlYlRyYW5zZm9y
bU9wZXJhdGlvbnMuYXBwZW5kTWF0cml4KFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4KG0pKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0
aW9uOjpNQVRSSVhfM0Q6IHsKLSAgICAgICAgICAgIGNvbnN0IE1hdHJpeDNEVHJhbnNmb3JtT3Bl
cmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxjb25zdCBNYXRyaXgzRFRyYW5zZm9ybU9w
ZXJhdGlvbio+KHRyYW5zZm9ybU9wZXJhdGlvbnMub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKLSAg
ICAgICAgICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IG0gPSB0cmFuc2Zvcm0tPm1hdHJpeCgpOwot
ICAgICAgICAgICAgd2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5hcHBlbmRNYXRyaXgoV2ViVHJhbnNm
b3JtYXRpb25NYXRyaXgobSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAg
ICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlBFUlNQRUNUSVZFOiB7Ci0gICAgICAgICAgICBj
b25zdCBQZXJzcGVjdGl2ZVRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3JtID0gc3RhdGljX2Nh
c3Q8Y29uc3QgUGVyc3BlY3RpdmVUcmFuc2Zvcm1PcGVyYXRpb24qPih0cmFuc2Zvcm1PcGVyYXRp
b25zLm9wZXJhdGlvbnMoKVtqXS5nZXQoKSk7Ci0gICAgICAgICAgICB3ZWJUcmFuc2Zvcm1PcGVy
YXRpb25zLmFwcGVuZFBlcnNwZWN0aXZlKGZsb2F0VmFsdWVGb3JMZW5ndGgodHJhbnNmb3JtLT5w
ZXJzcGVjdGl2ZSgpLCAwKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAg
ICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6SURFTlRJVFk6Ci0gICAgICAgIGNhc2UgVHJhbnNm
b3JtT3BlcmF0aW9uOjpOT05FOgotICAgICAgICAgICAgLy8gRG8gbm90aGluZy4KLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICB9IC8vIHN3aXRjaAotICAgIH0gLy8gZm9yIGVhY2ggb3BlcmF0
aW9uCi0KLSAgICByZXR1cm4gd2ViVHJhbnNmb3JtT3BlcmF0aW9uczsKLX0KLQotdGVtcGxhdGUg
PGNsYXNzIFZhbHVlLCBjbGFzcyBLZXlmcmFtZSwgY2xhc3MgQ3VydmU+Ci1ib29sIGFwcGVuZEtl
eWZyYW1lKEN1cnZlJiBjdXJ2ZSwgZG91YmxlIGtleVRpbWUsIGNvbnN0IFZhbHVlKiB2YWx1ZSwg
UGFzc093blB0cjxDQ1RpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbiwgY29uc3QgRmxvYXRT
aXplJikKLXsKLSAgICBjdXJ2ZS5hZGRLZXlmcmFtZShLZXlmcmFtZTo6Y3JlYXRlKGtleVRpbWUs
IHZhbHVlLT52YWx1ZSgpLCB0aW1pbmdGdW5jdGlvbikpOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci10ZW1wbGF0ZSA8PgotYm9vbCBhcHBlbmRLZXlmcmFtZTxUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZSwgQ0NUcmFuc2Zvcm1LZXlmcmFtZSwgQ0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2
ZT4oQ0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSYgY3VydmUsIGRvdWJsZSBrZXlU
aW1lLCBjb25zdCBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSogdmFsdWUsIFBhc3NPd25QdHI8Q0NU
aW1pbmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24sIGNvbnN0IEZsb2F0U2l6ZSYgYm94U2l6ZSkK
LXsKLSAgICBXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMgPSB0b1dlYlRyYW5zZm9y
bU9wZXJhdGlvbnMoKnZhbHVlLT52YWx1ZSgpLCBib3hTaXplKTsKLSAgICBpZiAob3BlcmF0aW9u
cy5hcHBseSgpLmlzSW52ZXJ0aWJsZSgpKSB7Ci0gICAgICAgIGN1cnZlLmFkZEtleWZyYW1lKEND
VHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZShrZXlUaW1lLCBvcGVyYXRpb25zLCB0aW1pbmdGdW5j
dGlvbikpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwot
fQotCi10ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4K
LVBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihjb25z
dCBLZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlv
biwgc2l6ZV90IGFuaW1hdGlvbklkLCBzaXplX3QgZ3JvdXBJZCwgZG91YmxlIHRpbWVPZmZzZXQs
IENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSwgY29uc3Qg
RmxvYXRTaXplJiBib3hTaXplKQotewotICAgIGJvb2wgYWx0ZXJuYXRlID0gZmFsc2U7Ci0gICAg
Ym9vbCByZXZlcnNlID0gZmFsc2U7Ci0gICAgaWYgKGFuaW1hdGlvbiAmJiBhbmltYXRpb24tPmlz
RGlyZWN0aW9uU2V0KCkpIHsKLSAgICAgICAgQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb24g
ZGlyZWN0aW9uID0gYW5pbWF0aW9uLT5kaXJlY3Rpb24oKTsKLSAgICAgICAgaWYgKGRpcmVjdGlv
biA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZSB8fCBkaXJlY3Rpb24g
PT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKQotICAgICAg
ICAgICAgYWx0ZXJuYXRlID0gdHJ1ZTsKLSAgICAgICAgaWYgKGRpcmVjdGlvbiA9PSBBbmltYXRp
b246OkFuaW1hdGlvbkRpcmVjdGlvblJldmVyc2UgfHwgZGlyZWN0aW9uID09IEFuaW1hdGlvbjo6
QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRlUmV2ZXJzZSkKLSAgICAgICAgICAgIHJldmVyc2Ug
PSB0cnVlOwotICAgIH0KLQotICAgIE93blB0cjxDdXJ2ZT4gY3VydmUgPSBDdXJ2ZTo6Y3JlYXRl
KCk7Ci0gICAgVmVjdG9yPEtleWZyYW1lPiBrZXlmcmFtZXM7Ci0KLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IHZhbHVlTGlzdC5zaXplKCk7IGkrKykgewotICAgICAgICBzaXplX3QgaW5kZXgg
PSByZXZlcnNlID8gdmFsdWVMaXN0LnNpemUoKSAtIGkgLSAxIDogaTsKLQotICAgICAgICBjb25z
dCBWYWx1ZSogb3JpZ2luYWxWYWx1ZSA9IHN0YXRpY19jYXN0PGNvbnN0IFZhbHVlKj4odmFsdWVM
aXN0LmF0KGluZGV4KSk7Ci0KLSAgICAgICAgT3duUHRyPENDVGltaW5nRnVuY3Rpb24+IHRpbWlu
Z0Z1bmN0aW9uOwotICAgICAgICBjb25zdCBUaW1pbmdGdW5jdGlvbiogb3JpZ2luYWxUaW1pbmdG
dW5jdGlvbiA9IG9yaWdpbmFsVmFsdWUtPnRpbWluZ0Z1bmN0aW9uKCk7Ci0KLSAgICAgICAgLy8g
SWYgdGhlcmUgaGFzbid0IGJlZW4gYSB0aW1pbmcgZnVuY3Rpb24gYXNzb2NpYXRlZCB3aXRoIHRo
aXMga2V5ZnJhbWUsIHVzZSB0aGUKLSAgICAgICAgLy8gYW5pbWF0aW9uJ3MgdGltaW5nIGZ1bmN0
aW9uLCBpZiB3ZSBoYXZlIG9uZS4KLSAgICAgICAgaWYgKCFvcmlnaW5hbFRpbWluZ0Z1bmN0aW9u
ICYmIGFuaW1hdGlvbi0+aXNUaW1pbmdGdW5jdGlvblNldCgpKQotICAgICAgICAgICAgb3JpZ2lu
YWxUaW1pbmdGdW5jdGlvbiA9IGFuaW1hdGlvbi0+dGltaW5nRnVuY3Rpb24oKS5nZXQoKTsKLQot
ICAgICAgICBpZiAob3JpZ2luYWxUaW1pbmdGdW5jdGlvbikgewotICAgICAgICAgICAgc3dpdGNo
IChvcmlnaW5hbFRpbWluZ0Z1bmN0aW9uLT50eXBlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVGlt
aW5nRnVuY3Rpb246OlN0ZXBzRnVuY3Rpb246Ci0gICAgICAgICAgICAgICAgLy8gRklYTUU6IGFk
ZCBzdXBwb3J0IGZvciBzdGVwcyB0aW1pbmcgZnVuY3Rpb24uCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgICAgICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpMaW5lYXJGdW5j
dGlvbjoKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBzZXQgdGhlIHRpbWluZyBmdW5jdGlvbi4g
S2V5ZnJhbWVzIGFyZSBpbnRlcnBvbGF0ZWQgbGluZWFybHkgaWYgdGhlcmUgaXMgbm8gdGltaW5n
IGZ1bmN0aW9uLgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBUaW1p
bmdGdW5jdGlvbjo6Q3ViaWNCZXppZXJGdW5jdGlvbjoKLSAgICAgICAgICAgICAgICBjb25zdCBD
dWJpY0JlemllclRpbWluZ0Z1bmN0aW9uKiBvcmlnaW5hbEJlemllclRpbWluZ0Z1bmN0aW9uID0g
c3RhdGljX2Nhc3Q8Y29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbio+KG9yaWdpbmFsVGlt
aW5nRnVuY3Rpb24pOwotICAgICAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gQ0NDdWJpY0Jl
emllclRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUob3JpZ2luYWxCZXppZXJUaW1pbmdGdW5jdGlvbi0+
eDEoKSwgb3JpZ2luYWxCZXppZXJUaW1pbmdGdW5jdGlvbi0+eTEoKSwgb3JpZ2luYWxCZXppZXJU
aW1pbmdGdW5jdGlvbi0+eDIoKSwgb3JpZ2luYWxCZXppZXJUaW1pbmdGdW5jdGlvbi0+eTIoKSk7
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IC8vIHN3aXRjaAotICAgICAg
ICB9IGVsc2UKLSAgICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uID0gQ0NFYXNlVGltaW5nRnVuY3Rp
b246OmNyZWF0ZSgpOwotCi0gICAgICAgIGRvdWJsZSBkdXJhdGlvbiA9IChhbmltYXRpb24gJiYg
YW5pbWF0aW9uLT5pc0R1cmF0aW9uU2V0KCkpID8gYW5pbWF0aW9uLT5kdXJhdGlvbigpIDogMTsK
LSAgICAgICAgZG91YmxlIGtleVRpbWUgPSBvcmlnaW5hbFZhbHVlLT5rZXlUaW1lKCkgKiBkdXJh
dGlvbjsKLQotICAgICAgICBpZiAocmV2ZXJzZSkKLSAgICAgICAgICAgIGtleVRpbWUgPSBkdXJh
dGlvbiAtIGtleVRpbWU7Ci0KLSAgICAgICAgYm9vbCBhZGRlZEtleWZyYW1lID0gYXBwZW5kS2V5
ZnJhbWU8VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oKmN1cnZlLCBrZXlUaW1lLCBvcmlnaW5hbFZh
bHVlLCB0aW1pbmdGdW5jdGlvbi5yZWxlYXNlKCksIGJveFNpemUpOwotICAgICAgICBpZiAoIWFk
ZGVkS2V5ZnJhbWUpCi0gICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBP
d25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW0gPSBDQ0FjdGl2ZUFuaW1hdGlvbjo6Y3JlYXRl
KGN1cnZlLnJlbGVhc2UoKSwgYW5pbWF0aW9uSWQsIGdyb3VwSWQsIHRhcmdldFByb3BlcnR5KTsK
LQotICAgIEFTU0VSVChhbmltLmdldCgpKTsKLQotICAgIGlmIChhbmltLmdldCgpKSB7Ci0gICAg
ICAgIGludCBpdGVyYXRpb25zID0gKGFuaW1hdGlvbiAmJiBhbmltYXRpb24tPmlzSXRlcmF0aW9u
Q291bnRTZXQoKSkgPyBhbmltYXRpb24tPml0ZXJhdGlvbkNvdW50KCkgOiAxOwotICAgICAgICBh
bmltLT5zZXRJdGVyYXRpb25zKGl0ZXJhdGlvbnMpOwotICAgICAgICBhbmltLT5zZXRBbHRlcm5h
dGVzRGlyZWN0aW9uKGFsdGVybmF0ZSk7Ci0gICAgfQotCi0gICAgLy8gSW4gb3JkZXIgdG8gYXZv
aWQgc2tldywgdGhlIG1haW4gdGhyZWFkIGFuaW1hdGlvbiBjYW5ub3QgdGljayB1bnRpbCBpdCBo
YXMgcmVjZWl2ZWQgdGhlIHN0YXJ0IHRpbWUgb2YKLSAgICAvLyB0aGUgY29ycmVzcG9uZGluZyBp
bXBsIHRocmVhZCBhbmltYXRpb24uCi0gICAgYW5pbS0+c2V0TmVlZHNTeW5jaHJvbml6ZWRTdGFy
dFRpbWUodHJ1ZSk7Ci0KLSAgICAvLyBJZiB0aW1lT2Zmc2V0ID4gMCwgdGhlbiB0aGUgYW5pbWF0
aW9uIGhhcyBzdGFydGVkIGluIHRoZSBwYXN0LgotICAgIGFuaW0tPnNldFRpbWVPZmZzZXQodGlt
ZU9mZnNldCk7Ci0KLSAgICByZXR1cm4gYW5pbS5yZWxlYXNlKCk7Ci19Ci0KLVBhc3NPd25QdHI8
Q0NBY3RpdmVBbmltYXRpb24+IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihjb25zdCBLZXlmcmFtZVZh
bHVlTGlzdCYgdmFsdWVzLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgc2l6ZV90IGFuaW1h
dGlvbklkLCBzaXplX3QgZ3JvdXBJZCwgZG91YmxlIHRpbWVPZmZzZXQsIGNvbnN0IEZsb2F0U2l6
ZSYgYm94U2l6ZSkKLXsKLSAgICBpZiAodmFsdWVzLnByb3BlcnR5KCkgPT0gQW5pbWF0ZWRQcm9w
ZXJ0eVdlYmtpdFRyYW5zZm9ybSkKLSAgICAgICAgcmV0dXJuIGNyZWF0ZUFjdGl2ZUFuaW1hdGlv
bjxUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZSwgQ0NUcmFuc2Zvcm1LZXlmcmFtZSwgQ0NLZXlmcmFt
ZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklk
LCBncm91cElkLCB0aW1lT2Zmc2V0LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBGbG9h
dFNpemUoYm94U2l6ZSkpOwotCi0gICAgaWYgKHZhbHVlcy5wcm9wZXJ0eSgpID09IEFuaW1hdGVk
UHJvcGVydHlPcGFjaXR5KQotICAgICAgICByZXR1cm4gY3JlYXRlQWN0aXZlQW5pbWF0aW9uPEZs
b2F0QW5pbWF0aW9uVmFsdWUsIENDRmxvYXRLZXlmcmFtZSwgQ0NLZXlmcmFtZWRGbG9hdEFuaW1h
dGlvbkN1cnZlPih2YWx1ZXMsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQsIGdyb3VwSWQsIHRpbWVP
ZmZzZXQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5LCBGbG9hdFNpemUoKSk7Ci0KLSAgICBy
ZXR1cm4gbnVsbHB0cjsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vQW5pbWF0aW9uVHJhbnNs
YXRpb25VdGlsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9B
bmltYXRpb25UcmFuc2xhdGlvblV0aWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDhmNjBkMjBkYzNiYzFmYzc4ZGE0ZGFiMzVmN2JjYzM5NTBjYTUxNC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9BbmltYXRpb25UcmFuc2xhdGlvblV0aWwuaAorKysgL2Rldi9udWxs
CkBAIC0xLDQ3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0aW9uLgotICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
Ci0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFuaW1hdGlvblRyYW5zbGF0aW9uVXRpbF9oCi0jZGVm
aW5lIEFuaW1hdGlvblRyYW5zbGF0aW9uVXRpbF9oCi0KLSNpbmNsdWRlIDx3dGYvUGFzc093blB0
ci5oPgotCi1jbGFzcyBLZXlmcmFtZVZhbHVlTGlzdDsKLWNsYXNzIEFuaW1hdGlvbjsKLWNsYXNz
IEZsb2F0U2l6ZTsKLWNsYXNzIENDQWN0aXZlQW5pbWF0aW9uOwotCi1uYW1lc3BhY2UgV2ViQ29y
ZSB7Ci0KLVBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGNyZWF0ZUFjdGl2ZUFuaW1hdGlv
bihjb25zdCBLZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEFuaW1hdGlvbiosIHNpemVfdCBhbmlt
YXRpb25JZCwgc2l6ZV90IGdyb3VwSWQsIGRvdWJsZSB0aW1lT2Zmc2V0LCBjb25zdCBGbG9hdFNp
emUmIGJveFNpemUpOwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBBbmlt
YXRpb25UcmFuc2xhdGlvblV0aWxfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bS5j
cHAKaW5kZXggOTQ5YTRhOThkMzYxYjRhM2QxMDFjZDNmMTMzNGZmZGU4Yjc5MmMyYi4uMTg0MzMz
NjA5NTFiMmJmY2VhN2NiMTFiYmU5MDAxZWE5ODVmNGUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vR3JhcGhpY3NMYXllckNocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9HcmFwaGlj
c0xheWVyQ2hyb21pdW0uY3BwCkBAIC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NM
YXllckNocm9taXVtLmgiCiAKICNpbmNsdWRlICJBbmltYXRpb25JZFZlbmRvci5oIgotI2luY2x1
ZGUgIkFuaW1hdGlvblRyYW5zbGF0aW9uVXRpbC5oIgogI2luY2x1ZGUgIkNhbnZhczJETGF5ZXJD
aHJvbWl1bS5oIgogI2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAi
RmxvYXRDb252ZXJzaW9uLmgiCkBAIC01OSw4ICs1OCw2IEBACiAjaW5jbHVkZSAiU2tNYXRyaXg0
NC5oIgogI2luY2x1ZGUgIlN5c3RlbVRpbWUuaCIKIAotI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5p
bWF0aW9uLmgiCi0KICNpbmNsdWRlIDxwdWJsaWMvV2ViRmlsdGVyT3BlcmF0aW9uLmg+CiAjaW5j
bHVkZSA8cHVibGljL1dlYkZpbHRlck9wZXJhdGlvbnMuaD4KICNpbmNsdWRlIDxwdWJsaWMvV2Vi
RmxvYXRQb2ludC5oPgpAQCAtNTAzLDI4ICs1MDAsOCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJv
bWl1bTo6c2V0Q29udGVudHNUb0NhbnZhcyhQbGF0Zm9ybUxheWVyKiBwbGF0Zm9ybUxheWVyKQog
CiBib29sIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1l
VmFsdWVMaXN0JiB2YWx1ZXMsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlv
biogYW5pbWF0aW9uLCBjb25zdCBTdHJpbmcmIGFuaW1hdGlvbk5hbWUsIGRvdWJsZSB0aW1lT2Zm
c2V0KQogewotICAgIC8vIEJhaWwgZWFybHkgaWYgd2UgaGF2ZSBhIGxhcmdlIHJvdGF0aW9uLgot
ICAgIGlmICh2YWx1ZXMucHJvcGVydHkoKSA9PSBBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNm
b3JtKSB7Ci0gICAgICAgIGJvb2wgaGFzUm90YXRpb25PZk1vcmVUaGFuMTgwRGVncmVlcyA9IGZh
bHNlOwotICAgICAgICB2YWxpZGF0ZVRyYW5zZm9ybU9wZXJhdGlvbnModmFsdWVzLCBoYXNSb3Rh
dGlvbk9mTW9yZVRoYW4xODBEZWdyZWVzKTsKLSAgICAgICAgaWYgKGhhc1JvdGF0aW9uT2ZNb3Jl
VGhhbjE4MERlZ3JlZXMpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCiAgICAg
cHJpbWFyeUxheWVyKCkudW53cmFwPExheWVyQ2hyb21pdW0+KCktPnNldExheWVyQW5pbWF0aW9u
RGVsZWdhdGUodGhpcyk7Ci0KLSAgICBpbnQgYW5pbWF0aW9uSWQgPSBtYXBBbmltYXRpb25OYW1l
VG9JZChhbmltYXRpb25OYW1lKTsKLSAgICBpbnQgZ3JvdXBJZCA9IEFuaW1hdGlvbklkVmVuZG9y
OjpnZXROZXh0R3JvdXBJZCgpOwotCi0gICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0Fk
ZChjcmVhdGVBY3RpdmVBbmltYXRpb24odmFsdWVzLCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCBn
cm91cElkLCB0aW1lT2Zmc2V0LCBib3hTaXplKSk7Ci0KLSAgICBpZiAodG9BZGQuZ2V0KCkpIHsK
LSAgICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUg
YW5pbWF0aW9uIGlkIGFuZCB0YXJnZXQgcHJvcGVydHkuCi0gICAgICAgIHByaW1hcnlMYXllcigp
LnVud3JhcDxMYXllckNocm9taXVtPigpLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+cmVt
b3ZlQW5pbWF0aW9uKHRvQWRkLT5pZCgpLCB0b0FkZC0+dGFyZ2V0UHJvcGVydHkoKSk7Ci0gICAg
ICAgIHJldHVybiBwcmltYXJ5TGF5ZXIoKS51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKS0+YWRkQW5p
bWF0aW9uKHRvQWRkLnJlbGVhc2UoKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOworICAg
IHJldHVybiBwcmltYXJ5TGF5ZXIoKS51bndyYXA8TGF5ZXJDaHJvbWl1bT4oKS0+YWRkQW5pbWF0
aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLCBtYXBBbmltYXRpb25OYW1lVG9JZChhbmlt
YXRpb25OYW1lKSwgQW5pbWF0aW9uSWRWZW5kb3I6OmdldE5leHRHcm91cElkKCksIHRpbWVPZmZz
ZXQpOwogfQogCiB2b2lkIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bTo6cGF1c2VBbmltYXRpb24oY29u
c3QgU3RyaW5nJiBhbmltYXRpb25OYW1lLCBkb3VibGUgdGltZU9mZnNldCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKaW5kZXggZDM1ZjU5MjE5ZmY3NDNjZmQ5ZGU2YmQ3OWViZTU5MWNhYzkyMWFhOS4u
ZjYxZmQzNWQ1MzAwMTQxZjJiMmZmMjZiODc2NGI4ZjYyZTAzZTIzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJv
bWl1bS5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUNvbnRleHRTa2lh
LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCiAjaW5jbHVkZSAiVGV4dFN0cmVh
bS5oIgotI2luY2x1ZGUgImNjL0NDQWN0aXZlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NB
bmltYXRpb25FdmVudHMuaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgImNjL0NDTGF5ZXJBbmltYXRpb25EZWxlZ2F0ZS5oIgpAQCAtNjAwLDE1
ICs1OTksMTcgQEAgdm9pZCBMYXllckNocm9taXVtOjpzZXRUcmFuc2Zvcm1Gcm9tQW5pbWF0aW9u
KGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmEKICAgICBtX3RyYW5zZm9ybSA9IHRy
YW5zZm9ybTsKIH0KIAotYm9vbCBMYXllckNocm9taXVtOjphZGRBbmltYXRpb24oUGFzc093blB0
cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbWF0aW9uKQorYm9vbCBMYXllckNocm9taXVtOjphZGRB
bmltYXRpb24oY29uc3QgS2V5ZnJhbWVWYWx1ZUxpc3QmIHZhbHVlcywgY29uc3QgSW50U2l6ZSYg
Ym94U2l6ZSwgY29uc3QgQW5pbWF0aW9uKiBhbmltYXRpb24sIGludCBhbmltYXRpb25JZCwgaW50
IGdyb3VwSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQogewogICAgIGlmICghbV9sYXllclRyZWVIb3N0
IHx8ICFtX2xheWVyVHJlZUhvc3QtPnNldHRpbmdzKCkudGhyZWFkZWRBbmltYXRpb25FbmFibGVk
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxl
ci0+YWRkQW5pbWF0aW9uKGFuaW1hdGlvbik7Ci0gICAgbV9sYXllclRyZWVIb3N0LT5kaWRBZGRB
bmltYXRpb24oKTsKLSAgICBzZXROZWVkc0NvbW1pdCgpOwotICAgIHJldHVybiB0cnVlOworICAg
IGJvb2wgYWRkZWRBbmltYXRpb24gPSBtX2xheWVyQW5pbWF0aW9uQ29udHJvbGxlci0+YWRkQW5p
bWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLCBhbmltYXRpb25JZCwgZ3JvdXBJZCwg
dGltZU9mZnNldCk7CisgICAgaWYgKGFkZGVkQW5pbWF0aW9uKSB7CisgICAgICAgIG1fbGF5ZXJU
cmVlSG9zdC0+ZGlkQWRkQW5pbWF0aW9uKCk7CisgICAgICAgIHNldE5lZWRzQ29tbWl0KCk7Cisg
ICAgfQorICAgIHJldHVybiBhZGRlZEFuaW1hdGlvbjsKIH0KIAogdm9pZCBMYXllckNocm9taXVt
OjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJD
aHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5
ZXJDaHJvbWl1bS5oCmluZGV4IDE4NjU2N2E5NDYwYzQ0YWJmOGNlYzAyZjc1MTdlNGZmOTk1MTBm
NzQuLmE5M2QxNzYwZmNhZDAwZTIxMjcwZDUwNjFhMDI0N2UyZjYyMWJkY2QgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNo
cm9taXVtLmgKQEAgLTU3LDcgKzU3LDYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBDQ0FjdGl2ZUFuaW1hdGlvbjsKIHN0cnVjdCBDQ0FuaW1hdGlvbkV2ZW50OwogY2xhc3MgQ0NM
YXllckFuaW1hdGlvbkRlbGVnYXRlOwogY2xhc3MgQ0NMYXllckltcGw7CkBAIC04MCw2ICs3OSw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGZsb2F0IG9wYWNpdHkoKSBjb25zdCBPVkVSUklERSB7
IHJldHVybiBtX29wYWNpdHk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3JtRnJvbUFu
aW1hdGlvbihjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZFUlJJREU7
CiAgICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFu
c2Zvcm0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAgIHZpcnR1
YWwgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3Vu
ZHM7IH0KIAogICAgIGNvbnN0IExheWVyQ2hyb21pdW0qIHJvb3RMYXllcigpIGNvbnN0OwogICAg
IExheWVyQ2hyb21pdW0qIHBhcmVudCgpIGNvbnN0OwpAQCAtMTAxLDcgKzEwMSw2IEBAIHB1Ymxp
YzoKICAgICBDb2xvciBiYWNrZ3JvdW5kQ29sb3IoKSBjb25zdCB7IHJldHVybiBtX2JhY2tncm91
bmRDb2xvcjsgfQogCiAgICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYpOwotICAgIGNv
bnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fYm91bmRzOyB9CiAgICAgdmly
dHVhbCBJbnRTaXplIGNvbnRlbnRCb3VuZHMoKSBjb25zdCB7IHJldHVybiBib3VuZHMoKTsgfQog
CiAgICAgdm9pZCBzZXRNYXNrc1RvQm91bmRzKGJvb2wpOwpAQCAtMjM1LDcgKzIzNCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNldEFsd2F5c1Jlc2VydmVUZXh0dXJlcyhib29sIGFsd2F5c1Jlc2Vy
dmVUZXh0dXJlcykgeyBtX2Fsd2F5c1Jlc2VydmVUZXh0dXJlcyA9IGFsd2F5c1Jlc2VydmVUZXh0
dXJlczsgfQogICAgIGJvb2wgYWx3YXlzUmVzZXJ2ZVRleHR1cmVzKCkgY29uc3QgeyByZXR1cm4g
bV9hbHdheXNSZXNlcnZlVGV4dHVyZXM7IH0KIAotICAgIGJvb2wgYWRkQW5pbWF0aW9uKFBhc3NP
d25QdHI8Q0NBY3RpdmVBbmltYXRpb24+KTsKKyAgICBib29sIGFkZEFuaW1hdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYsIGNvbnN0IEludFNpemUmIGJveFNpemUsIGNvbnN0IEFuaW1hdGlv
biosIGludCBhbmltYXRpb25JZCwgaW50IGdyb3VwSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKICAg
ICB2b2lkIHBhdXNlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCwgZG91YmxlIHRpbWVPZmZzZXQp
OwogICAgIHZvaWQgcmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xpbmtIaWdobGln
aHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGlua0hp
Z2hsaWdodC5jcHAKaW5kZXggYmVhMzJjMGEzNTc5YWY1NzFmYzdmMDUyYTc0ZGJkYzdmYjlkZTY3
OC4uYmNiN2IzYzM2YzdiOGUxODRjZDIwNjdkZmE1YTBhNDUwYzViODY3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGlua0hpZ2hsaWdodC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGlua0hp
Z2hsaWdodC5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgTGlua0hpZ2hsaWdodDo6TGlua0hpZ2hsaWdo
dChHcmFwaGljc0xheWVyQ2hyb21pdW0qIHBhcmVudCwgY29uc3QgUGF0aCYgcGF0aCwgaW4KICAg
ICAvLyBhbmltYXRpb25JZCA9IDEgaXMgcmVzZXJ2ZWQgZm9yIHVzLgogICAgIE93blB0cjxDQ0Fj
dGl2ZUFuaW1hdGlvbj4gYW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpjcmVhdGUoY3VydmUu
cmVsZWFzZSgpLCBhbmltYXRpb25JZCwgZ3JvdXBJZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNp
dHkpKTsKICAgICBhbmltYXRpb24tPnNldE5lZWRzU3luY2hyb25pemVkU3RhcnRUaW1lKHRydWUp
OwotICAgIG1fY29udGVudExheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkQW5p
bWF0aW9uKGFuaW1hdGlvbi5yZWxlYXNlKCkpOworICAgIG1fY29udGVudExheWVyLT5sYXllckFu
aW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkKGFuaW1hdGlvbi5yZWxlYXNlKCkpOwogfQogCiBMaW5r
SGlnaGxpZ2h0Ojp+TGlua0hpZ2hsaWdodCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0FuaW1hdGlvbkN1cnZlLmgK
aW5kZXggMGU0NThlYjJiNzk4Mzk2YWVjMGM0YzU2Mzk1OWY3Y2Y5M2MxZTkyZS4uZTIxZGU4OTY0
NzU3NWJmZTY5YmVjZWUzOTgyYjI5NTJkNWUyMmMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NBbmltYXRpb25DdXJ2ZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDQW5pbWF0aW9u
Q3VydmUuaApAQCAtNjUsNyArNjUsNyBAQCBjbGFzcyBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZl
IDogcHVibGljIENDQW5pbWF0aW9uQ3VydmUgewogcHVibGljOgogICAgIHZpcnR1YWwgfkNDVHJh
bnNmb3JtQW5pbWF0aW9uQ3VydmUoKSB7IH0KIAotICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdCkgY29uc3QgPSAwOworICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdCwgY29u
c3QgSW50U2l6ZSYgbGF5ZXJTaXplKSBjb25zdCA9IDA7CiAKICAgICAvLyBQYXJ0aWFsIENDQW5p
bWF0aW9uIGltcGxlbWVudGF0aW9uLgogICAgIHZpcnR1YWwgVHlwZSB0eXBlKCkgY29uc3QgT1ZF
UlJJREUgeyByZXR1cm4gVHJhbnNmb3JtOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDS2V5ZnJh
bWVkQW5pbWF0aW9uQ3VydmUuY3BwCmluZGV4IGJiNGQ0NzgzNGFhMjY1ZmYwYmZiYzdlZjEzODg5
MDQyZDE3OWE5ZjIuLjRkYjM5YjY5YTAwMWZjODczZjI1NDUzNGJkNzcyY2EwNDQ0MWFlZmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0ND
S2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDS2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmUuY3BwCkBAIC0y
Niw2ICsyNiwxNSBAQAogCiAjaW5jbHVkZSAiY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5o
IgogCisjaW5jbHVkZSAiSWRlbnRpdHlUcmFuc2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJN
YXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbi5oIgorI2luY2x1ZGUgIk1hdHJpeFRyYW5zZm9ybU9w
ZXJhdGlvbi5oIgorI2luY2x1ZGUgIlBlcnNwZWN0aXZlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisj
aW5jbHVkZSAiUm90YXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisjaW5jbHVkZSAiU2NhbGVUcmFu
c2Zvcm1PcGVyYXRpb24uaCIKKyNpbmNsdWRlICJTa2V3VHJhbnNmb3JtT3BlcmF0aW9uLmgiCisj
aW5jbHVkZSAiVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uLmgiCisKICNpbmNsdWRlIDx3dGYv
T3duUHRyLmg+CiAKIHVzaW5nIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXg7CkBAIC0x
MDcsMTIgKzExNiwxMiBAQCBQYXNzT3duUHRyPENDRmxvYXRLZXlmcmFtZT4gQ0NGbG9hdEtleWZy
YW1lOjpjbG9uZSgpIGNvbnN0CiAgICAgcmV0dXJuIENDRmxvYXRLZXlmcmFtZTo6Y3JlYXRlKHRp
bWUoKSwgdmFsdWUoKSwgdGltaW5nRnVuY3Rpb24oKSA/IGNsb25lVGltaW5nRnVuY3Rpb24odGlt
aW5nRnVuY3Rpb24oKSkgOiBudWxscHRyKTsKIH0KIAotUGFzc093blB0cjxDQ1RyYW5zZm9ybUtl
eWZyYW1lPiBDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUoZG91YmxlIHRpbWUsIGNvbnN0IFdl
YktpdDo6V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUsIFBhc3NPd25QdHI8Q0NUaW1pbmdG
dW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCitQYXNzT3duUHRyPENDVHJhbnNmb3JtS2V5ZnJhbWU+
IENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZShkb3VibGUgdGltZSwgY29uc3QgVHJhbnNmb3Jt
T3BlcmF0aW9ucyYgdmFsdWUsIFBhc3NPd25QdHI8Q0NUaW1pbmdGdW5jdGlvbj4gdGltaW5nRnVu
Y3Rpb24pCiB7CiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ1RyYW5zZm9ybUtleWZyYW1lKHRp
bWUsIHZhbHVlLCB0aW1pbmdGdW5jdGlvbikpOwogfQogCi1DQ1RyYW5zZm9ybUtleWZyYW1lOjpD
Q1RyYW5zZm9ybUtleWZyYW1lKGRvdWJsZSB0aW1lLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9y
bU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1
bmN0aW9uKQorQ0NUcmFuc2Zvcm1LZXlmcmFtZTo6Q0NUcmFuc2Zvcm1LZXlmcmFtZShkb3VibGUg
dGltZSwgY29uc3QgVHJhbnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUsIFBhc3NPd25QdHI8Q0NUaW1p
bmdGdW5jdGlvbj4gdGltaW5nRnVuY3Rpb24pCiAgICAgOiBDQ0tleWZyYW1lKHRpbWUsIHRpbWlu
Z0Z1bmN0aW9uKQogICAgICwgbV92YWx1ZSh2YWx1ZSkKIHsKQEAgLTEyMiwxNCArMTMxLDc4IEBA
IENDVHJhbnNmb3JtS2V5ZnJhbWU6On5DQ1RyYW5zZm9ybUtleWZyYW1lKCkKIHsKIH0KIAotY29u
c3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zJiBDQ1RyYW5zZm9ybUtleWZyYW1lOjp2
YWx1ZSgpIGNvbnN0Citjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiBDQ1RyYW5zZm9ybUtleWZy
YW1lOjp2YWx1ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdmFsdWU7CiB9CiAKIFBhc3NPd25Q
dHI8Q0NUcmFuc2Zvcm1LZXlmcmFtZT4gQ0NUcmFuc2Zvcm1LZXlmcmFtZTo6Y2xvbmUoKSBjb25z
dAogewotICAgIHJldHVybiBDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUodGltZSgpLCB2YWx1
ZSgpLCB0aW1pbmdGdW5jdGlvbigpID8gY2xvbmVUaW1pbmdGdW5jdGlvbih0aW1pbmdGdW5jdGlv
bigpKSA6IG51bGxwdHIpOworICAgIC8vIFdlIG5lZWQgdG8gZG8gYSBkZWVwIGNvcHkgdGhlIG1f
dmFsdWUgbWF5IGNvbnRhaW4gcmVmIHBvaW50ZXJzIHRvIFRyYW5zZm9ybU9wZXJhdGlvbiBvYmpl
Y3RzLgorICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICBmb3IgKHNpemVf
dCBqID0gMDsgaiA8IG1fdmFsdWUuc2l6ZSgpOyArK2opIHsKKyAgICAgICAgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpPcGVyYXRpb25UeXBlIG9wZXJhdGlvblR5cGUgPSBtX3ZhbHVlLm9wZXJhdGlvbnMo
KVtqXS0+Z2V0T3BlcmF0aW9uVHlwZSgpOworICAgICAgICBzd2l0Y2ggKG9wZXJhdGlvblR5cGUp
IHsKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxFX1g6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTQ0FMRV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6U0NBTEVfWjoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlNDQUxF
XzNEOgorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6U0NBTEU6IHsKKyAgICAgICAg
ICAgIFNjYWxlVHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxTY2Fs
ZVRyYW5zZm9ybU9wZXJhdGlvbio+KG1fdmFsdWUub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKKyAg
ICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChTY2FsZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKHRyYW5zZm9ybS0+eCgpLCB0cmFuc2Zvcm0tPnkoKSwgdHJhbnNmb3Jt
LT56KCksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9Cisg
ICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWDoKKyAgICAgICAgY2Fz
ZSBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9ZOgorICAgICAgICBjYXNlIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1o6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfM0Q6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xB
VEU6IHsKKyAgICAgICAgICAgIFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNmb3Jt
ID0gc3RhdGljX2Nhc3Q8VHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uKj4obV92YWx1ZS5vcGVy
YXRpb25zKClbal0uZ2V0KCkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCku
YXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKHRyYW5zZm9ybS0+eCgp
LCB0cmFuc2Zvcm0tPnkoKSwgdHJhbnNmb3JtLT56KCksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9u
OjpST1RBVEVfWDoKKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OlJPVEFURV9ZOgor
ICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFXzNEOgorICAgICAgICBjYXNl
IFRyYW5zZm9ybU9wZXJhdGlvbjo6Uk9UQVRFOiB7CisgICAgICAgICAgICBSb3RhdGVUcmFuc2Zv
cm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9IHN0YXRpY19jYXN0PFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbio+KG1fdmFsdWUub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKKyAgICAgICAgICAgIG9wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChSb3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZSh0cmFuc2Zvcm0tPngoKSwgdHJhbnNmb3JtLT55KCksIHRyYW5zZm9ybS0+eigpLCB0cmFuc2Zv
cm0tPmFuZ2xlKCksIG9wZXJhdGlvblR5cGUpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1g6CisgICAgICAgIGNh
c2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpTS0VXX1k6CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3Bl
cmF0aW9uOjpTS0VXOiB7CisgICAgICAgICAgICBTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFu
c2Zvcm0gPSBzdGF0aWNfY2FzdDxTa2V3VHJhbnNmb3JtT3BlcmF0aW9uKj4obV92YWx1ZS5vcGVy
YXRpb25zKClbal0uZ2V0KCkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCku
YXBwZW5kKFNrZXdUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0cmFuc2Zvcm0tPmFuZ2xlWCgp
LCB0cmFuc2Zvcm0tPmFuZ2xlWSgpLCBvcGVyYXRpb25UeXBlKSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFUUklYOiB7
CisgICAgICAgICAgICBNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb24qIHRyYW5zZm9ybSA9IHN0YXRp
Y19jYXN0PE1hdHJpeFRyYW5zZm9ybU9wZXJhdGlvbio+KG1fdmFsdWUub3BlcmF0aW9ucygpW2pd
LmdldCgpKTsKKyAgICAgICAgICAgIFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4IG0gPSBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm0tPm1hdHJpeCgpKTsKKyAgICAgICAgICAgIG9wZXJh
dGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXhUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShtLmEoKSwgbS5iKCksIG0uYygpLCBtLmQoKSwgbS5lKCksIG0uZigpKSk7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRyYW5zZm9ybU9wZXJhdGlvbjo6TUFU
UklYXzNEOiB7CisgICAgICAgICAgICBNYXRyaXgzRFRyYW5zZm9ybU9wZXJhdGlvbiogdHJhbnNm
b3JtID0gc3RhdGljX2Nhc3Q8TWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb24qPihtX3ZhbHVlLm9w
ZXJhdGlvbnMoKVtqXS5nZXQoKSk7CisgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMo
KS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSh0cmFuc2Zvcm0tPm1h
dHJpeCgpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFRy
YW5zZm9ybU9wZXJhdGlvbjo6UEVSU1BFQ1RJVkU6IHsKKyAgICAgICAgICAgIFBlcnNwZWN0aXZl
VHJhbnNmb3JtT3BlcmF0aW9uKiB0cmFuc2Zvcm0gPSBzdGF0aWNfY2FzdDxQZXJzcGVjdGl2ZVRy
YW5zZm9ybU9wZXJhdGlvbio+KG1fdmFsdWUub3BlcmF0aW9ucygpW2pdLmdldCgpKTsKKyAgICAg
ICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChQZXJzcGVjdGl2ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKHRyYW5zZm9ybS0+cGVyc3BlY3RpdmUoKSkpOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBUcmFuc2Zvcm1PcGVyYXRpb246OklE
RU5USVRZOiB7CisgICAgICAgICAgICBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoSWRl
bnRpdHlUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisgICAgICAgIGNhc2UgVHJhbnNmb3JtT3BlcmF0aW9uOjpOT05FOgorICAgICAg
ICAgICAgLy8gRG8gbm90aGluZy4KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9IC8vIHN3
aXRjaAorICAgIH0gLy8gZm9yIGVhY2ggb3BlcmF0aW9uCisKKyAgICByZXR1cm4gQ0NUcmFuc2Zv
cm1LZXlmcmFtZTo6Y3JlYXRlKHRpbWUoKSwgb3BlcmF0aW9ucywgdGltaW5nRnVuY3Rpb24oKSA/
IGNsb25lVGltaW5nRnVuY3Rpb24odGltaW5nRnVuY3Rpb24oKSkgOiBudWxscHRyKTsKIH0KIAog
UGFzc093blB0cjxDQ0tleWZyYW1lZEZsb2F0QW5pbWF0aW9uQ3VydmU+IENDS2V5ZnJhbWVkRmxv
YXRBbmltYXRpb25DdXJ2ZTo6Y3JlYXRlKCkKQEAgLTIxNiwxMyArMjg5LDIwIEBAIFBhc3NPd25Q
dHI8Q0NBbmltYXRpb25DdXJ2ZT4gQ0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZTo6
Y2xvbmUoKSBjb25zdAogICAgIHJldHVybiB0b1JldHVybi5yZWxlYXNlKCk7CiB9CiAKLVdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6Omdl
dFZhbHVlKGRvdWJsZSB0KSBjb25zdAorV2ViVHJhbnNmb3JtYXRpb25NYXRyaXggQ0NLZXlmcmFt
ZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZTo6Z2V0VmFsdWUoZG91YmxlIHQsIGNvbnN0IEludFNp
emUmIGxheWVyU2l6ZSkgY29uc3QKIHsKLSAgICBpZiAodCA8PSBtX2tleWZyYW1lcy5maXJzdCgp
LT50aW1lKCkpCi0gICAgICAgIHJldHVybiBtX2tleWZyYW1lcy5maXJzdCgpLT52YWx1ZSgpLmFw
cGx5KCk7CisgICAgLy8gTm90ZTogV2ViQ29yZSBkYXRhIHR5cGUgdXNlZCBoZXJlLCBqdXN0IGZv
ciBub3cuCisgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdHJhbnNmb3JtTWF0cml4OwogCi0gICAg
aWYgKHQgPj0gbV9rZXlmcmFtZXMubGFzdCgpLT50aW1lKCkpCi0gICAgICAgIHJldHVybiBtX2tl
eWZyYW1lcy5sYXN0KCktPnZhbHVlKCkuYXBwbHkoKTsKKyAgICBpZiAodCA8PSBtX2tleWZyYW1l
cy5maXJzdCgpLT50aW1lKCkpIHsKKyAgICAgICAgbV9rZXlmcmFtZXMuZmlyc3QoKS0+dmFsdWUo
KS5hcHBseShsYXllclNpemUsIHRyYW5zZm9ybU1hdHJpeCk7CisgICAgICAgIHJldHVybiBXZWJU
cmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm1NYXRyaXgpOworICAgIH0KKworICAgIGlmICh0
ID49IG1fa2V5ZnJhbWVzLmxhc3QoKS0+dGltZSgpKSB7CisgICAgICAgIG1fa2V5ZnJhbWVzLmxh
c3QoKS0+dmFsdWUoKS5hcHBseShsYXllclNpemUsIHRyYW5zZm9ybU1hdHJpeCk7CisgICAgICAg
IHJldHVybiBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCh0cmFuc2Zvcm1NYXRyaXgpOworICAgIH0K
IAogICAgIHNpemVfdCBpID0gMDsKICAgICBmb3IgKDsgaSA8IG1fa2V5ZnJhbWVzLnNpemUoKSAt
IDE7ICsraSkgewpAQCAtMjM1LDcgKzMxNSwyMCBAQCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBD
Q0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpnZXRWYWx1ZShkb3VibGUgdCkgYwog
ICAgIGlmIChtX2tleWZyYW1lc1tpXS0+dGltaW5nRnVuY3Rpb24oKSkKICAgICAgICAgcHJvZ3Jl
c3MgPSBtX2tleWZyYW1lc1tpXS0+dGltaW5nRnVuY3Rpb24oKS0+Z2V0VmFsdWUocHJvZ3Jlc3Mp
OwogCi0gICAgcmV0dXJuIG1fa2V5ZnJhbWVzW2krMV0tPnZhbHVlKCkuYmxlbmQobV9rZXlmcmFt
ZXNbaV0tPnZhbHVlKCksIHByb2dyZXNzKTsKKyAgICBpZiAobV9rZXlmcmFtZXNbaV0tPnZhbHVl
KCkub3BlcmF0aW9uc01hdGNoKG1fa2V5ZnJhbWVzW2krMV0tPnZhbHVlKCkpKSB7CisgICAgICAg
IGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbV9rZXlmcmFtZXNbaSsxXS0+dmFsdWUoKS5zaXplKCk7
ICsraikKKyAgICAgICAgICAgIG1fa2V5ZnJhbWVzW2krMV0tPnZhbHVlKCkub3BlcmF0aW9ucygp
W2pdLT5ibGVuZChtX2tleWZyYW1lc1tpXS0+dmFsdWUoKS5hdChqKSwgcHJvZ3Jlc3MpLT5hcHBs
eSh0cmFuc2Zvcm1NYXRyaXgsIGxheWVyU2l6ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8g
Tm90ZTogV2ViQ29yZSBkYXRhIHR5cGUgdXNlZCBoZXJlLCBqdXN0IGZvciBub3cuCisgICAgICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IHNvdXJjZTsKKworICAgICAgICBtX2tleWZyYW1lc1tpXS0+
dmFsdWUoKS5hcHBseShsYXllclNpemUsIHNvdXJjZSk7CisgICAgICAgIG1fa2V5ZnJhbWVzW2kr
MV0tPnZhbHVlKCkuYXBwbHkobGF5ZXJTaXplLCB0cmFuc2Zvcm1NYXRyaXgpOworCisgICAgICAg
IHRyYW5zZm9ybU1hdHJpeC5ibGVuZChzb3VyY2UsIHByb2dyZXNzKTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgodHJhbnNmb3JtTWF0cml4KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NLZXlmcmFtZWRBbmltYXRp
b25DdXJ2ZS5oCmluZGV4IDExMWNhODFjZTc1MTY3OTdlMDQ0MmZiNzI5ZWIzMGFiYWVhNTM3YmEu
LmU3MGNkYWZiNzViMjk4MDliMGVkYmUzOTBjN2FiYWM5OTBhNWNiZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDS2V5ZnJhbWVkQW5p
bWF0aW9uQ3VydmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmgKQEAgLTI1LDE0ICsyNSwxMiBAQAog
I2lmbmRlZiBDQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlX2gKICNkZWZpbmUgQ0NLZXlmcmFtZWRB
bmltYXRpb25DdXJ2ZV9oCiAKKyNpbmNsdWRlICJUcmFuc2Zvcm1PcGVyYXRpb25zLmgiCiAjaW5j
bHVkZSAiY2MvQ0NBbmltYXRpb25DdXJ2ZS5oIgogI2luY2x1ZGUgImNjL0NDVGltaW5nRnVuY3Rp
b24uaCIKIAotI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1PcGVyYXRpb25zLmg+Ci0KICNp
bmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KLSNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNjcsMTcgKzY1
LDE3IEBAIHByaXZhdGU6CiAKIGNsYXNzIENDVHJhbnNmb3JtS2V5ZnJhbWUgOiBwdWJsaWMgQ0NL
ZXlmcmFtZSB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8Q0NUcmFuc2Zvcm1LZXlm
cmFtZT4gY3JlYXRlKGRvdWJsZSB0aW1lLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJh
dGlvbnMmIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+KTsKKyAgICBzdGF0aWMg
UGFzc093blB0cjxDQ1RyYW5zZm9ybUtleWZyYW1lPiBjcmVhdGUoZG91YmxlIHRpbWUsIGNvbnN0
IFRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+
KTsKICAgICB2aXJ0dWFsIH5DQ1RyYW5zZm9ybUtleWZyYW1lKCk7CiAKLSAgICBjb25zdCBXZWJL
aXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlvbnMmIHZhbHVlKCkgY29uc3Q7CisgICAgY29uc3QgVHJh
bnNmb3JtT3BlcmF0aW9ucyYgdmFsdWUoKSBjb25zdDsKIAogICAgIFBhc3NPd25QdHI8Q0NUcmFu
c2Zvcm1LZXlmcmFtZT4gY2xvbmUoKSBjb25zdDsKIAogcHJpdmF0ZToKLSAgICBDQ1RyYW5zZm9y
bUtleWZyYW1lKGRvdWJsZSB0aW1lLCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlv
bnMmIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+KTsKKyAgICBDQ1RyYW5zZm9y
bUtleWZyYW1lKGRvdWJsZSB0aW1lLCBjb25zdCBUcmFuc2Zvcm1PcGVyYXRpb25zJiB2YWx1ZSwg
UGFzc093blB0cjxDQ1RpbWluZ0Z1bmN0aW9uPik7CiAKLSAgICBXZWJLaXQ6OldlYlRyYW5zZm9y
bU9wZXJhdGlvbnMgbV92YWx1ZTsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG1fdmFsdWU7CiB9
OwogCiBjbGFzcyBDQ0tleWZyYW1lZEZsb2F0QW5pbWF0aW9uQ3VydmUgOiBwdWJsaWMgQ0NGbG9h
dEFuaW1hdGlvbkN1cnZlIHsKQEAgLTExOCw3ICsxMTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCBQYXNzT3duUHRyPENDQW5pbWF0aW9uQ3VydmU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREU7CiAK
ICAgICAvLyBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlIGltcGxlbWVudGF0aW9uCi0gICAgdmly
dHVhbCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IGdldFZhbHVlKGRvdWJsZSB0KSBj
b25zdCBPVkVSUklERTsKKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRy
aXggZ2V0VmFsdWUoZG91YmxlIHQsIGNvbnN0IEludFNpemUmKSBjb25zdCBPVkVSUklERTsKIAog
cHJpdmF0ZToKICAgICBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5jcHAKaW5kZXggNjY2
MTlhZjkxYTYxYzA3NzFiZTY0N2MxZTBhMzZmM2QwYmI3ZGViNS4uMDk2OTc5NTQ0ODNhNTc5MmYy
ZTQyOGQzMGYwYTJlNGZjY2NkYWZmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJB
bmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMzcsNiArMzcsOTQgQEAgdXNpbmcgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCituYW1lc3Bh
Y2UgeworCit0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2
ZT4KK3ZvaWQgYXBwZW5kS2V5ZnJhbWUoQ3VydmUmIGN1cnZlLCBkb3VibGUga2V5VGltZSwgY29u
c3QgVmFsdWUqIHZhbHVlLCBQYXNzT3duUHRyPENDVGltaW5nRnVuY3Rpb24+IHRpbWluZ0Z1bmN0
aW9uKQoreworICAgIGN1cnZlLmFkZEtleWZyYW1lKEtleWZyYW1lOjpjcmVhdGUoa2V5VGltZSwg
dmFsdWUtPnZhbHVlKCksIHRpbWluZ0Z1bmN0aW9uKSk7Cit9CisKK3RlbXBsYXRlIDw+Cit2b2lk
IGFwcGVuZEtleWZyYW1lPFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlLCBDQ1RyYW5zZm9ybUtleWZy
YW1lLCBDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPihDQ0tleWZyYW1lZFRyYW5z
Zm9ybUFuaW1hdGlvbkN1cnZlJiBjdXJ2ZSwgZG91YmxlIGtleVRpbWUsIGNvbnN0IFRyYW5zZm9y
bUFuaW1hdGlvblZhbHVlKiB2YWx1ZSwgUGFzc093blB0cjxDQ1RpbWluZ0Z1bmN0aW9uPiB0aW1p
bmdGdW5jdGlvbikKK3sKKyAgICBjdXJ2ZS5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1l
OjpjcmVhdGUoa2V5VGltZSwgKnZhbHVlLT52YWx1ZSgpLCB0aW1pbmdGdW5jdGlvbikpOworfQor
Cit0ZW1wbGF0ZSA8Y2xhc3MgVmFsdWUsIGNsYXNzIEtleWZyYW1lLCBjbGFzcyBDdXJ2ZT4KK1Bh
c3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihjb25zdCBL
ZXlmcmFtZVZhbHVlTGlzdCYgdmFsdWVMaXN0LCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwg
c2l6ZV90IGFuaW1hdGlvbklkLCBzaXplX3QgZ3JvdXBJZCwgZG91YmxlIHRpbWVPZmZzZXQsIEND
QWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKK3sKKyAgICBi
b29sIGFsdGVybmF0ZSA9IGZhbHNlOworICAgIGJvb2wgcmV2ZXJzZSA9IGZhbHNlOworICAgIGlm
IChhbmltYXRpb24gJiYgYW5pbWF0aW9uLT5pc0RpcmVjdGlvblNldCgpKSB7CisgICAgICAgIEFu
aW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbiA9IGFuaW1hdGlvbi0+ZGlyZWN0
aW9uKCk7CisgICAgICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJl
Y3Rpb25BbHRlcm5hdGUgfHwgZGlyZWN0aW9uID09IEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0
aW9uQWx0ZXJuYXRlUmV2ZXJzZSkKKyAgICAgICAgICAgIGFsdGVybmF0ZSA9IHRydWU7CisgICAg
ICAgIGlmIChkaXJlY3Rpb24gPT0gQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25SZXZlcnNl
IHx8IGRpcmVjdGlvbiA9PSBBbmltYXRpb246OkFuaW1hdGlvbkRpcmVjdGlvbkFsdGVybmF0ZVJl
dmVyc2UpCisgICAgICAgICAgICByZXZlcnNlID0gdHJ1ZTsKKyAgICB9CisKKyAgICBPd25QdHI8
Q3VydmU+IGN1cnZlID0gQ3VydmU6OmNyZWF0ZSgpOworICAgIFZlY3RvcjxLZXlmcmFtZT4ga2V5
ZnJhbWVzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YWx1ZUxpc3Quc2l6ZSgpOyBp
KyspIHsKKyAgICAgICAgc2l6ZV90IGluZGV4ID0gcmV2ZXJzZSA/IHZhbHVlTGlzdC5zaXplKCkg
LSBpIC0gMSA6IGk7CisKKyAgICAgICAgY29uc3QgVmFsdWUqIG9yaWdpbmFsVmFsdWUgPSBzdGF0
aWNfY2FzdDxjb25zdCBWYWx1ZSo+KHZhbHVlTGlzdC5hdChpbmRleCkpOworCisgICAgICAgIE93
blB0cjxDQ1RpbWluZ0Z1bmN0aW9uPiB0aW1pbmdGdW5jdGlvbjsKKyAgICAgICAgY29uc3QgVGlt
aW5nRnVuY3Rpb24qIG9yaWdpbmFsVGltaW5nRnVuY3Rpb24gPSBvcmlnaW5hbFZhbHVlLT50aW1p
bmdGdW5jdGlvbigpOworCisgICAgICAgIC8vIElmIHRoZXJlIGhhc24ndCBiZWVuIGEgdGltaW5n
IGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGtleWZyYW1lLCB1c2UgdGhlCisgICAgICAg
IC8vIGFuaW1hdGlvbidzIHRpbWluZyBmdW5jdGlvbiwgaWYgd2UgaGF2ZSBvbmUuCisgICAgICAg
IGlmICghb3JpZ2luYWxUaW1pbmdGdW5jdGlvbiAmJiBhbmltYXRpb24tPmlzVGltaW5nRnVuY3Rp
b25TZXQoKSkKKyAgICAgICAgICAgIG9yaWdpbmFsVGltaW5nRnVuY3Rpb24gPSBhbmltYXRpb24t
PnRpbWluZ0Z1bmN0aW9uKCkuZ2V0KCk7CisKKyAgICAgICAgaWYgKG9yaWdpbmFsVGltaW5nRnVu
Y3Rpb24pIHsKKyAgICAgICAgICAgIHN3aXRjaCAob3JpZ2luYWxUaW1pbmdGdW5jdGlvbi0+dHlw
ZSgpKSB7CisgICAgICAgICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9uOjpTdGVwc0Z1bmN0aW9uOgor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBhZGQgc3VwcG9ydCBmb3Igc3RlcHMgdGltaW5nIGZ1
bmN0aW9uLgorICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgY2Fz
ZSBUaW1pbmdGdW5jdGlvbjo6TGluZWFyRnVuY3Rpb246CisgICAgICAgICAgICAgICAgLy8gRG9u
J3Qgc2V0IHRoZSB0aW1pbmcgZnVuY3Rpb24uIEtleWZyYW1lcyBhcmUgaW50ZXJwb2xhdGVkIGxp
bmVhcmx5IGlmIHRoZXJlIGlzIG5vIHRpbWluZyBmdW5jdGlvbi4KKyAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgIGNhc2UgVGltaW5nRnVuY3Rpb246OkN1YmljQmV6aWVyRnVuY3Rp
b246CisgICAgICAgICAgICAgICAgY29uc3QgQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbiogb3Jp
Z2luYWxCZXppZXJUaW1pbmdGdW5jdGlvbiA9IHN0YXRpY19jYXN0PGNvbnN0IEN1YmljQmV6aWVy
VGltaW5nRnVuY3Rpb24qPihvcmlnaW5hbFRpbWluZ0Z1bmN0aW9uKTsKKyAgICAgICAgICAgICAg
ICB0aW1pbmdGdW5jdGlvbiA9IENDQ3ViaWNCZXppZXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKG9y
aWdpbmFsQmV6aWVyVGltaW5nRnVuY3Rpb24tPngxKCksIG9yaWdpbmFsQmV6aWVyVGltaW5nRnVu
Y3Rpb24tPnkxKCksIG9yaWdpbmFsQmV6aWVyVGltaW5nRnVuY3Rpb24tPngyKCksIG9yaWdpbmFs
QmV6aWVyVGltaW5nRnVuY3Rpb24tPnkyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfSAvLyBzd2l0Y2gKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aW1pbmdG
dW5jdGlvbiA9IENDRWFzZVRpbWluZ0Z1bmN0aW9uOjpjcmVhdGUoKTsKKworICAgICAgICBkb3Vi
bGUgZHVyYXRpb24gPSAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNEdXJhdGlvblNldCgpKSA/
IGFuaW1hdGlvbi0+ZHVyYXRpb24oKSA6IDE7CisgICAgICAgIGRvdWJsZSBrZXlUaW1lID0gb3Jp
Z2luYWxWYWx1ZS0+a2V5VGltZSgpICogZHVyYXRpb247CisgICAgICAgIGlmIChyZXZlcnNlKQor
ICAgICAgICAgICAga2V5VGltZSA9IGR1cmF0aW9uIC0ga2V5VGltZTsKKyAgICAgICAgYXBwZW5k
S2V5ZnJhbWU8VmFsdWUsIEtleWZyYW1lLCBDdXJ2ZT4oKmN1cnZlLCBrZXlUaW1lLCBvcmlnaW5h
bFZhbHVlLCB0aW1pbmdGdW5jdGlvbi5yZWxlYXNlKCkpOworICAgIH0KKworICAgIE93blB0cjxD
Q0FjdGl2ZUFuaW1hdGlvbj4gYW5pbSA9IENDQWN0aXZlQW5pbWF0aW9uOjpjcmVhdGUoY3VydmUu
cmVsZWFzZSgpLCBhbmltYXRpb25JZCwgZ3JvdXBJZCwgdGFyZ2V0UHJvcGVydHkpOworCisgICAg
QVNTRVJUKGFuaW0uZ2V0KCkpOworCisgICAgaWYgKGFuaW0uZ2V0KCkpIHsKKyAgICAgICAgaW50
IGl0ZXJhdGlvbnMgPSAoYW5pbWF0aW9uICYmIGFuaW1hdGlvbi0+aXNJdGVyYXRpb25Db3VudFNl
dCgpKSA/IGFuaW1hdGlvbi0+aXRlcmF0aW9uQ291bnQoKSA6IDE7CisgICAgICAgIGFuaW0tPnNl
dEl0ZXJhdGlvbnMoaXRlcmF0aW9ucyk7CisgICAgICAgIGFuaW0tPnNldEFsdGVybmF0ZXNEaXJl
Y3Rpb24oYWx0ZXJuYXRlKTsKKyAgICB9CisKKyAgICAvLyBJbiBvcmRlciB0byBhdm9pZCBza2V3
LCB0aGUgbWFpbiB0aHJlYWQgYW5pbWF0aW9uIGNhbm5vdCB0aWNrIHVudGlsIGl0IGhhcyByZWNl
aXZlZCB0aGUgc3RhcnQgdGltZSBvZgorICAgIC8vIHRoZSBjb3JyZXNwb25kaW5nIGltcGwgdGhy
ZWFkIGFuaW1hdGlvbi4KKyAgICBhbmltLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSh0
cnVlKTsKKworICAgIC8vIElmIHRpbWVPZmZzZXQgPiAwLCB0aGVuIHRoZSBhbmltYXRpb24gaGFz
IHN0YXJ0ZWQgaW4gdGhlIHBhc3QuCisgICAgYW5pbS0+c2V0VGltZU9mZnNldCh0aW1lT2Zmc2V0
KTsKKworICAgIHJldHVybiBhbmltLnJlbGVhc2UoKTsKK30KKworfSAvLyBuYW1lcGFjZQorCiBD
Q0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQqIGNsaWVudCkKICAgICA6IG1fZm9yY2VTeW5j
KGZhbHNlKQogICAgICwgbV9jbGllbnQoY2xpZW50KQpAQCAtNTIsNiArMTQwLDMyIEBAIFBhc3NP
d25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyOjpjcmVhdGUoQ0NMYXllCiAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBDQ0xheWVyQW5pbWF0
aW9uQ29udHJvbGxlcihjbGllbnQpKTsKIH0KIAorYm9vbCBDQ0xheWVyQW5pbWF0aW9uQ29udHJv
bGxlcjo6YWRkQW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiB2YWx1ZUxpc3QsIGNv
bnN0IEludFNpemUmLCBjb25zdCBBbmltYXRpb24qIGFuaW1hdGlvbiwgaW50IGFuaW1hdGlvbklk
LCBpbnQgZ3JvdXBJZCwgZG91YmxlIHRpbWVPZmZzZXQpCit7CisgICAgaWYgKCFhbmltYXRpb24p
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4g
dG9BZGQ7CisgICAgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlX
ZWJraXRUcmFuc2Zvcm0pCisgICAgICAgIHRvQWRkID0gY3JlYXRlQWN0aXZlQW5pbWF0aW9uPFRy
YW5zZm9ybUFuaW1hdGlvblZhbHVlLCBDQ1RyYW5zZm9ybUtleWZyYW1lLCBDQ0tleWZyYW1lZFRy
YW5zZm9ybUFuaW1hdGlvbkN1cnZlPih2YWx1ZUxpc3QsIGFuaW1hdGlvbiwgYW5pbWF0aW9uSWQs
IGdyb3VwSWQsIHRpbWVPZmZzZXQsIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pOworICAg
IGVsc2UgaWYgKHZhbHVlTGlzdC5wcm9wZXJ0eSgpID09IEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5
KQorICAgICAgICB0b0FkZCA9IGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbjxGbG9hdEFuaW1hdGlvblZh
bHVlLCBDQ0Zsb2F0S2V5ZnJhbWUsIENDS2V5ZnJhbWVkRmxvYXRBbmltYXRpb25DdXJ2ZT4odmFs
dWVMaXN0LCBhbmltYXRpb24sIGFuaW1hdGlvbklkLCBncm91cElkLCB0aW1lT2Zmc2V0LCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSk7CisKKyAgICBpZiAodG9BZGQuZ2V0KCkpIHsKKyAgICAg
ICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBhbmltYXRpb25zIHdpdGggdGhlIHNhbWUgYW5pbWF0
aW9uIGlkIGFuZCB0YXJnZXQgcHJvcGVydHkuCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTspIHsKKyAgICAgICAgICAgIGlmIChtX2FjdGl2
ZUFuaW1hdGlvbnNbaV0tPmlkKCkgPT0gYW5pbWF0aW9uSWQgJiYgbV9hY3RpdmVBbmltYXRpb25z
W2ldLT50YXJnZXRQcm9wZXJ0eSgpID09IHRvQWRkLT50YXJnZXRQcm9wZXJ0eSgpKQorICAgICAg
ICAgICAgICAgIG1fYWN0aXZlQW5pbWF0aW9ucy5yZW1vdmUoaSk7CisgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIG1fYWN0aXZlQW5pbWF0
aW9ucy5hcHBlbmQodG9BZGQucmVsZWFzZSgpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCiB2b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9s
bGVyOjpwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KQog
ewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVBbmltYXRpb25zLnNpemUoKTsg
KytpKSB7CkBAIC03MCwxNiArMTg0LDYgQEAgdm9pZCBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cjo6cmVtb3ZlQW5pbWF0aW9uKGludCBhbmltYXRpb25JZCkKICAgICB9CiB9CiAKLXZvaWQgQ0NM
YXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnJlbW92ZUFuaW1hdGlvbihpbnQgYW5pbWF0aW9uSWQs
IENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJnZXRQcm9wZXJ0eSkKLXsKLSAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZlQW5pbWF0aW9ucy5zaXplKCk7KSB7Ci0g
ICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlvbnNbaV0tPmlkKCkgPT0gYW5pbWF0aW9uSWQgJiYg
bV9hY3RpdmVBbmltYXRpb25zW2ldLT50YXJnZXRQcm9wZXJ0eSgpID09IHRhcmdldFByb3BlcnR5
KQotICAgICAgICAgICAgbV9hY3RpdmVBbmltYXRpb25zLnJlbW92ZShpKTsKLSAgICAgICAgZWxz
ZQotICAgICAgICAgICAgaSsrOwotICAgIH0KLX0KLQogLy8gQWNjb3JkaW5nIHRvIHJlbmRlciBs
YXllciBiYWNraW5nLCB0aGVzZSBhcmUgZm9yIHRlc3Rpbmcgb25seS4KIHZvaWQgQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXI6OnN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1l
KQogewpAQCAtMTIzLDcgKzIyNyw3IEBAIHZvaWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6
OmFuaW1hdGUoZG91YmxlIG1vbm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzCiAgICAgc3Rh
cnRBbmltYXRpb25zV2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eShtb25vdG9uaWNUaW1lLCBl
dmVudHMpOwogfQogCi12b2lkIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjphZGRBbmltYXRp
b24oUGFzc093blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gYW5pbWF0aW9uKQordm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlcjo6YWRkKFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFu
aW1hdGlvbikKIHsKICAgICBtX2FjdGl2ZUFuaW1hdGlvbnMuYXBwZW5kKGFuaW1hdGlvbik7CiB9
CkBAIC0xMzYsMTYgKzI0MCw2IEBAIENDQWN0aXZlQW5pbWF0aW9uKiBDQ0xheWVyQW5pbWF0aW9u
Q29udHJvbGxlcjo6Z2V0QWN0aXZlQW5pbWF0aW9uKGludCBncm91cElkLCBDCiAgICAgcmV0dXJu
IDA7CiB9CiAKLUNDQWN0aXZlQW5pbWF0aW9uKiBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6
Z2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSB0YXJn
ZXRQcm9wZXJ0eSkgY29uc3QKLXsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fYWN0aXZl
QW5pbWF0aW9ucy5zaXplKCk7ICsraSkgewotICAgICAgICBzaXplX3QgaW5kZXggPSBtX2FjdGl2
ZUFuaW1hdGlvbnMuc2l6ZSgpIC0gaSAtIDE7Ci0gICAgICAgIGlmIChtX2FjdGl2ZUFuaW1hdGlv
bnNbaW5kZXhdLT50YXJnZXRQcm9wZXJ0eSgpID09IHRhcmdldFByb3BlcnR5KQotICAgICAgICAg
ICAgcmV0dXJuIG1fYWN0aXZlQW5pbWF0aW9uc1tpbmRleF0uZ2V0KCk7Ci0gICAgfQotICAgIHJl
dHVybiAwOwotfQotCiBib29sIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpoYXNBY3RpdmVB
bmltYXRpb24oKSBjb25zdAogewogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9hY3RpdmVB
bmltYXRpb25zLnNpemUoKTsgKytpKSB7CkBAIC0yMDAsNyArMjk0LDcgQEAgdm9pZCBDQ0xheWVy
QW5pbWF0aW9uQ29udHJvbGxlcjo6cHVzaE5ld0FuaW1hdGlvbnNUb0ltcGxUaHJlYWQoQ0NMYXll
ckFuaW1hdGlvbkMKICAgICAgICAgLy8gVGhlIG5ldyBhbmltYXRpb24gc2hvdWxkIGJlIHNldCB0
byBydW4gYXMgc29vbiBhcyBwb3NzaWJsZS4KICAgICAgICAgdG9BZGQtPnNldFJ1blN0YXRlKEND
QWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yVGFyZ2V0QXZhaWxhYmlsaXR5LCAwKTsKICAgICAg
ICAgdG9BZGQtPnNldFN0YXJ0VGltZSgwKTsKLSAgICAgICAgY29udHJvbGxlckltcGwtPmFkZEFu
aW1hdGlvbih0b0FkZC5yZWxlYXNlKCkpOworICAgICAgICBjb250cm9sbGVySW1wbC0+YWRkKHRv
QWRkLnJlbGVhc2UoKSk7CiAgICAgfQogfQogCkBAIC0zNjcsNyArNDYxLDcgQEAgdm9pZCBDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6cmVwbGFjZUltcGxUaHJlYWRBbmltYXRpb25zKENDTGF5
ZXJBbmltYXRpb25Db24KICAgICAgICAgICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFu
aW1hdGlvbjo6V2FpdGluZ0ZvclRhcmdldEF2YWlsYWJpbGl0eSwgMCk7CiAgICAgICAgICAgICB0
b0FkZC0+c2V0U3RhcnRUaW1lKDApOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRyb2xsZXJJbXBs
LT5hZGRBbmltYXRpb24odG9BZGQucmVsZWFzZSgpKTsKKyAgICAgICAgY29udHJvbGxlckltcGwt
PmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogICAgIH0KIH0KIApAQCAtMzg2LDcgKzQ4MCw3IEBAIHZv
aWQgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OnRpY2tBbmltYXRpb25zKGRvdWJsZSBtb25v
dG9uaWNUaW1lKQogCiAgICAgICAgICAgICBjYXNlIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zv
cm06IHsKICAgICAgICAgICAgICAgICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiB0
cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSA9IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+Y3VydmUoKS0+
dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpOwotICAgICAgICAgICAgICAgIGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeCA9IHRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlLT5nZXRW
YWx1ZSh0cmltbWVkKTsKKyAgICAgICAgICAgICAgICBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1h
dHJpeCBtYXRyaXggPSB0cmFuc2Zvcm1BbmltYXRpb25DdXJ2ZS0+Z2V0VmFsdWUodHJpbW1lZCwg
bV9jbGllbnQtPmJvdW5kcygpKTsKICAgICAgICAgICAgICAgICBpZiAobV9hY3RpdmVBbmltYXRp
b25zW2ldLT5pc0ZpbmlzaGVkQXQobW9ub3RvbmljVGltZSkpCiAgICAgICAgICAgICAgICAgICAg
IG1fYWN0aXZlQW5pbWF0aW9uc1tpXS0+c2V0UnVuU3RhdGUoQ0NBY3RpdmVBbmltYXRpb246OkZp
bmlzaGVkLCBtb25vdG9uaWNUaW1lKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyLmgKaW5kZXggMmZjMzlkODEzZTE4ZTYwMDk5ODA0NzdjNDVlNzdmZTgz
NDk2M2ExYy4uYzRjOTE1OGIyYzg3Y2ZlNDZkZmMxNjJkMDg3YTExZmRmZmI4OTI0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlci5oCkBAIC01NCw2ICs1
NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGZsb2F0IG9wYWNpdHkoKSBjb25zdCA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybUZyb21BbmltYXRpb24oY29uc3QgV2ViS2l0OjpX
ZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpID0gMDsKICAgICB2aXJ0dWFsIGNvbnN0IFdlYktpdDo6
V2ViVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0
dWFsIGNvbnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0ID0gMDsKIH07CiAKIGNsYXNzIENDTGF5
ZXJBbmltYXRpb25Db250cm9sbGVyIHsKQEAgLTY0LDEwICs2NSw5IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIH5DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpOwogCiAgICAgLy8gVGhlc2UgbWV0
aG9kcyBhcmUgdmlydHVhbCBmb3IgdGVzdGluZy4KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQW5pbWF0
aW9uKFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+KTsKKyAgICB2aXJ0dWFsIGJvb2wgYWRk
QW5pbWF0aW9uKGNvbnN0IEtleWZyYW1lVmFsdWVMaXN0JiwgY29uc3QgSW50U2l6ZSYgYm94U2l6
ZSwgY29uc3QgQW5pbWF0aW9uKiwgaW50IGFuaW1hdGlvbklkLCBpbnQgZ3JvdXBJZCwgZG91Ymxl
IHRpbWVPZmZzZXQpOwogICAgIHZpcnR1YWwgdm9pZCBwYXVzZUFuaW1hdGlvbihpbnQgYW5pbWF0
aW9uSWQsIGRvdWJsZSB0aW1lT2Zmc2V0KTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQW5pbWF0
aW9uKGludCBhbmltYXRpb25JZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlbW92ZUFuaW1hdGlvbihp
bnQgYW5pbWF0aW9uSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0eSk7CiAgICAg
dmlydHVhbCB2b2lkIHN1c3BlbmRBbmltYXRpb25zKGRvdWJsZSBtb25vdG9uaWNUaW1lKTsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzdW1lQW5pbWF0aW9ucyhkb3VibGUgbW9ub3RvbmljVGltZSk7CiAK
QEAgLTc3LDE0ICs3NywxMiBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGFuaW1hdGUoZG91YmxlIG1v
bm90b25pY1RpbWUsIENDQW5pbWF0aW9uRXZlbnRzVmVjdG9yKik7CiAKLSAgICAvLyBSZXR1cm5z
IHRoZSBhY3RpdmUgYW5pbWF0aW9uIGluIHRoZSBnaXZlbiBncm91cCwgYW5pbWF0aW5nIHRoZSBn
aXZlbiBwcm9wZXJ0eSwgaWYgc3VjaCBhbgorICAgIHZvaWQgYWRkKFBhc3NPd25QdHI8Q0NBY3Rp
dmVBbmltYXRpb24+KTsKKworICAgIC8vIFJldHVybnMgdGhlIGFjdGl2ZSBhbmltYXRpb24gaW4g
dGhlIGdpdmVuIGdyb3VwLCBhbmltYXRpbmcgdGhlIGdpdmVuIHByb3BlcnR5IGlmIHN1Y2ggYW4K
ICAgICAvLyBhbmltYXRpb24gZXhpc3RzLgogICAgIENDQWN0aXZlQW5pbWF0aW9uKiBnZXRBY3Rp
dmVBbmltYXRpb24oaW50IGdyb3VwSWQsIENDQWN0aXZlQW5pbWF0aW9uOjpUYXJnZXRQcm9wZXJ0
eSkgY29uc3Q7CiAKLSAgICAvLyBSZXR1cm5zIHRoZSBhY3RpdmUgYW5pbWF0aW9uIGFuaW1hdGlu
ZyB0aGUgZ2l2ZW4gcHJvcGVydHkgdGhhdCBpcyBlaXRoZXIgcnVubmluZywgb3IgaXMKLSAgICAv
LyBuZXh0IHRvIHJ1biwgaWYgc3VjaCBhbiBhbmltYXRpb24gZXhpc3RzLgotICAgIENDQWN0aXZl
QW5pbWF0aW9uKiBnZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OlRhcmdldFBy
b3BlcnR5KSBjb25zdDsKLQogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGVyZSBhcmUgYW55IGFu
aW1hdGlvbnMgdGhhdCBoYXZlIG5laXRoZXIgZmluaXNoZWQgbm9yIGFib3J0ZWQuCiAgICAgYm9v
bCBoYXNBY3RpdmVBbmltYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJJbXBsLmgKaW5kZXgg
ZmJjMmQxYTFlYWZkNWRhMmQ4NzA2YTdkNmViMjIzNzUxNTQ1MmFlMC4uMmM0MWQwNmVhOGIwMGJk
ZDJlY2Y0Mzc5ZmE4ZDVmYjlkZmMyOWNiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllckltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVySW1wbC5oCkBAIC02Myw2
ICs2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGZsb2F0IG9wYWNpdHkoKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX29wYWNpdHk7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2V0VHJhbnNmb3Jt
RnJvbUFuaW1hdGlvbihjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JikgT1ZF
UlJJREU7CiAgICAgdmlydHVhbCBjb25zdCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0oKSBjb25zdCBPVkVSUklERSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAg
IHZpcnR1YWwgY29uc3QgSW50U2l6ZSYgYm91bmRzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4g
bV9ib3VuZHM7IH0KIAogICAgIC8vIFRyZWUgc3RydWN0dXJlLgogICAgIENDTGF5ZXJJbXBsKiBw
YXJlbnQoKSBjb25zdCB7IHJldHVybiBtX3BhcmVudDsgfQpAQCAtMTY1LDcgKzE2Niw2IEBAIHB1
YmxpYzoKICAgICBDQ1JlbmRlclN1cmZhY2UqIHRhcmdldFJlbmRlclN1cmZhY2UoKSBjb25zdCB7
IHJldHVybiBtX3RhcmdldFJlbmRlclN1cmZhY2U7IH0KICAgICB2b2lkIHNldFRhcmdldFJlbmRl
clN1cmZhY2UoQ0NSZW5kZXJTdXJmYWNlKiBzdXJmYWNlKSB7IG1fdGFyZ2V0UmVuZGVyU3VyZmFj
ZSA9IHN1cmZhY2U7IH0KIAotICAgIGNvbnN0IEludFNpemUmIGJvdW5kcygpIGNvbnN0IHsgcmV0
dXJuIG1fYm91bmRzOyB9CiAgICAgdm9pZCBzZXRCb3VuZHMoY29uc3QgSW50U2l6ZSYpOwogCiAg
ICAgY29uc3QgSW50U2l6ZSYgY29udGVudEJvdW5kcygpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVu
dEJvdW5kczsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0Fu
aW1hdGlvblRlc3RDb21tb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0Fu
aW1hdGlvblRlc3RDb21tb24uY3BwCmluZGV4IDg1NDU5NTM4MDUzYzZhOTg2MGFmMGY3OTQ4MGZj
ZTZmNjNkN2MzYzMuLjBlOGMxYTQwMWY2YzhiYmRlMjIzMjMxZDJjOTNmZDk4NGIzNTIxM2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29t
bW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVz
dENvbW1vbi5jcHAKQEAgLTI5LDEyICsyOSw5IEBACiAjaW5jbHVkZSAiR3JhcGhpY3NMYXllci5o
IgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zv
cm1PcGVyYXRpb24uaCIKLSNpbmNsdWRlICJjYy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1cnZlLmgi
CiAjaW5jbHVkZSAiY2MvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJj
Yy9DQ0xheWVySW1wbC5oIgogCi0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybU9wZXJhdGlv
bnMuaD4KLQogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CkBAIC00Miwz
OCArMzksMzggQEAgbmFtZXNwYWNlIHsKIHRlbXBsYXRlIDxjbGFzcyBUYXJnZXQ+CiB2b2lkIGFk
ZE9wYWNpdHlUcmFuc2l0aW9uKFRhcmdldCYgdGFyZ2V0LCBkb3VibGUgZHVyYXRpb24sIGZsb2F0
IHN0YXJ0T3BhY2l0eSwgZmxvYXQgZW5kT3BhY2l0eSwgYm9vbCB1c2VUaW1pbmdGdW5jdGlvbikK
IHsKLSAgICBPd25QdHI8Q0NLZXlmcmFtZWRGbG9hdEFuaW1hdGlvbkN1cnZlPiBjdXJ2ZShDQ0tl
eWZyYW1lZEZsb2F0QW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsKLQorICAgIFdlYkNvcmU6Oktl
eWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5T3BhY2l0eSk7CiAgICAgaWYg
KGR1cmF0aW9uID4gMCkKLSAgICAgICAgY3VydmUtPmFkZEtleWZyYW1lKENDRmxvYXRLZXlmcmFt
ZTo6Y3JlYXRlKDAsIHN0YXJ0T3BhY2l0eSwgdXNlVGltaW5nRnVuY3Rpb24gPyBudWxscHRyIDog
Q0NFYXNlVGltaW5nRnVuY3Rpb246OmNyZWF0ZSgpKSk7Ci0gICAgY3VydmUtPmFkZEtleWZyYW1l
KENDRmxvYXRLZXlmcmFtZTo6Y3JlYXRlKGR1cmF0aW9uLCBlbmRPcGFjaXR5LCBudWxscHRyKSk7
CisgICAgICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoMCwgc3RhcnRP
cGFjaXR5KSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgRmxvYXRBbmltYXRpb25WYWx1ZShkdXJh
dGlvbiwgZW5kT3BhY2l0eSkpOworCisgICAgUmVmUHRyPEFuaW1hdGlvbj4gYW5pbWF0aW9uID0g
QW5pbWF0aW9uOjpjcmVhdGUoKTsKKyAgICBhbmltYXRpb24tPnNldER1cmF0aW9uKGR1cmF0aW9u
KTsKKworICAgIGlmICh1c2VUaW1pbmdGdW5jdGlvbikKKyAgICAgICAgYW5pbWF0aW9uLT5zZXRU
aW1pbmdGdW5jdGlvbihMaW5lYXJUaW1pbmdGdW5jdGlvbjo6Y3JlYXRlKCkpOwogCi0gICAgT3du
UHRyPENDQWN0aXZlQW5pbWF0aW9uPiBhbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OmNyZWF0
ZShjdXJ2ZS5yZWxlYXNlKCksIDAsIDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7Ci0g
ICAgYW5pbWF0aW9uLT5zZXROZWVkc1N5bmNocm9uaXplZFN0YXJ0VGltZSh0cnVlKTsKKyAgICBJ
bnRTaXplIGJveFNpemU7CiAKLSAgICB0YXJnZXQuYWRkQW5pbWF0aW9uKGFuaW1hdGlvbi5yZWxl
YXNlKCkpOworICAgIHRhcmdldC5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRp
b24uZ2V0KCksIDAsIDAsIDApOwogfQogCiB0ZW1wbGF0ZSA8Y2xhc3MgVGFyZ2V0Pgogdm9pZCBh
ZGRBbmltYXRlZFRyYW5zZm9ybShUYXJnZXQmIHRhcmdldCwgZG91YmxlIGR1cmF0aW9uLCBpbnQg
ZGVsdGFYLCBpbnQgZGVsdGFZKQogewogICAgIHN0YXRpYyBpbnQgaWQgPSAwOwotICAgIE93blB0
cjxDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlPiBjdXJ2ZShDQ0tleWZyYW1lZFRy
YW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpjcmVhdGUoKSk7CisgICAgV2ViQ29yZTo6S2V5ZnJhbWVW
YWx1ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwogCi0gICAg
aWYgKGR1cmF0aW9uID4gMCkgewotICAgICAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlv
bnMgc3RhcnRPcGVyYXRpb25zOwotICAgICAgICBzdGFydE9wZXJhdGlvbnMuYXBwZW5kVHJhbnNs
YXRlKGRlbHRhWCwgZGVsdGFZLCAwKTsKLSAgICAgICAgY3VydmUtPmFkZEtleWZyYW1lKENDVHJh
bnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSgwLCBzdGFydE9wZXJhdGlvbnMsIG51bGxwdHIpKTsKLSAg
ICB9CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zOworICAgIG9wZXJhdGlvbnMu
b3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShM
ZW5ndGgoZGVsdGFYLCBXZWJDb3JlOjpGaXhlZCksIExlbmd0aChkZWx0YVksIFdlYkNvcmU6OkZp
eGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNl
cnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zKSk7CiAKLSAgICBX
ZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKLSAgICBvcGVyYXRpb25z
LmFwcGVuZFRyYW5zbGF0ZShkZWx0YVgsIGRlbHRhWSwgMCk7Ci0gICAgY3VydmUtPmFkZEtleWZy
YW1lKENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZShkdXJhdGlvbiwgb3BlcmF0aW9ucywgbnVs
bHB0cikpOworICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3Jl
YXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CiAKLSAgICBPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW1hdGlvbihDQ0FjdGl2ZUFuaW1hdGlvbjo6Y3JlYXRl
KGN1cnZlLnJlbGVhc2UoKSwgaWQrKywgMCwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkp
OwotICAgIGFuaW1hdGlvbi0+c2V0TmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUodHJ1ZSk7Cisg
ICAgSW50U2l6ZSBib3hTaXplOwogCi0gICAgdGFyZ2V0LmFkZEFuaW1hdGlvbihhbmltYXRpb24u
cmVsZWFzZSgpKTsKKyAgICB0YXJnZXQuYWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5p
bWF0aW9uLmdldCgpLCArK2lkLCAwLCAwKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UKQEAgLTEwMiw3
ICs5OSw3IEBAIEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uOjp+RmFrZVRyYW5zZm9ybVRyYW5zaXRp
b24oKQogewogfQogCi1XZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4IEZha2VUcmFuc2Zv
cm1UcmFuc2l0aW9uOjpnZXRWYWx1ZShkb3VibGUgdGltZSkgY29uc3QKK1dlYktpdDo6V2ViVHJh
bnNmb3JtYXRpb25NYXRyaXggRmFrZVRyYW5zZm9ybVRyYW5zaXRpb246OmdldFZhbHVlKGRvdWJs
ZSB0aW1lLCBjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKSBjb25zdAogewogICAgIHJldHVy
biBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0FuaW1hdGlvblRlc3RDb21tb24uaAppbmRleCA0YmJk
NjAxMTIyMmExMzM5OTQ3MjE4YzdiM2I3Zjc0NjQ3Y2ZlYjUxLi40Mzg0MTE3ZDM5Y2FiNzIyZjg0
NTRlZDU3NzZlNTAyMjk5MTYwZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3Rlc3RzL0NDQW5pbWF0aW9uVGVzdENvbW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgKQEAgLTU0LDcgKzU0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgfkZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKCk7CiAKICAgICB2aXJ0dWFs
IGRvdWJsZSBkdXJhdGlvbigpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuIG1fZHVyYXRpb247IH0K
LSAgICB2aXJ0dWFsIFdlYktpdDo6V2ViVHJhbnNmb3JtYXRpb25NYXRyaXggZ2V0VmFsdWUoZG91
YmxlIHRpbWUpIGNvbnN0IE9WRVJSSURFOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBnZXRWYWx1ZShkb3VibGUgdGltZSwgY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYpIGNvbnN0IE9WRVJSSURFOwogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFdlYkNvcmU6OkND
QW5pbWF0aW9uQ3VydmU+IGNsb25lKCkgY29uc3QgT1ZFUlJJREU7CiAKQEAgLTg5LDEwICs4OSwx
MiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBmbG9hdCBvcGFjaXR5KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gbV9vcGFjaXR5OyB9CiAgICAgdmlydHVhbCB2b2lkIHNldFRyYW5zZm9ybUZyb21B
bmltYXRpb24oY29uc3QgV2ViS2l0OjpXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
KSBPVkVSUklERSB7IG1fdHJhbnNmb3JtID0gdHJhbnNmb3JtOyB9CiAgICAgdmlydHVhbCBjb25z
dCBXZWJLaXQ6OldlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0oKSBjb25zdCBPVkVS
UklERSB7IHJldHVybiBtX3RyYW5zZm9ybTsgfQorICAgIHZpcnR1YWwgY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgYm91bmRzKCkgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gbV9ib3VuZHM7IH0KIAog
cHJpdmF0ZToKICAgICBmbG9hdCBtX29wYWNpdHk7CiAgICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCBtX3RyYW5zZm9ybTsKKyAgICBXZWJDb3JlOjpJbnRTaXplIG1fYm91bmRzOwog
fTsKIAogdm9pZCBhZGRPcGFjaXR5VHJhbnNpdGlvblRvQ29udHJvbGxlcihXZWJDb3JlOjpDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlciYsIGRvdWJsZSBkdXJhdGlvbiwgZmxvYXQgc3RhcnRPcGFj
aXR5LCBmbG9hdCBlbmRPcGFjaXR5LCBib29sIHVzZVRpbWluZ0Z1bmN0aW9uKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2
ZVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1h
dGlvbkN1cnZlVGVzdC5jcHAKaW5kZXggZWI2YmIwMzYzZGE4NTVlZmM1NzNlODA5NDY4YmE3Mjll
NDhhY2Q0Zi4uYWQxYWU3NGNhMTI1NzM2NGM5YzE1MzBlNDdlMjBiNjk0N2Y1MGJiZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1lZEFuaW1hdGlvbkN1
cnZlVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0tleWZyYW1l
ZEFuaW1hdGlvbkN1cnZlVGVzdC5jcHAKQEAgLTMxLDcgKzMxLDYgQEAKIAogI2luY2x1ZGUgPGdt
b2NrL2dtb2NrLmg+CiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KLSNpbmNsdWRlIDxwdWJsaWMv
V2ViVHJhbnNmb3JtT3BlcmF0aW9ucy5oPgogI2luY2x1ZGUgPHB1YmxpYy9XZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeC5oPgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVj
dG9yLmg+CkBAIC0xMTQsNTUgKzExMyw1NyBAQCBURVNUKENDS2V5ZnJhbWVkQW5pbWF0aW9uQ3Vy
dmVUZXN0LCBSZXBlYXRlZEZsb2F0S2V5VGltZXMpCiBURVNUKENDS2V5ZnJhbWVkQW5pbWF0aW9u
Q3VydmVUZXN0LCBPbmVUcmFuc2Zvcm1LZXlmcmFtZSkKIHsKICAgICBPd25QdHI8Q0NLZXlmcmFt
ZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4gY3VydmUoQ0NLZXlmcmFtZWRUcmFuc2Zvcm1Bbmlt
YXRpb25DdXJ2ZTo6Y3JlYXRlKCkpOwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtT3BlcmF0aW9u
cyBvcGVyYXRpb25zOwotICAgIG9wZXJhdGlvbnMuYXBwZW5kVHJhbnNsYXRlKDIsIDAsIDApOwor
ICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczsKKyAgICBvcGVyYXRpb25zLm9wZXJh
dGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3Ro
KDIsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xB
VEVfWCkpOwogICAgIGN1cnZlLT5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVh
dGUoMCwgb3BlcmF0aW9ucywgbnVsbHB0cikpOwogCi0gICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBj
dXJ2ZS0+Z2V0VmFsdWUoLTEpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRW
YWx1ZSgwKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMC41KSk7
Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMSkpOwotICAgIGV4cGVj
dFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKDIpKTsKKyAgICBJbnRTaXplIGxheWVyU2l6
ZTsgLy8gaWdub3JlZAorICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKC0x
LCBsYXllclNpemUpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgw
LCBsYXllclNpemUpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgw
LjUsIGxheWVyU2l6ZSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVl
KDEsIGxheWVyU2l6ZSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVl
KDIsIGxheWVyU2l6ZSkpOwogfQogCiAvLyBUZXN0cyB0aGF0IGEgdHJhbnNmb3JtIGFuaW1hdGlv
biB3aXRoIHR3byBrZXlmcmFtZXMgd29ya3MgYXMgZXhwZWN0ZWQuCiBURVNUKENDS2V5ZnJhbWVk
QW5pbWF0aW9uQ3VydmVUZXN0LCBUd29UcmFuc2Zvcm1LZXlmcmFtZSkKIHsKICAgICBPd25QdHI8
Q0NLZXlmcmFtZWRUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZT4gY3VydmUoQ0NLZXlmcmFtZWRUcmFu
c2Zvcm1BbmltYXRpb25DdXJ2ZTo6Y3JlYXRlKCkpOwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3Jt
T3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKLSAgICBvcGVyYXRpb25zMS5hcHBlbmRUcmFuc2xhdGUo
MiwgMCwgMCk7Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMy
OwotICAgIG9wZXJhdGlvbnMyLmFwcGVuZFRyYW5zbGF0ZSg0LCAwLCAwKTsKLQorICAgIFRyYW5z
Zm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygp
LmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwgRml4
ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7
CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKKyAgICBvcGVyYXRpb25zMi5v
cGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExl
bmd0aCg0LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1gpKTsKICAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NUcmFuc2Zvcm1LZXlmcmFtZTo6
Y3JlYXRlKDAsIG9wZXJhdGlvbnMxLCBudWxscHRyKSk7CiAgICAgY3VydmUtPmFkZEtleWZyYW1l
KENDVHJhbnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSgxLCBvcGVyYXRpb25zMiwgbnVsbHB0cikpOwot
ICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKC0xKSk7Ci0gICAgZXhwZWN0
VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOwotICAgIGV4cGVjdFRyYW5zbGF0ZVgo
MywgY3VydmUtPmdldFZhbHVlKDAuNSkpOwotICAgIGV4cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUt
PmdldFZhbHVlKDEpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgy
KSk7CisgICAgSW50U2l6ZSBsYXllclNpemU7IC8vIGlnbm9yZWQKKyAgICBleHBlY3RUcmFuc2xh
dGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgtMSwgbGF5ZXJTaXplKSk7CisgICAgZXhwZWN0VHJhbnNs
YXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMCwgbGF5ZXJTaXplKSk7CisgICAgZXhwZWN0VHJhbnNs
YXRlWCgzLCBjdXJ2ZS0+Z2V0VmFsdWUoMC41LCBsYXllclNpemUpKTsKKyAgICBleHBlY3RUcmFu
c2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgxLCBsYXllclNpemUpKTsKKyAgICBleHBlY3RUcmFu
c2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgyLCBsYXllclNpemUpKTsKIH0KIAogLy8gVGVzdHMg
dGhhdCBhIHRyYW5zZm9ybSBhbmltYXRpb24gd2l0aCB0aHJlZSBrZXlmcmFtZXMgd29ya3MgYXMg
ZXhwZWN0ZWQuCiBURVNUKENDS2V5ZnJhbWVkQW5pbWF0aW9uQ3VydmVUZXN0LCBUaHJlZVRyYW5z
Zm9ybUtleWZyYW1lKQogewogICAgIE93blB0cjxDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlv
bkN1cnZlPiBjdXJ2ZShDQ0tleWZyYW1lZFRyYW5zZm9ybUFuaW1hdGlvbkN1cnZlOjpjcmVhdGUo
KSk7Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOwotICAg
IG9wZXJhdGlvbnMxLmFwcGVuZFRyYW5zbGF0ZSgyLCAwLCAwKTsKLSAgICBXZWJLaXQ6OldlYlRy
YW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7Ci0gICAgb3BlcmF0aW9uczIuYXBwZW5kVHJh
bnNsYXRlKDQsIDAsIDApOwotICAgIFdlYktpdDo6V2ViVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVy
YXRpb25zMzsKLSAgICBvcGVyYXRpb25zMy5hcHBlbmRUcmFuc2xhdGUoOCwgMCwgMCk7CisgICAg
VHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMTsKKyAgICBvcGVyYXRpb25zMS5vcGVyYXRp
b25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCgy
LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRF
X1gpKTsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlv
bnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVh
dGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9u
OjpUUkFOU0xBVEVfWCkpOworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczM7Cisg
ICAgb3BlcmF0aW9uczMub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVy
YXRpb246OmNyZWF0ZShMZW5ndGgoOCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zv
cm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7CiAgICAgY3VydmUtPmFkZEtleWZyYW1lKENDVHJh
bnNmb3JtS2V5ZnJhbWU6OmNyZWF0ZSgwLCBvcGVyYXRpb25zMSwgbnVsbHB0cikpOwogICAgIGN1
cnZlLT5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUoMSwgb3BlcmF0aW9u
czIsIG51bGxwdHIpKTsKICAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NUcmFuc2Zvcm1LZXlmcmFt
ZTo6Y3JlYXRlKDIsIG9wZXJhdGlvbnMzLCBudWxscHRyKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRl
WCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoLTEpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZl
LT5nZXRWYWx1ZSgwKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCgzLCBjdXJ2ZS0+Z2V0VmFsdWUo
MC41KSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMSkpOwotICAg
IGV4cGVjdFRyYW5zbGF0ZVgoNiwgY3VydmUtPmdldFZhbHVlKDEuNSkpOwotICAgIGV4cGVjdFRy
YW5zbGF0ZVgoOCwgY3VydmUtPmdldFZhbHVlKDIpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDgs
IGN1cnZlLT5nZXRWYWx1ZSgzKSk7CisgICAgSW50U2l6ZSBsYXllclNpemU7IC8vIGlnbm9yZWQK
KyAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgtMSwgbGF5ZXJTaXplKSk7
CisgICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMCwgbGF5ZXJTaXplKSk7
CisgICAgZXhwZWN0VHJhbnNsYXRlWCgzLCBjdXJ2ZS0+Z2V0VmFsdWUoMC41LCBsYXllclNpemUp
KTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRWYWx1ZSgxLCBsYXllclNpemUp
KTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDYsIGN1cnZlLT5nZXRWYWx1ZSgxLjUsIGxheWVyU2l6
ZSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoOCwgY3VydmUtPmdldFZhbHVlKDIsIGxheWVyU2l6
ZSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoOCwgY3VydmUtPmdldFZhbHVlKDMsIGxheWVyU2l6
ZSkpOwogfQogCiAvLyBUZXN0cyB0aGF0IGEgdHJhbnNmb3JtIGFuaW1hdGlvbiB3aXRoIG11bHRp
cGxlIGtleXMgYXQgYSBnaXZlbiB0aW1lIHdvcmtzIHNhbmVseS4KQEAgLTE3MCwzMCArMTcxLDMy
IEBAIFRFU1QoQ0NLZXlmcmFtZWRBbmltYXRpb25DdXJ2ZVRlc3QsIFJlcGVhdGVkVHJhbnNmb3Jt
S2V5VGltZXMpCiB7CiAgICAgT3duUHRyPENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3Vy
dmU+IGN1cnZlKENDS2V5ZnJhbWVkVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmU6OmNyZWF0ZSgpKTsK
ICAgICAvLyBBIHN0ZXAgZnVuY3Rpb24uCi0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRp
b25zIG9wZXJhdGlvbnMxOwotICAgIG9wZXJhdGlvbnMxLmFwcGVuZFRyYW5zbGF0ZSg0LCAwLCAw
KTsKLSAgICBXZWJLaXQ6OldlYlRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7Ci0gICAg
b3BlcmF0aW9uczIuYXBwZW5kVHJhbnNsYXRlKDQsIDAsIDApOwotICAgIFdlYktpdDo6V2ViVHJh
bnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMzsKLSAgICBvcGVyYXRpb25zMy5hcHBlbmRUcmFu
c2xhdGUoNiwgMCwgMCk7Ci0gICAgV2ViS2l0OjpXZWJUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJh
dGlvbnM0OwotICAgIG9wZXJhdGlvbnM0LmFwcGVuZFRyYW5zbGF0ZSg2LCAwLCAwKTsKKyAgICBU
cmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlv
bnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDQs
IEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVf
WCkpOworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczI7CisgICAgb3BlcmF0aW9u
czIub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0
ZShMZW5ndGgoNCwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246
OlRSQU5TTEFURV9YKSk7CisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMzsKKyAg
ICBvcGVyYXRpb25zMy5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKExlbmd0aCg2LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9y
bU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJh
dGlvbnM0OworICAgIG9wZXJhdGlvbnM0Lm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDYsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVk
KSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwogICAgIGN1cnZlLT5hZGRLZXlm
cmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUoMCwgb3BlcmF0aW9uczEsIG51bGxwdHIp
KTsKICAgICBjdXJ2ZS0+YWRkS2V5ZnJhbWUoQ0NUcmFuc2Zvcm1LZXlmcmFtZTo6Y3JlYXRlKDEs
IG9wZXJhdGlvbnMyLCBudWxscHRyKSk7CiAgICAgY3VydmUtPmFkZEtleWZyYW1lKENDVHJhbnNm
b3JtS2V5ZnJhbWU6OmNyZWF0ZSgxLCBvcGVyYXRpb25zMywgbnVsbHB0cikpOwogICAgIGN1cnZl
LT5hZGRLZXlmcmFtZShDQ1RyYW5zZm9ybUtleWZyYW1lOjpjcmVhdGUoMiwgb3BlcmF0aW9uczQs
IG51bGxwdHIpKTsKIAotICAgIGV4cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKC0x
KSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOwotICAgIGV4
cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKDAuNSkpOworICAgIEludFNpemUgbGF5
ZXJTaXplOyAvLyBpZ25vcmVkCisKKyAgICBleHBlY3RUcmFuc2xhdGVYKDQsIGN1cnZlLT5nZXRW
YWx1ZSgtMSwgbGF5ZXJTaXplKSk7CisgICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0
VmFsdWUoMCwgbGF5ZXJTaXplKSk7CisgICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0
VmFsdWUoMC41LCBsYXllclNpemUpKTsKIAogICAgIC8vIFRoZXJlIGlzIGEgZGlzY29udGludWl0
eSBhdCAxLiBBbnkgdmFsdWUgYmV0d2VlbiA0IGFuZCA2IGlzIHZhbGlkLgotICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHZhbHVlID0gY3VydmUtPmdldFZhbHVlKDEpOworICAgIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IHZhbHVlID0gY3VydmUtPmdldFZhbHVlKDEsIGxheWVyU2l6ZSk7CiAg
ICAgRVhQRUNUX1RSVUUodmFsdWUubTQxKCkgPj0gNCAmJiB2YWx1ZS5tNDEoKSA8PSA2KTsKIAot
ICAgIGV4cGVjdFRyYW5zbGF0ZVgoNiwgY3VydmUtPmdldFZhbHVlKDEuNSkpOwotICAgIGV4cGVj
dFRyYW5zbGF0ZVgoNiwgY3VydmUtPmdldFZhbHVlKDIpKTsKLSAgICBleHBlY3RUcmFuc2xhdGVY
KDYsIGN1cnZlLT5nZXRWYWx1ZSgzKSk7CisgICAgZXhwZWN0VHJhbnNsYXRlWCg2LCBjdXJ2ZS0+
Z2V0VmFsdWUoMS41LCBsYXllclNpemUpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDYsIGN1cnZl
LT5nZXRWYWx1ZSgyLCBsYXllclNpemUpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDYsIGN1cnZl
LT5nZXRWYWx1ZSgzLCBsYXllclNpemUpKTsKIH0KIAogLy8gVGVzdHMgdGhhdCB0aGUga2V5ZnJh
bWVzIG1heSBiZSBhZGRlZCBvdXQgb2Ygb3JkZXIuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdC5j
cHAKaW5kZXggNzIzNjEwOTJhZjIyODdlN2RmN2IyNTU2NjRjZjAyOTQxM2I4MmEwMS4uZGJlZDAy
Yzc0OWI5ZTdhZGUzM2E2NTVhZGFlNDZjYTI4YWVmYjAzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJUZXN0LmNwcApAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgIkNDQW5pbWF0aW9uVGVzdENv
bW1vbi5oIgogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXIuaCIKICNpbmNsdWRlICJMZW5ndGguaCIK
KyNpbmNsdWRlICJUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb24uaCIKICNpbmNsdWRlICJjYy9D
Q0FjdGl2ZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDQW5pbWF0aW9uQ3VydmUuaCIKIApA
QCAtNTMsNiArNTQsMTk3IEBAIFBhc3NPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGNyZWF0ZUFj
dGl2ZUFuaW1hdGlvbihQYXNzT3duUHRyPENDQW5pbWF0aW9uQ3VydmU+CiAgICAgcmV0dXJuIEND
QWN0aXZlQW5pbWF0aW9uOjpjcmVhdGUoY3VydmUsIDAsIGlkLCBwcm9wZXJ0eSk7CiB9CiAKK1RF
U1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBjcmVhdGVPcGFjaXR5QW5pbWF0aW9u
KQoreworICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7CisgICAg
T3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9sbGVyKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7CisgICAgY29uc3QgZG91YmxlIGR1cmF0
aW9uID0gMTsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQ
cm9wZXJ0eU9wYWNpdHkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFs
dWUoMCwgMCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IEZsb2F0QW5pbWF0aW9uVmFsdWUoZHVy
YXRpb24sIDEpKTsKKworICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlv
bjo6Y3JlYXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisKKyAg
ICBJbnRTaXplIGJveFNpemU7CisgICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHZhbHVlcywg
Ym94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAwLCAwLCAwKTsKKworICAgIEVYUEVDVF9UUlVFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKworICAgIENDQWN0aXZlQW5pbWF0aW9u
KiBhY3RpdmVBbmltYXRpb24gPSBjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NB
Y3RpdmVBbmltYXRpb246Ok9wYWNpdHkpOworICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlv
bik7CisKKyAgICBFWFBFQ1RfRVEoMSwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOwor
ICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSwgYWN0aXZlQW5pbWF0aW9u
LT50YXJnZXRQcm9wZXJ0eSgpKTsKKworICAgIEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZlOjpG
bG9hdCwgYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOworCisgICAgY29uc3QgQ0NG
bG9hdEFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dG9G
bG9hdEFuaW1hdGlvbkN1cnZlKCk7CisgICAgRVhQRUNUX1RSVUUoY3VydmUpOworCisgICAgRVhQ
RUNUX0VRKDAsIGN1cnZlLT5nZXRWYWx1ZSgwKSk7CisgICAgRVhQRUNUX0VRKDEsIGN1cnZlLT5n
ZXRWYWx1ZShkdXJhdGlvbikpOworfQorCitURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
VGVzdCwgY3JlYXRlVHJhbnNmb3JtQW5pbWF0aW9uKQoreworICAgIEZha2VMYXllckFuaW1hdGlv
bkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7CisgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250
cm9sbGVyPiBjb250cm9sbGVyKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1
bW15KSk7CisgICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMTsKKyAgICBXZWJDb3JlOjpLZXlm
cmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisK
KyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVu
Z3RoKDIsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFO
U0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVl
KDAsICZvcGVyYXRpb25zMSkpOworCisgICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25z
MjsKKyAgICBvcGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9y
bU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg0LCBGaXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRy
YW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBU
cmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7CisKKyAgICBS
ZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOworICAgIGFu
aW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOworCisgICAgSW50U2l6ZSBib3hTaXplOwor
ICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5n
ZXQoKSwgMCwgMCwgMCk7CisKKyAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVB
bmltYXRpb24oKSk7CisKKyAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0g
Y29udHJvbGxlci0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFu
c2Zvcm0pOworICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7CisKKyAgICBFWFBFQ1Rf
RVEoMSwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOworICAgIEVYUEVDVF9FUShDQ0Fj
dGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRhcmdldFByb3BlcnR5
KCkpOworCisgICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9ybSwgYWN0aXZl
QW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOworCisgICAgY29uc3QgQ0NUcmFuc2Zvcm1Bbmlt
YXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvVHJhbnNmb3Jt
QW5pbWF0aW9uQ3VydmUoKTsKKyAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7CisKKyAgICBleHBlY3RU
cmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwLCBib3hTaXplKSk7CisgICAgZXhwZWN0VHJh
bnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24sIGJveFNpemUpKTsKK30KKworVEVT
VChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIGNyZWF0ZVJldmVyc2VkQW5pbWF0aW9u
KQoreworICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXk7CisgICAg
T3duUHRyPENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyPiBjb250cm9sbGVyKENDTGF5ZXJBbmlt
YXRpb25Db250cm9sbGVyOjpjcmVhdGUoJmR1bW15KSk7CisgICAgY29uc3QgZG91YmxlIGR1cmF0
aW9uID0gMTsKKyAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQ
cm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJh
dGlvbnMxOworICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJh
bnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVk
KSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQo
bmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOworCisgICAgVHJh
bnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKKyAgICBvcGVyYXRpb25zMi5vcGVyYXRpb25z
KCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg0LCBG
aXhlZCksIExlbmd0aCgwLCBGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gp
KTsKKyAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlv
biwgJm9wZXJhdGlvbnMyKSk7CisKKyAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBB
bmltYXRpb246OmNyZWF0ZSgpOworICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24p
OworICAgIGFuaW1hdGlvbi0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0
aW9uUmV2ZXJzZSk7CisKKyAgICBJbnRTaXplIGJveFNpemU7CisgICAgY29udHJvbGxlci0+YWRk
QW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAwLCAwLCAwKTsKKwor
ICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKworICAg
IENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBjb250cm9sbGVyLT5nZXRBY3Rp
dmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7CisgICAgRVhQRUNU
X1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKKworICAgIEVYUEVDVF9FUSgxLCBhY3RpdmVBbmltYXRp
b24tPml0ZXJhdGlvbnMoKSk7CisgICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFu
c2Zvcm0sIGFjdGl2ZUFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVydHkoKSk7CisKKyAgICBFWFBFQ1Rf
RVEoQ0NBbmltYXRpb25DdXJ2ZTo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCkt
PnR5cGUoKSk7CisKKyAgICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKiBjdXJ2ZSA9
IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSgpOwor
ICAgIEVYUEVDVF9UUlVFKGN1cnZlKTsKKworICAgIGV4cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUt
PmdldFZhbHVlKDAsIGJveFNpemUpKTsKKyAgICBleHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5n
ZXRWYWx1ZShkdXJhdGlvbiwgYm94U2l6ZSkpOworfQorCitURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyVGVzdCwgY3JlYXRlQWx0ZXJuYXRpbmdBbmltYXRpb24pCit7CisgICAgRmFrZUxh
eWVyQW5pbWF0aW9uQ29udHJvbGxlckNsaWVudCBkdW1teTsKKyAgICBPd25QdHI8Q0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXI+IGNvbnRyb2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6
OmNyZWF0ZSgmZHVtbXkpKTsKKyAgICBjb25zdCBkb3VibGUgZHVyYXRpb24gPSAxOworICAgIFdl
YkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJh
bnNmb3JtKTsKKworICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3Bl
cmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246
OmNyZWF0ZShMZW5ndGgoMiwgRml4ZWQpLCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVy
YXRpb246OlRSQU5TTEFURV9YKSk7CisgICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5p
bWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25z
IG9wZXJhdGlvbnMyOworICAgIG9wZXJhdGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNs
YXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAs
IEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5p
bnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIp
KTsKKworICAgIFJlZlB0cjxBbmltYXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRl
KCk7CisgICAgYW5pbWF0aW9uLT5zZXREdXJhdGlvbihkdXJhdGlvbik7CisgICAgYW5pbWF0aW9u
LT5zZXREaXJlY3Rpb24oQW5pbWF0aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGUpOwor
ICAgIGFuaW1hdGlvbi0+c2V0SXRlcmF0aW9uQ291bnQoMik7CisKKyAgICBJbnRTaXplIGJveFNp
emU7CisgICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0
aW9uLmdldCgpLCAwLCAwLCAwKTsKKworICAgIEVYUEVDVF9UUlVFKGNvbnRyb2xsZXItPmhhc0Fj
dGl2ZUFuaW1hdGlvbigpKTsKKworICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmltYXRp
b24gPSBjb250cm9sbGVyLT5nZXRBY3RpdmVBbmltYXRpb24oMCwgQ0NBY3RpdmVBbmltYXRpb246
OlRyYW5zZm9ybSk7CisgICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKKyAgICBFWFBF
Q1RfVFJVRShhY3RpdmVBbmltYXRpb24tPmFsdGVybmF0ZXNEaXJlY3Rpb24oKSk7CisKKyAgICBF
WFBFQ1RfRVEoMiwgYWN0aXZlQW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOworICAgIEVYUEVDVF9F
UShDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRhcmdldFBy
b3BlcnR5KCkpOworCisgICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9ybSwg
YWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50eXBlKCkpOworCisgICAgY29uc3QgQ0NUcmFuc2Zv
cm1BbmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvVHJh
bnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKKyAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7CisKKyAgICBl
eHBlY3RUcmFuc2xhdGVYKDIsIGN1cnZlLT5nZXRWYWx1ZSgwLCBib3hTaXplKSk7CisgICAgZXhw
ZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoZHVyYXRpb24sIGJveFNpemUpKTsKK30K
KworVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIGNyZWF0ZVJldmVyc2VkQWx0
ZXJuYXRpbmdBbmltYXRpb24pCit7CisgICAgRmFrZUxheWVyQW5pbWF0aW9uQ29udHJvbGxlckNs
aWVudCBkdW1teTsKKyAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI+IGNvbnRy
b2xsZXIoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKKyAgICBj
b25zdCBkb3VibGUgZHVyYXRpb24gPSAxOworICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0
IHZhbHVlcyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKKworICAgIFRyYW5zZm9y
bU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7CisgICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFw
cGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgoMiwgRml4ZWQp
LCBMZW5ndGgoMCwgRml4ZWQpLCBUcmFuc2Zvcm1PcGVyYXRpb246OlRSQU5TTEFURV9YKSk7Cisg
ICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlv
bnMxKSk7CisKKyAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMyOworICAgIG9wZXJh
dGlvbnMyLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpj
cmVhdGUoTGVuZ3RoKDQsIEZpeGVkKSwgTGVuZ3RoKDAsIEZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0
aW9uOjpUUkFOU0xBVEVfWCkpOworICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1h
dGlvblZhbHVlKGR1cmF0aW9uLCAmb3BlcmF0aW9uczIpKTsKKworICAgIFJlZlB0cjxBbmltYXRp
b24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7CisgICAgYW5pbWF0aW9uLT5zZXRE
dXJhdGlvbihkdXJhdGlvbik7CisgICAgYW5pbWF0aW9uLT5zZXREaXJlY3Rpb24oQW5pbWF0aW9u
OjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKTsKKyAgICBhbmltYXRpb24tPnNl
dEl0ZXJhdGlvbkNvdW50KDIpOworCisgICAgSW50U2l6ZSBib3hTaXplOworICAgIGNvbnRyb2xs
ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwgMCwgMCwg
MCk7CisKKyAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CisKKyAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0gY29udHJvbGxlci0+
Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pOworICAg
IEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7CisgICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5p
bWF0aW9uLT5hbHRlcm5hdGVzRGlyZWN0aW9uKCkpOworCisgICAgRVhQRUNUX0VRKDIsIGFjdGl2
ZUFuaW1hdGlvbi0+aXRlcmF0aW9ucygpKTsKKyAgICBFWFBFQ1RfRVEoQ0NBY3RpdmVBbmltYXRp
b246OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT50YXJnZXRQcm9wZXJ0eSgpKTsKKworICAg
IEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZlOjpUcmFuc2Zvcm0sIGFjdGl2ZUFuaW1hdGlvbi0+
Y3VydmUoKS0+dHlwZSgpKTsKKworICAgIGNvbnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUq
IGN1cnZlID0gYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50b1RyYW5zZm9ybUFuaW1hdGlvbkN1
cnZlKCk7CisgICAgRVhQRUNUX1RSVUUoY3VydmUpOworCisgICAgZXhwZWN0VHJhbnNsYXRlWCg0
LCBjdXJ2ZS0+Z2V0VmFsdWUoMCwgYm94U2l6ZSkpOworICAgIGV4cGVjdFRyYW5zbGF0ZVgoMiwg
Y3VydmUtPmdldFZhbHVlKGR1cmF0aW9uLCBib3hTaXplKSk7Cit9CisKIFRFU1QoQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBzeW5jTmV3QW5pbWF0aW9uKQogewogICAgIEZha2VMYXll
ckFuaW1hdGlvbkNvbnRyb2xsZXJDbGllbnQgZHVtbXlJbXBsOwpAQCAtMTQxLDYgKzMzMyw3IEBA
IFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBzeW5jUGF1c2VBbmRSZXN1bWUp
CiAgICAgRVhQRUNUX0VRKENDQWN0aXZlQW5pbWF0aW9uOjpSdW5uaW5nLCBjb250cm9sbGVySW1w
bC0+Z2V0QWN0aXZlQW5pbWF0aW9uKDAsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KS0+cnVu
U3RhdGUoKSk7CiB9CiAKKwogVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIGRv
Tm90U3luY0ZpbmlzaGVkQW5pbWF0aW9uKQogewogICAgIEZha2VMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJDbGllbnQgZHVtbXlJbXBsOwpAQCAtMTgyLDcgKzM3NSw3IEBAIFRFU1QoQ0NMYXllckFu
aW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBUcml2aWFsVHJhbnNpdGlvbikKIAogICAgIE93blB0cjxD
Q0FjdGl2ZUFuaW1hdGlvbj4gdG9BZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5l
dyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9w
YWNpdHkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih0b0FkZC5yZWxlYXNlKCkp
OworICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogICAgIGNvbnRyb2xsZXIt
PmFuaW1hdGUoMCwgZXZlbnRzLmdldCgpKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5o
YXNBY3RpdmVBbmltYXRpb24oKSk7CiAgICAgRVhQRUNUX0VRKDAsIGR1bW15Lm9wYWNpdHkoKSk7
CkBAIC0yMDMsNyArMzk2LDcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3Qs
IEFuaW1hdGlvbnNXYWl0aW5nRm9yU3RhcnRUaW1lRG9Ob3RGaW5pc2hJZlQKICAgICB0b0FkZC0+
c2V0TmVlZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUodHJ1ZSk7CiAKICAgICAvLyBXZSBzaG91bGQg
cGF1c2UgYXQgdGhlIGZpcnN0IGtleWZyYW1lIGluZGVmaW5pdGVseSB3YWl0aW5nIGZvciB0aGF0
IGFuaW1hdGlvbiB0byBzdGFydC4KLSAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24odG9BZGQu
cmVsZWFzZSgpKTsKKyAgICBjb250cm9sbGVyLT5hZGQodG9BZGQucmVsZWFzZSgpKTsKICAgICBj
b250cm9sbGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUoY29u
dHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5v
cGFjaXR5KCkpOwpAQCAtMjI5LDggKzQyMiw4IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRy
b2xsZXJUZXN0LCBUcml2aWFsUXVldWluZykKICAgICBPd25QdHI8Q0NMYXllckFuaW1hdGlvbkNv
bnRyb2xsZXI+IGNvbnRyb2xsZXIoCiAgICAgICAgIENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVy
OjpjcmVhdGUoJmR1bW15KSk7CiAKLSAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24oY3JlYXRl
QWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEp
KSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKLSAgICBjb250cm9sbGVyLT5hZGRB
bmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFu
c2l0aW9uKDEsIDEsIDAuNSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAg
IGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VG
bG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkp
OworICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3
IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMSwgMC41KSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpP
cGFjaXR5KSk7CiAKICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQoKSk7CiAg
ICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwpAQCAtMjUw
LDE0ICs0NDMsMTQgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIEludGVy
cnVwdCkKICAgICBGYWtlTGF5ZXJBbmltYXRpb25Db250cm9sbGVyQ2xpZW50IGR1bW15OwogICAg
IE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gY29udHJvbGxlcigKICAgICAgICAg
Q0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKLSAgICBjb250cm9s
bGVyLT5hZGRBbmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtl
RmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkp
KTsKKyAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5l
dyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246Ok9w
YWNpdHkpKTsKICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQoKSk7CiAgICAg
RVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwogICAgIEVYUEVD
VF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwogCiAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9u
PiB0b0FkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5z
aXRpb24oMSwgMSwgMC41KSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAg
dG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9yTmV4dFRpY2ss
IDApOwotICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih0b0FkZC5yZWxlYXNlKCkpOworICAg
IGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCiAgICAgLy8gU2luY2UgdGhlIGFu
aW1hdGlvbiB3YXMgaW4gdGhlIFdhaXRpbmdGb3JOZXh0VGljayBzdGF0ZSwgaXQgc2hvdWxkIHN0
YXJ0IHJpZ2h0IGluCiAgICAgLy8gdGhpcyBjYWxsIHRvIGFuaW1hdGUuCkBAIC0yNzcsOSArNDcw
LDkgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3QsIFNjaGVkdWxlVG9nZXRo
ZXJXaGVuQVByb3BlcnR5SXNCbG9ja2VkKQogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29u
dHJvbGxlcj4gY29udHJvbGxlcigKICAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6
OmNyZWF0ZSgmZHVtbXkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVB
Y3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKDEpKSwg
MSwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkpOwotICAgIGNvbnRyb2xsZXItPmFkZEFu
aW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VUcmFuc2Zvcm1U
cmFuc2l0aW9uKDEpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkpOwotICAgIGNv
bnRyb2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3
IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3Bh
Y2l0eSkpOworICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQ
dHIobmV3IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKDEpKSwgMSwgQ0NBY3RpdmVBbmltYXRpb246
OlRyYW5zZm9ybSkpOworICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24o
YWRvcHRQdHIobmV3IEZha2VUcmFuc2Zvcm1UcmFuc2l0aW9uKDEpKSwgMiwgQ0NBY3RpdmVBbmlt
YXRpb246OlRyYW5zZm9ybSkpOworICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmlt
YXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMCwgMSkpLCAyLCBDQ0Fj
dGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCBl
dmVudHMuZ2V0KCkpOwogICAgIEVYUEVDVF9FUSgwLCBkdW1teS5vcGFjaXR5KCkpOwpAQCAtMzA0
LDkgKzQ5Nyw5IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXJUZXN0LCBTY2hlZHVs
ZVRvZ2V0aGVyV2l0aEFuQW5pbVdhaXRpbmcpCiAgICAgT3duUHRyPENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyPiBjb250cm9sbGVyKAogICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cjo6Y3JlYXRlKCZkdW1teSkpOwogCi0gICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKGNyZWF0
ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZVRyYW5zZm9ybVRyYW5zaXRpb24oMikp
LCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtKSk7Ci0gICAgY29udHJvbGxlci0+YWRk
QW5pbWF0aW9uKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJh
bnNpdGlvbigxLCAwLCAxKSksIDEsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7Ci0gICAg
Y29udHJvbGxlci0+YWRkQW5pbWF0aW9uKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihu
ZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAxLCAwLjUpKSwgMiwgQ0NBY3RpdmVBbmltYXRpb246
Ok9wYWNpdHkpKTsKKyAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFk
b3B0UHRyKG5ldyBGYWtlVHJhbnNmb3JtVHJhbnNpdGlvbigyKSksIDEsIENDQWN0aXZlQW5pbWF0
aW9uOjpUcmFuc2Zvcm0pKTsKKyAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZlQW5pbWF0
aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDAsIDEpKSwgMSwgQ0NBY3Rp
dmVBbmltYXRpb246Ok9wYWNpdHkpKTsKKyAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZl
QW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAuNSkpLCAy
LCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgLy8gQW5pbWF0aW9ucyB3aXRo
IGlkIDEgc2hvdWxkIGJvdGggc3RhcnQgbm93LgogICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwg
ZXZlbnRzLmdldCgpKTsKQEAgLTMzNyw3ICs1MzAsNyBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25D
b250cm9sbGVyVGVzdCwgU2NoZWR1bGVBbmltYXRpb24pCiAgICAgT3duUHRyPENDQWN0aXZlQW5p
bWF0aW9uPiB0b0FkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9h
dFRyYW5zaXRpb24oMSwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwog
ICAgIHRvQWRkLT5zZXRSdW5TdGF0ZShDQ0FjdGl2ZUFuaW1hdGlvbjo6V2FpdGluZ0ZvclN0YXJ0
VGltZSwgMCk7CiAgICAgdG9BZGQtPnNldFN0YXJ0VGltZSgxKTsKLSAgICBjb250cm9sbGVyLT5h
ZGRBbmltYXRpb24odG9BZGQucmVsZWFzZSgpKTsKKyAgICBjb250cm9sbGVyLT5hZGQodG9BZGQu
cmVsZWFzZSgpKTsKIAogICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgZXZlbnRzLmdldCgpKTsK
ICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CkBAIC0z
NTgsMTIgKzU1MSwxMiBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgU2No
ZWR1bGVkQW5pbWF0aW9uSW50ZXJydXB0c1J1bm5pbmdBbmltYXRpbwogICAgIE93blB0cjxDQ0xh
eWVyQW5pbWF0aW9uQ29udHJvbGxlcj4gY29udHJvbGxlcigKICAgICAgICAgQ0NMYXllckFuaW1h
dGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVtbXkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFkZEFu
aW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5z
aXRpb24oMiwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNv
bnRyb2xsZXItPmFkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9h
dFRyYW5zaXRpb24oMiwgMCwgMSkpLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwog
CiAgICAgT3duUHRyPENDQWN0aXZlQW5pbWF0aW9uPiB0b0FkZChjcmVhdGVBY3RpdmVBbmltYXRp
b24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMSwgMC41LCAwKSksIDIsIENDQWN0
aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZl
QW5pbWF0aW9uOjpXYWl0aW5nRm9yU3RhcnRUaW1lLCAwKTsKICAgICB0b0FkZC0+c2V0U3RhcnRU
aW1lKDEpOwotICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbih0b0FkZC5yZWxlYXNlKCkpOwor
ICAgIGNvbnRyb2xsZXItPmFkZCh0b0FkZC5yZWxlYXNlKCkpOwogCiAgICAgLy8gRmlyc3QgMnMg
b3BhY2l0eSB0cmFuc2l0aW9uIHNob3VsZCBzdGFydCBpbW1lZGlhdGVseS4KICAgICBjb250cm9s
bGVyLT5hbmltYXRlKDAsIGV2ZW50cy5nZXQoKSk7CkBAIC0zODksMTQgKzU4MiwxNCBAQCBURVNU
KENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgU2NoZWR1bGVkQW5pbWF0aW9uSW50ZXJy
dXB0c1J1bm5pbmdBbmltYXRpbwogICAgIE93blB0cjxDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxl
cj4gY29udHJvbGxlcigKICAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0
ZSgmZHVtbXkpKTsKIAotICAgIGNvbnRyb2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVB
bmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMiwgMCwgMSkpLCAxLCBD
Q0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNvbnRyb2xsZXItPmFkZChjcmVhdGVB
Y3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24oMiwgMCwgMSkp
LCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgT3duUHRyPENDQWN0aXZl
QW5pbWF0aW9uPiB0b0FkZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VG
bG9hdFRyYW5zaXRpb24oMiwgMC41LCAwKSksIDIsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5
KSk7CiAgICAgdG9BZGQtPnNldFJ1blN0YXRlKENDQWN0aXZlQW5pbWF0aW9uOjpXYWl0aW5nRm9y
U3RhcnRUaW1lLCAwKTsKICAgICB0b0FkZC0+c2V0U3RhcnRUaW1lKDEpOwotICAgIGNvbnRyb2xs
ZXItPmFkZEFuaW1hdGlvbih0b0FkZC5yZWxlYXNlKCkpOworICAgIGNvbnRyb2xsZXItPmFkZCh0
b0FkZC5yZWxlYXNlKCkpOwogCi0gICAgY29udHJvbGxlci0+YWRkQW5pbWF0aW9uKGNyZWF0ZUFj
dGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAwLjc1
KSksIDMsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CisgICAgY29udHJvbGxlci0+YWRk
KGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigx
LCAwLCAwLjc1KSksIDMsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAKICAgICAvLyBG
aXJzdCAycyBvcGFjaXR5IHRyYW5zaXRpb24gc2hvdWxkIHN0YXJ0IGltbWVkaWF0ZWx5LgogICAg
IGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgZXZlbnRzLmdldCgpKTsKQEAgLTQyNyw3ICs2MjAsNyBA
QCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgVHJpdmlhbExvb3BpbmcpCiAK
ICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlv
bihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIDEsIENDQWN0aXZl
QW5pbWF0aW9uOjpPcGFjaXR5KSk7CiAgICAgdG9BZGQtPnNldEl0ZXJhdGlvbnMoMyk7Ci0gICAg
Y29udHJvbGxlci0+YWRkQW5pbWF0aW9uKHRvQWRkLnJlbGVhc2UoKSk7CisgICAgY29udHJvbGxl
ci0+YWRkKHRvQWRkLnJlbGVhc2UoKSk7CiAKICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIGV2
ZW50cy5nZXQoKSk7CiAgICAgRVhQRUNUX1RSVUUoY29udHJvbGxlci0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwpAQCAtNDY0LDcgKzY1Nyw3IEBAIFRFU1QoQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xs
ZXJUZXN0LCBJbmZpbml0ZUxvb3BpbmcpCiAgICAgY29uc3QgaW50IGlkID0gMTsKICAgICBPd25Q
dHI8Q0NBY3RpdmVBbmltYXRpb24+IHRvQWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0
cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlv
bjo6T3BhY2l0eSkpOwogICAgIHRvQWRkLT5zZXRJdGVyYXRpb25zKC0xKTsKLSAgICBjb250cm9s
bGVyLT5hZGRBbmltYXRpb24odG9BZGQucmVsZWFzZSgpKTsKKyAgICBjb250cm9sbGVyLT5hZGQo
dG9BZGQucmVsZWFzZSgpKTsKIAogICAgIGNvbnRyb2xsZXItPmFuaW1hdGUoMCwgZXZlbnRzLmdl
dCgpKTsKICAgICBFWFBFQ1RfVFJVRShjb250cm9sbGVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
CkBAIC00OTgsNyArNjkxLDcgQEAgVEVTVChDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlclRlc3Qs
IFBhdXNlUmVzdW1lKQogICAgICAgICBDQ0xheWVyQW5pbWF0aW9uQ29udHJvbGxlcjo6Y3JlYXRl
KCZkdW1teSkpOwogCiAgICAgY29uc3QgaW50IGlkID0gMTsKLSAgICBjb250cm9sbGVyLT5hZGRB
bmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFu
c2l0aW9uKDEsIDAsIDEpKSwgaWQsIENDQWN0aXZlQW5pbWF0aW9uOjpPcGFjaXR5KSk7CisgICAg
Y29udHJvbGxlci0+YWRkKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZs
b2F0VHJhbnNpdGlvbigxLCAwLCAxKSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkp
OwogCiAgICAgY29udHJvbGxlci0+YW5pbWF0ZSgwLCBldmVudHMuZ2V0KCkpOwogICAgIEVYUEVD
VF9UUlVFKGNvbnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKQEAgLTUzMyw5ICs3MjYs
OSBAQCBURVNUKENDTGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgQWJvcnRBR3JvdXBlZEFu
aW1hdGlvbikKICAgICAgICAgQ0NMYXllckFuaW1hdGlvbkNvbnRyb2xsZXI6OmNyZWF0ZSgmZHVt
bXkpKTsKIAogICAgIGNvbnN0IGludCBpZCA9IDE7Ci0gICAgY29udHJvbGxlci0+YWRkQW5pbWF0
aW9uKGNyZWF0ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZVRyYW5zZm9ybVRyYW5z
aXRpb24oMSkpLCBpZCwgQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSkpOwotICAgIGNvbnRy
b2xsZXItPmFkZEFuaW1hdGlvbihjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZh
a2VGbG9hdFRyYW5zaXRpb24oMiwgMCwgMSkpLCBpZCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNp
dHkpKTsKLSAgICBjb250cm9sbGVyLT5hZGRBbmltYXRpb24oY3JlYXRlQWN0aXZlQW5pbWF0aW9u
KGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDEsIDEsIDAuNzUpKSwgMiwgQ0NBY3Rp
dmVBbmltYXRpb246Ok9wYWNpdHkpKTsKKyAgICBjb250cm9sbGVyLT5hZGQoY3JlYXRlQWN0aXZl
QW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlVHJhbnNmb3JtVHJhbnNpdGlvbigxKSksIGlkLCBD
Q0FjdGl2ZUFuaW1hdGlvbjo6VHJhbnNmb3JtKSk7CisgICAgY29udHJvbGxlci0+YWRkKGNyZWF0
ZUFjdGl2ZUFuaW1hdGlvbihhZG9wdFB0cihuZXcgRmFrZUZsb2F0VHJhbnNpdGlvbigyLCAwLCAx
KSksIGlkLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOworICAgIGNvbnRyb2xsZXItPmFk
ZChjcmVhdGVBY3RpdmVBbmltYXRpb24oYWRvcHRQdHIobmV3IEZha2VGbG9hdFRyYW5zaXRpb24o
MSwgMSwgMC43NSkpLCAyLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwogCiAgICAgY29u
dHJvbGxlci0+YW5pbWF0ZSgwLCBldmVudHMuZ2V0KCkpOwogICAgIEVYUEVDVF9UUlVFKGNvbnRy
b2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKQEAgLTU2NSw3ICs3NTgsNyBAQCBURVNUKEND
TGF5ZXJBbmltYXRpb25Db250cm9sbGVyVGVzdCwgRm9yY2VTeW5jV2hlblN5bmNocm9uaXplZFN0
YXJ0VGltZU5lZWRlZCkKIAogICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gdG9BZGQoY3Jl
YXRlQWN0aXZlQW5pbWF0aW9uKGFkb3B0UHRyKG5ldyBGYWtlRmxvYXRUcmFuc2l0aW9uKDIsIDAs
IDEpKSwgMCwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKICAgICB0b0FkZC0+c2V0TmVl
ZHNTeW5jaHJvbml6ZWRTdGFydFRpbWUodHJ1ZSk7Ci0gICAgY29udHJvbGxlci0+YWRkQW5pbWF0
aW9uKHRvQWRkLnJlbGVhc2UoKSk7CisgICAgY29udHJvbGxlci0+YWRkKHRvQWRkLnJlbGVhc2Uo
KSk7CiAKICAgICBjb250cm9sbGVyLT5hbmltYXRlKDAsIDApOwogICAgIEVYUEVDVF9UUlVFKGNv
bnRyb2xsZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdFRlc3QuY3BwCmluZGV4IGQxM2Q2ZjdkNThj
ZTlmMWNhMzUzM2RiYWQ4ZDJkNjU5YjUxZGJjMGUuLmI5OTYwMDZhZTI4OTFiOGExODM2MjdkZjVk
OWEzYjkyNGZjMzBmMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0VGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcApAQCAtMjk1Miw3ICsyOTUyLDcgQEAgcHVibGljOgog
ICAgICAgICAvLyBBbnkgdmFsaWQgQ0NBbmltYXRpb25DdXJ2ZSB3aWxsIGRvIGhlcmUuCiAgICAg
ICAgIE93blB0cjxDQ0FuaW1hdGlvbkN1cnZlPiBjdXJ2ZShDQ0Vhc2VUaW1pbmdGdW5jdGlvbjo6
Y3JlYXRlKCkpOwogICAgICAgICBPd25QdHI8Q0NBY3RpdmVBbmltYXRpb24+IGFuaW1hdGlvbihD
Q0FjdGl2ZUFuaW1hdGlvbjo6Y3JlYXRlKGN1cnZlLnJlbGVhc2UoKSwgQW5pbWF0aW9uSWRWZW5k
b3I6OmdldE5leHRBbmltYXRpb25JZCgpLCBBbmltYXRpb25JZFZlbmRvcjo6Z2V0TmV4dEdyb3Vw
SWQoKSwgQ0NBY3RpdmVBbmltYXRpb246Ok9wYWNpdHkpKTsKLSAgICAgICAgbGF5ZXItPmxheWVy
QW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGRBbmltYXRpb24oYW5pbWF0aW9uLnJlbGVhc2UoKSk7
CisgICAgICAgIGxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+YWRkKGFuaW1hdGlv
bi5yZWxlYXNlKCkpOwogCiAgICAgICAgIC8vIFdlIGFkZCB0aGUgYW5pbWF0aW9uICpiZWZvcmUq
IGF0dGFjaGluZyB0aGUgbGF5ZXIgdG8gdGhlIHRyZWUuCiAgICAgICAgIG1fbGF5ZXJUcmVlSG9z
dC0+cm9vdExheWVyKCktPmFkZENoaWxkKGxheWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL0dyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QuY3BwCmluZGV4
IDcyOGQwYTUxZDBjYjczNjlkZTMzMmZkODBjMDY0NjhlYjdiMWU5YmQuLmI3YWE4NTc0NjVjYmFj
MThjNDgyYWVkNWQ5NzMyMzI2NTE0ZGE2YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvR3JhcGhpY3NMYXllckNocm9taXVtVGVzdC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9HcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LmNwcApAQCAtMjcs
Mzc5ICsyNyw1NiBAQAogI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgogCiAjaW5j
bHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiQ29tcG9zaXRvckZha2VH
cmFwaGljc0NvbnRleHQzRC5oIgotI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNELmgiCi0jaW5j
bHVkZSAiR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NMYXll
ci5oIgogI2luY2x1ZGUgIkxheWVyQ2hyb21pdW0uaCIKLSNpbmNsdWRlICJNYXRyaXgzRFRyYW5z
Zm9ybU9wZXJhdGlvbi5oIgotI2luY2x1ZGUgIlJvdGF0ZVRyYW5zZm9ybU9wZXJhdGlvbi5oIgot
I2luY2x1ZGUgIkxlbmd0aC5oIgotI2luY2x1ZGUgIlRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlv
bi5oIgotI2luY2x1ZGUgIldlYkNvbXBvc2l0b3IuaCIKLQotI2luY2x1ZGUgImNjL0NDTGF5ZXJU
cmVlSG9zdC5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCIKLSNpbmNsdWRl
ICJjYy9DQ1NpbmdsZVRocmVhZFByb3h5LmgiCi0KICNpbmNsdWRlIDxndGVzdC9ndGVzdC5oPgot
Ci0jaW5jbHVkZSA8cHVibGljL1dlYlRyYW5zZm9ybWF0aW9uTWF0cml4Lmg+Ci0KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLXVzaW5nIG5h
bWVzcGFjZSBXZWJLaXQ7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0VGVzdHM7CiAKIG5hbWVzcGFj
ZSB7CiAKIGNsYXNzIE1vY2tHcmFwaGljc0xheWVyQ2xpZW50IDogcHVibGljIEdyYXBoaWNzTGF5
ZXJDbGllbnQgewogICBwdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFuaW1hdGlvblN0
YXJ0ZWQoY29uc3QgR3JhcGhpY3NMYXllciosIGRvdWJsZSB0aW1lKSBPVkVSUklERSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgbm90aWZ5U3luY1JlcXVpcmVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBP
VkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRDb250ZW50cyhjb25zdCBHcmFwaGlj
c0xheWVyKiwgR3JhcGhpY3NDb250ZXh0JiwgR3JhcGhpY3NMYXllclBhaW50aW5nUGhhc2UsIGNv
bnN0IEludFJlY3QmIGluQ2xpcCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCBib29sIHNob3dE
ZWJ1Z0JvcmRlcnMoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJu
IGZhbHNlOyB9Ci0gICAgdmlydHVhbCBib29sIHNob3dSZXBhaW50Q291bnRlcihjb25zdCBHcmFw
aGljc0xheWVyKikgY29uc3QgT1ZFUlJJREUgeyByZXR1cm4gZmFsc2U7IH0KLX07Ci0KLWNsYXNz
IE1vY2tMYXllclRyZWVIb3N0Q2xpZW50IDogcHVibGljIENDTGF5ZXJUcmVlSG9zdENsaWVudCB7
Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxCZWdpbkZyYW1lKCkgT1ZFUlJJREUgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZEJlZ2luRnJhbWUoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlQW5pbWF0aW9ucyhkb3VibGUgZnJhbWVCZWdpblRpbWUpIE9WRVJSSURF
IHsgfQotICAgIHZpcnR1YWwgdm9pZCBsYXlvdXQoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFs
IHZvaWQgYXBwbHlTY3JvbGxBbmRTY2FsZShjb25zdCBJbnRTaXplJiBzY3JvbGxEZWx0YSwgZmxv
YXQgcGFnZVNjYWxlKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8R3JhcGhp
Y3NDb250ZXh0M0Q+IGNyZWF0ZUNvbnRleHQoKSBPVkVSUklERQotICAgIHsKLSAgICAgICAgR3Jh
cGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7Ci0gICAgICAgIHJldHVybiBjcmVhdGVD
b21wb3NpdG9yTW9ja0dyYXBoaWNzQ29udGV4dDNEKGF0dHJzKTsKLSAgICB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFJlY3JlYXRlQ29udGV4dChib29sIHN1Y2Nlc3MpIE9WRVJSSURFIHsgfQotICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ29tbWl0KCkgT1ZFUlJJREUgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IGRpZENvbW1pdCgpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBkaWRDb21taXRBbmRE
cmF3RnJhbWUoKSBPVkVSUklERSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tcGxldGVTd2Fw
QnVmZmVycygpIE9WRVJSSURFIHsgfQotICAgIHZpcnR1YWwgdm9pZCBzY2hlZHVsZUNvbXBvc2l0
ZSgpIE9WRVJSSURFIHsgfQotfTsKLQotY2xhc3MgTW9ja0xheWVyVHJlZUhvc3QgOiBwdWJsaWMg
Q0NMYXllclRyZWVIb3N0IHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0cjxNb2NrTGF5
ZXJUcmVlSG9zdD4gY3JlYXRlKCkKLSAgICB7Ci0gICAgICAgIC8vIEZvciB0aGVzZSB0ZXN0cywg
d2Ugd2lsbCBlbmFibGUgdGhyZWFkZWQgYW5pbWF0aW9ucy4KLSAgICAgICAgQ0NTZXR0aW5ncyBz
ZXR0aW5nczsKLSAgICAgICAgc2V0dGluZ3MudGhyZWFkZWRBbmltYXRpb25FbmFibGVkID0gdHJ1
ZTsKLSAgICAgICAgT3duUHRyPE1vY2tMYXllclRyZWVIb3N0PiBsYXllclRyZWVIb3N0KGFkb3B0
UHRyKG5ldyBNb2NrTGF5ZXJUcmVlSG9zdChuZXcgTW9ja0xheWVyVHJlZUhvc3RDbGllbnQoKSwg
c2V0dGluZ3MpKSk7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IGxheWVyVHJlZUhvc3QtPmluaXRp
YWxpemUoKTsKLSAgICAgICAgRVhQRUNUX1RSVUUoc3VjY2Vzcyk7Ci0gICAgICAgIGxheWVyVHJl
ZUhvc3QtPnNldFJvb3RMYXllcihMYXllckNocm9taXVtOjpjcmVhdGUoKSk7Ci0gICAgICAgIGxh
eWVyVHJlZUhvc3QtPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKDEsIDEpKTsKLSAgICAgICAgcmV0
dXJuIGxheWVyVHJlZUhvc3QucmVsZWFzZSgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgUGFzc093
blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBjcmVhdGVMYXllclRyZWVIb3N0SW1wbChDQ0xheWVy
VHJlZUhvc3RJbXBsQ2xpZW50KiBjbGllbnQpCi0gICAgewotICAgICAgICAvLyBGb3IgdGhlc2Ug
dGVzdHMsIHdlIHdpbGwgZW5hYmxlIHRocmVhZGVkIGFuaW1hdGlvbnMuCi0gICAgICAgIENDU2V0
dGluZ3MgY29weVNldHRpbmdzID0gc2V0dGluZ3MoKTsKLSAgICAgICAgY29weVNldHRpbmdzLnRo
cmVhZGVkQW5pbWF0aW9uRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybiBDQ0xheWVyVHJl
ZUhvc3RJbXBsOjpjcmVhdGUoY29weVNldHRpbmdzLCBjbGllbnQpOwotICAgIH0KLQotcHJpdmF0
ZToKLSAgICBNb2NrTGF5ZXJUcmVlSG9zdChDQ0xheWVyVHJlZUhvc3RDbGllbnQqIGNsaWVudCwg
Y29uc3QgQ0NTZXR0aW5ncyYgc2V0dGluZ3MpCi0gICAgICAgIDogQ0NMYXllclRyZWVIb3N0KGNs
aWVudCwgc2V0dGluZ3MpCi0gICAgewotICAgIH0KLX07Ci0KLWNsYXNzIEdyYXBoaWNzTGF5ZXJD
aHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Ci1wdWJsaWM6Ci0gICAgR3JhcGhp
Y3NMYXllckNocm9taXVtVGVzdCgpCi0gICAgewotICAgICAgICBXZWJDb21wb3NpdG9yOjppbml0
aWFsaXplKDApOwotICAgICAgICBtX2dyYXBoaWNzTGF5ZXIgPSBzdGF0aWNfcG9pbnRlcl9jYXN0
PEdyYXBoaWNzTGF5ZXJDaHJvbWl1bT4oR3JhcGhpY3NMYXllcjo6Y3JlYXRlKCZtX2NsaWVudCkp
OwotICAgICAgICBtX3BsYXRmb3JtTGF5ZXIgPSBzdGF0aWNfY2FzdDxMYXllckNocm9taXVtKj4o
bV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOwotICAgICAgICBtX2xheWVyVHJlZUhv
c3QgPSBNb2NrTGF5ZXJUcmVlSG9zdDo6Y3JlYXRlKCk7Ci0gICAgICAgIG1fcGxhdGZvcm1MYXll
ci0+c2V0TGF5ZXJUcmVlSG9zdChtX2xheWVyVHJlZUhvc3QuZ2V0KCkpOwotICAgIH0KLQotICAg
IHZpcnR1YWwgfkdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3QoKQotICAgIHsKLSAgICAgICAgbV9n
cmFwaGljc0xheWVyLmNsZWFyKCk7Ci0gICAgICAgIG1fbGF5ZXJUcmVlSG9zdC5jbGVhcigpOwot
ICAgICAgICBXZWJDb21wb3NpdG9yOjpzaHV0ZG93bigpOwotICAgIH0KLQotcHJvdGVjdGVkOgot
ICAgIHN0YXRpYyB2b2lkIGV4cGVjdFRyYW5zbGF0ZVgoZG91YmxlIHRyYW5zbGF0ZVgsIGNvbnN0
IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCi0gICAgewotICAgICAgICBFWFBFQ1Rf
RkxPQVRfRVEodHJhbnNsYXRlWCwgbWF0cml4Lm00MSgpKTsKLSAgICB9Ci0KLSAgICBMYXllckNo
cm9taXVtKiBtX3BsYXRmb3JtTGF5ZXI7Ci0gICAgT3duUHRyPEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bT4gbV9ncmFwaGljc0xheWVyOwotICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3Q+IG1fbGF5ZXJU
cmVlSG9zdDsKLQotcHJpdmF0ZToKLSAgICBNb2NrR3JhcGhpY3NMYXllckNsaWVudCBtX2NsaWVu
dDsKLSAgICBEZWJ1Z1Njb3BlZFNldE1haW5UaHJlYWQgbV9tYWluOworICAgIHZpcnR1YWwgdm9p
ZCBub3RpZnlBbmltYXRpb25TdGFydGVkKGNvbnN0IEdyYXBoaWNzTGF5ZXIqLCBkb3VibGUgdGlt
ZSkgeyB9CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeVN5bmNSZXF1aXJlZChjb25zdCBHcmFwaGlj
c0xheWVyKikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50Q29udGVudHMoY29uc3QgR3JhcGhp
Y3NMYXllciosIEdyYXBoaWNzQ29udGV4dCYsIEdyYXBoaWNzTGF5ZXJQYWludGluZ1BoYXNlLCBj
b25zdCBJbnRSZWN0JiBpbkNsaXApIHsgfQorICAgIHZpcnR1YWwgYm9vbCBzaG93RGVidWdCb3Jk
ZXJzKGNvbnN0IEdyYXBoaWNzTGF5ZXIqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorICAgIHZp
cnR1YWwgYm9vbCBzaG93UmVwYWludENvdW50ZXIoY29uc3QgR3JhcGhpY3NMYXllciopIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiB9OwogCi1URVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVz
dCwgdXBkYXRlTGF5ZXJQcmVzZXJ2ZXMzRFdpdGhBbmltYXRpb25zKQotewotICAgIEFTU0VSVF9G
QUxTRShtX3BsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLQotICAgIE93blB0
cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gZmxvYXRBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OmNy
ZWF0ZShhZG9wdFB0cihuZXcgRmFrZUZsb2F0QW5pbWF0aW9uQ3VydmUpLCAwLCAxLCBDQ0FjdGl2
ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwotICAgIG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKCktPmFkZEFuaW1hdGlvbihmbG9hdEFuaW1hdGlvbi5yZWxlYXNlKCkpOwot
Ci0gICAgQVNTRVJUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
Ci0KLSAgICBtX2dyYXBoaWNzTGF5ZXItPnNldFByZXNlcnZlczNEKHRydWUpOwotCi0gICAgbV9w
bGF0Zm9ybUxheWVyID0gc3RhdGljX2Nhc3Q8TGF5ZXJDaHJvbWl1bSo+KG1fZ3JhcGhpY3NMYXll
ci0+cGxhdGZvcm1MYXllcigpKTsKLSAgICBBU1NFUlRfVFJVRShtX3BsYXRmb3JtTGF5ZXIpOwot
Ci0gICAgQVNTRVJUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
Ci0gICAgbV9wbGF0Zm9ybUxheWVyLT5yZW1vdmVBbmltYXRpb24oMCk7Ci0gICAgQVNTRVJUX0ZB
TFNFKG1fcGxhdGZvcm1MYXllci0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwotCi0gICAgbV9ncmFw
aGljc0xheWVyLT5zZXRQcmVzZXJ2ZXMzRChmYWxzZSk7Ci0KLSAgICBtX3BsYXRmb3JtTGF5ZXIg
PSBzdGF0aWNfY2FzdDxMYXllckNocm9taXVtKj4obV9ncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxh
eWVyKCkpOwotICAgIEFTU0VSVF9UUlVFKG1fcGxhdGZvcm1MYXllcik7Ci0KLSAgICBBU1NFUlRf
RkFMU0UobV9wbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci19Ci0KLVRFU1Rf
RihHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVPcGFjaXR5QW5pbWF0aW9uKQotewot
ICAgIGNvbnN0IGRvdWJsZSBkdXJhdGlvbiA9IDE7Ci0gICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1
ZUxpc3QgdmFsdWVzKEFuaW1hdGVkUHJvcGVydHlPcGFjaXR5KTsKLSAgICB2YWx1ZXMuaW5zZXJ0
KG5ldyBGbG9hdEFuaW1hdGlvblZhbHVlKDAsIDApKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBG
bG9hdEFuaW1hdGlvblZhbHVlKGR1cmF0aW9uLCAxKSk7Ci0KLSAgICBSZWZQdHI8QW5pbWF0aW9u
PiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVy
YXRpb24oZHVyYXRpb24pOwotCi0gICAgSW50U2l6ZSBib3hTaXplOwotICAgIGJvb2wgYWRkZWRB
bmltYXRpb24gPSBtX2dyYXBoaWNzTGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUs
IGFuaW1hdGlvbi5nZXQoKSwgIiIsIDApOwotCi0gICAgRVhQRUNUX1RSVUUoYWRkZWRBbmltYXRp
b24pOwotCi0gICAgRVhQRUNUX1RSVUUobV9wbGF0Zm9ybUxheWVyLT5sYXllckFuaW1hdGlvbkNv
bnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwotCi0gICAgQ0NBY3RpdmVBbmltYXRp
b24qIGFjdGl2ZUFuaW1hdGlvbiA9IG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25Db250
cm9sbGVyKCktPmdldEFjdGl2ZUFuaW1hdGlvbihDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSk7
Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKLQotICAgIEVYUEVDVF9FUSgxLCBh
Y3RpdmVBbmltYXRpb24tPml0ZXJhdGlvbnMoKSk7Ci0gICAgRVhQRUNUX0VRKENDQWN0aXZlQW5p
bWF0aW9uOjpPcGFjaXR5LCBhY3RpdmVBbmltYXRpb24tPnRhcmdldFByb3BlcnR5KCkpOwotCi0g
ICAgRVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OkZsb2F0LCBhY3RpdmVBbmltYXRpb24tPmN1
cnZlKCktPnR5cGUoKSk7Ci0KLSAgICBjb25zdCBDQ0Zsb2F0QW5pbWF0aW9uQ3VydmUqIGN1cnZl
ID0gYWN0aXZlQW5pbWF0aW9uLT5jdXJ2ZSgpLT50b0Zsb2F0QW5pbWF0aW9uQ3VydmUoKTsKLSAg
ICBFWFBFQ1RfVFJVRShjdXJ2ZSk7Ci0KLSAgICBFWFBFQ1RfRVEoMCwgY3VydmUtPmdldFZhbHVl
KDApKTsKLSAgICBFWFBFQ1RfRVEoMSwgY3VydmUtPmdldFZhbHVlKGR1cmF0aW9uKSk7Ci19Ci0K
LVRFU1RfRihHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVUcmFuc2Zvcm1BbmltYXRp
b24pCi17Ci0gICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMTsKLSAgICBXZWJDb3JlOjpLZXlm
cmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0K
LSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOwotICAgIG9wZXJhdGlvbnMxLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVu
Z3RoKDIsIFdlYkNvcmU6OkZpeGVkKSwgTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSwgVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOwotCi0gICAgVHJhbnNmb3JtT3Bl
cmF0aW9ucyBvcGVyYXRpb25zMjsKLSAgICBvcGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5k
KFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg0LCBXZWJDb3JlOjpG
aXhlZCksIExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7Ci0KLSAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmlt
YXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24o
ZHVyYXRpb24pOwotCi0gICAgSW50U2l6ZSBib3hTaXplOwotICAgIG1fZ3JhcGhpY3NMYXllci0+
YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAiIiwgMCk7Ci0K
LSAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxl
cigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7Ci0KLSAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0
aXZlQW5pbWF0aW9uID0gbV9wbGF0Zm9ybUxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIo
KS0+Z2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pOwotICAg
IEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlvbik7Ci0KLSAgICBFWFBFQ1RfRVEoMSwgYWN0aXZl
QW5pbWF0aW9uLT5pdGVyYXRpb25zKCkpOwotICAgIEVYUEVDVF9FUShDQ0FjdGl2ZUFuaW1hdGlv
bjo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPnRhcmdldFByb3BlcnR5KCkpOwotCi0gICAg
RVhQRUNUX0VRKENDQW5pbWF0aW9uQ3VydmU6OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT5j
dXJ2ZSgpLT50eXBlKCkpOwotCi0gICAgY29uc3QgQ0NUcmFuc2Zvcm1BbmltYXRpb25DdXJ2ZSog
Y3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvVHJhbnNmb3JtQW5pbWF0aW9uQ3Vy
dmUoKTsKLSAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7Ci0KLSAgICBleHBlY3RUcmFuc2xhdGVYKDIs
IGN1cnZlLT5nZXRWYWx1ZSgwKSk7Ci0gICAgZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0
VmFsdWUoZHVyYXRpb24pKTsKLX0KLQotVEVTVF9GKEdyYXBoaWNzTGF5ZXJDaHJvbWl1bVRlc3Qs
IGNyZWF0ZVRyYW5zZm9ybUFuaW1hdGlvbldpdGhCaWdSb3RhdGlvbikKLXsKLSAgICBjb25zdCBk
b3VibGUgZHVyYXRpb24gPSAxOwotICAgIFdlYkNvcmU6OktleWZyYW1lVmFsdWVMaXN0IHZhbHVl
cyhBbmltYXRlZFByb3BlcnR5V2Via2l0VHJhbnNmb3JtKTsKLQotICAgIFRyYW5zZm9ybU9wZXJh
dGlvbnMgb3BlcmF0aW9uczE7Ci0gICAgb3BlcmF0aW9uczEub3BlcmF0aW9ucygpLmFwcGVuZChS
b3RhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZSgwLCBUcmFuc2Zvcm1PcGVyYXRpb246OlJP
VEFURSkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAs
ICZvcGVyYXRpb25zMSkpOwotCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsK
LSAgICBvcGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5kKFJvdGF0ZVRyYW5zZm9ybU9wZXJh
dGlvbjo6Y3JlYXRlKDI3MCwgVHJhbnNmb3JtT3BlcmF0aW9uOjpST1RBVEUpKTsKLSAgICB2YWx1
ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlv
bnMyKSk7Ci0KLSAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNy
ZWF0ZSgpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotCi0gICAgSW50
U2l6ZSBib3hTaXplOwotICAgIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywg
Ym94U2l6ZSwgYW5pbWF0aW9uLmdldCgpLCAiIiwgMCk7Ci0KLSAgICBFWFBFQ1RfRkFMU0UobV9w
bGF0Zm9ybUxheWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0
aW9uKCkpOwotfQotCi1URVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlVHJh
bnNmb3JtQW5pbWF0aW9uV2l0aFNpbmd1bGFyTWF0cml4KQotewotICAgIGNvbnN0IGRvdWJsZSBk
dXJhdGlvbiA9IDE7Ci0gICAgV2ViQ29yZTo6S2V5ZnJhbWVWYWx1ZUxpc3QgdmFsdWVzKEFuaW1h
dGVkUHJvcGVydHlXZWJraXRUcmFuc2Zvcm0pOwotCi0gICAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
bWF0cml4MTsKLSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOwotICAgIG9wZXJh
dGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoTWF0cml4M0RUcmFuc2Zvcm1PcGVyYXRpb246OmNy
ZWF0ZShtYXRyaXgxKSk7Ci0gICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3JtQW5pbWF0aW9u
VmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7Ci0KLSAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBtYXRy
aXgyOwotICAgIG1hdHJpeDIuc2V0TTExKDApOwotICAgIFRyYW5zZm9ybU9wZXJhdGlvbnMgb3Bl
cmF0aW9uczI7Ci0gICAgb3BlcmF0aW9uczIub3BlcmF0aW9ucygpLmFwcGVuZChNYXRyaXgzRFRy
YW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKG1hdHJpeDIpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5l
dyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7Ci0KLSAg
ICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwotICAg
IGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotCi0gICAgSW50U2l6ZSBib3hTaXpl
OwotICAgIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6ZSwgYW5p
bWF0aW9uLmdldCgpLCAiIiwgMCk7Ci0KLSAgICBFWFBFQ1RfRkFMU0UobV9wbGF0Zm9ybUxheWVy
LT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+aGFzQWN0aXZlQW5pbWF0aW9uKCkpOwotfQot
Ci1URVNUX0YoR3JhcGhpY3NMYXllckNocm9taXVtVGVzdCwgY3JlYXRlUmV2ZXJzZWRBbmltYXRp
b24pCi17Ci0gICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0gMTsKLSAgICBXZWJDb3JlOjpLZXlm
cmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0K
LSAgICBUcmFuc2Zvcm1PcGVyYXRpb25zIG9wZXJhdGlvbnMxOwotICAgIG9wZXJhdGlvbnMxLm9w
ZXJhdGlvbnMoKS5hcHBlbmQoVHJhbnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVu
Z3RoKDIsIFdlYkNvcmU6OkZpeGVkKSwgTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSwgVHJhbnNm
b3JtT3BlcmF0aW9uOjpUUkFOU0xBVEVfWCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5z
Zm9ybUFuaW1hdGlvblZhbHVlKDAsICZvcGVyYXRpb25zMSkpOwotCi0gICAgVHJhbnNmb3JtT3Bl
cmF0aW9ucyBvcGVyYXRpb25zMjsKLSAgICBvcGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5k
KFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg0LCBXZWJDb3JlOjpG
aXhlZCksIExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJB
TlNMQVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1
ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7Ci0KLSAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmlt
YXRpb24gPSBBbmltYXRpb246OmNyZWF0ZSgpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24o
ZHVyYXRpb24pOwotICAgIGFuaW1hdGlvbi0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0
aW9uRGlyZWN0aW9uUmV2ZXJzZSk7Ci0KLSAgICBJbnRTaXplIGJveFNpemU7Ci0gICAgbV9ncmFw
aGljc0xheWVyLT5hZGRBbmltYXRpb24odmFsdWVzLCBib3hTaXplLCBhbmltYXRpb24uZ2V0KCks
ICIiLCAwKTsKLQotICAgIEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRp
b25Db250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKLQotICAgIENDQWN0aXZlQW5p
bWF0aW9uKiBhY3RpdmVBbmltYXRpb24gPSBtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9u
Q29udHJvbGxlcigpLT5nZXRBY3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OlRyYW5z
Zm9ybSk7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKLQotICAgIEVYUEVDVF9F
USgxLCBhY3RpdmVBbmltYXRpb24tPml0ZXJhdGlvbnMoKSk7Ci0gICAgRVhQRUNUX0VRKENDQWN0
aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0sIGFjdGl2ZUFuaW1hdGlvbi0+dGFyZ2V0UHJvcGVydHko
KSk7Ci0KLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25DdXJ2ZTo6VHJhbnNmb3JtLCBhY3RpdmVB
bmltYXRpb24tPmN1cnZlKCktPnR5cGUoKSk7Ci0KLSAgICBjb25zdCBDQ1RyYW5zZm9ybUFuaW1h
dGlvbkN1cnZlKiBjdXJ2ZSA9IGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dG9UcmFuc2Zvcm1B
bmltYXRpb25DdXJ2ZSgpOwotICAgIEVYUEVDVF9UUlVFKGN1cnZlKTsKLQotICAgIGV4cGVjdFRy
YW5zbGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKDApKTsKLSAgICBleHBlY3RUcmFuc2xhdGVYKDIs
IGN1cnZlLT5nZXRWYWx1ZShkdXJhdGlvbikpOwotfQotCi1URVNUX0YoR3JhcGhpY3NMYXllckNo
cm9taXVtVGVzdCwgY3JlYXRlQWx0ZXJuYXRpbmdBbmltYXRpb24pCi17Ci0gICAgY29uc3QgZG91
YmxlIGR1cmF0aW9uID0gMTsKLSAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMo
QW5pbWF0ZWRQcm9wZXJ0eVdlYmtpdFRyYW5zZm9ybSk7Ci0KLSAgICBUcmFuc2Zvcm1PcGVyYXRp
b25zIG9wZXJhdGlvbnMxOwotICAgIG9wZXJhdGlvbnMxLm9wZXJhdGlvbnMoKS5hcHBlbmQoVHJh
bnNsYXRlVHJhbnNmb3JtT3BlcmF0aW9uOjpjcmVhdGUoTGVuZ3RoKDIsIFdlYkNvcmU6OkZpeGVk
KSwgTGVuZ3RoKDAsIFdlYkNvcmU6OkZpeGVkKSwgVHJhbnNmb3JtT3BlcmF0aW9uOjpUUkFOU0xB
VEVfWCkpOwotICAgIHZhbHVlcy5pbnNlcnQobmV3IFRyYW5zZm9ybUFuaW1hdGlvblZhbHVlKDAs
ICZvcGVyYXRpb25zMSkpOwotCi0gICAgVHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsK
LSAgICBvcGVyYXRpb25zMi5vcGVyYXRpb25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9w
ZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg0LCBXZWJDb3JlOjpGaXhlZCksIExlbmd0aCgwLCBXZWJD
b3JlOjpGaXhlZCksIFRyYW5zZm9ybU9wZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKLSAgICB2YWx1
ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1BbmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlv
bnMyKSk7Ci0KLSAgICBSZWZQdHI8QW5pbWF0aW9uPiBhbmltYXRpb24gPSBBbmltYXRpb246OmNy
ZWF0ZSgpOwotICAgIGFuaW1hdGlvbi0+c2V0RHVyYXRpb24oZHVyYXRpb24pOwotICAgIGFuaW1h
dGlvbi0+c2V0RGlyZWN0aW9uKEFuaW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uQWx0ZXJuYXRl
KTsKLSAgICBhbmltYXRpb24tPnNldEl0ZXJhdGlvbkNvdW50KDIpOwotCi0gICAgSW50U2l6ZSBi
b3hTaXplOwotICAgIG1fZ3JhcGhpY3NMYXllci0+YWRkQW5pbWF0aW9uKHZhbHVlcywgYm94U2l6
ZSwgYW5pbWF0aW9uLmdldCgpLCAiIiwgMCk7Ci0KLSAgICBFWFBFQ1RfVFJVRShtX3BsYXRmb3Jt
TGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7
Ci0KLSAgICBDQ0FjdGl2ZUFuaW1hdGlvbiogYWN0aXZlQW5pbWF0aW9uID0gbV9wbGF0Zm9ybUxh
eWVyLT5sYXllckFuaW1hdGlvbkNvbnRyb2xsZXIoKS0+Z2V0QWN0aXZlQW5pbWF0aW9uKENDQWN0
aXZlQW5pbWF0aW9uOjpUcmFuc2Zvcm0pOwotICAgIEVYUEVDVF9UUlVFKGFjdGl2ZUFuaW1hdGlv
bik7Ci0gICAgRVhQRUNUX1RSVUUoYWN0aXZlQW5pbWF0aW9uLT5hbHRlcm5hdGVzRGlyZWN0aW9u
KCkpOwotCi0gICAgRVhQRUNUX0VRKDIsIGFjdGl2ZUFuaW1hdGlvbi0+aXRlcmF0aW9ucygpKTsK
LSAgICBFWFBFQ1RfRVEoQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSwgYWN0aXZlQW5pbWF0
aW9uLT50YXJnZXRQcm9wZXJ0eSgpKTsKLQotICAgIEVYUEVDVF9FUShDQ0FuaW1hdGlvbkN1cnZl
OjpUcmFuc2Zvcm0sIGFjdGl2ZUFuaW1hdGlvbi0+Y3VydmUoKS0+dHlwZSgpKTsKLQotICAgIGNv
bnN0IENDVHJhbnNmb3JtQW5pbWF0aW9uQ3VydmUqIGN1cnZlID0gYWN0aXZlQW5pbWF0aW9uLT5j
dXJ2ZSgpLT50b1RyYW5zZm9ybUFuaW1hdGlvbkN1cnZlKCk7Ci0gICAgRVhQRUNUX1RSVUUoY3Vy
dmUpOwotCi0gICAgZXhwZWN0VHJhbnNsYXRlWCgyLCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOwotICAg
IGV4cGVjdFRyYW5zbGF0ZVgoNCwgY3VydmUtPmdldFZhbHVlKGR1cmF0aW9uKSk7Ci19Ci0KLVRF
U1RfRihHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCBjcmVhdGVSZXZlcnNlZEFsdGVybmF0aW5n
QW5pbWF0aW9uKQorVEVTVChHcmFwaGljc0xheWVyQ2hyb21pdW1UZXN0LCB1cGRhdGVMYXllclBy
ZXNlcnZlczNEV2l0aEFuaW1hdGlvbnMpCiB7Ci0gICAgY29uc3QgZG91YmxlIGR1cmF0aW9uID0g
MTsKLSAgICBXZWJDb3JlOjpLZXlmcmFtZVZhbHVlTGlzdCB2YWx1ZXMoQW5pbWF0ZWRQcm9wZXJ0
eVdlYmtpdFRyYW5zZm9ybSk7CisgICAgTW9ja0dyYXBoaWNzTGF5ZXJDbGllbnQgY2xpZW50Owor
ICAgIE93blB0cjxHcmFwaGljc0xheWVyQ2hyb21pdW0+IGdyYXBoaWNzTGF5ZXIgPSBzdGF0aWNf
cG9pbnRlcl9jYXN0PEdyYXBoaWNzTGF5ZXJDaHJvbWl1bT4oR3JhcGhpY3NMYXllcjo6Y3JlYXRl
KCZjbGllbnQpKTsKKyAgICBBU1NFUlRfVFJVRShncmFwaGljc0xheWVyLmdldCgpKTsKIAotICAg
IFRyYW5zZm9ybU9wZXJhdGlvbnMgb3BlcmF0aW9uczE7Ci0gICAgb3BlcmF0aW9uczEub3BlcmF0
aW9ucygpLmFwcGVuZChUcmFuc2xhdGVUcmFuc2Zvcm1PcGVyYXRpb246OmNyZWF0ZShMZW5ndGgo
MiwgV2ViQ29yZTo6Rml4ZWQpLCBMZW5ndGgoMCwgV2ViQ29yZTo6Rml4ZWQpLCBUcmFuc2Zvcm1P
cGVyYXRpb246OlRSQU5TTEFURV9YKSk7Ci0gICAgdmFsdWVzLmluc2VydChuZXcgVHJhbnNmb3Jt
QW5pbWF0aW9uVmFsdWUoMCwgJm9wZXJhdGlvbnMxKSk7CisgICAgTGF5ZXJDaHJvbWl1bSogcGxh
dGZvcm1MYXllciA9IHN0YXRpY19jYXN0PExheWVyQ2hyb21pdW0qPihncmFwaGljc0xheWVyLT5w
bGF0Zm9ybUxheWVyKCkpOworICAgIEFTU0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXIpOwogCi0gICAg
VHJhbnNmb3JtT3BlcmF0aW9ucyBvcGVyYXRpb25zMjsKLSAgICBvcGVyYXRpb25zMi5vcGVyYXRp
b25zKCkuYXBwZW5kKFRyYW5zbGF0ZVRyYW5zZm9ybU9wZXJhdGlvbjo6Y3JlYXRlKExlbmd0aCg0
LCBXZWJDb3JlOjpGaXhlZCksIExlbmd0aCgwLCBXZWJDb3JlOjpGaXhlZCksIFRyYW5zZm9ybU9w
ZXJhdGlvbjo6VFJBTlNMQVRFX1gpKTsKLSAgICB2YWx1ZXMuaW5zZXJ0KG5ldyBUcmFuc2Zvcm1B
bmltYXRpb25WYWx1ZShkdXJhdGlvbiwgJm9wZXJhdGlvbnMyKSk7CisgICAgQVNTRVJUX0ZBTFNF
KHBsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIAotICAgIFJlZlB0cjxBbmlt
YXRpb24+IGFuaW1hdGlvbiA9IEFuaW1hdGlvbjo6Y3JlYXRlKCk7Ci0gICAgYW5pbWF0aW9uLT5z
ZXREdXJhdGlvbihkdXJhdGlvbik7Ci0gICAgYW5pbWF0aW9uLT5zZXREaXJlY3Rpb24oQW5pbWF0
aW9uOjpBbmltYXRpb25EaXJlY3Rpb25BbHRlcm5hdGVSZXZlcnNlKTsKLSAgICBhbmltYXRpb24t
PnNldEl0ZXJhdGlvbkNvdW50KDIpOworICAgIE93blB0cjxDQ0FjdGl2ZUFuaW1hdGlvbj4gZmxv
YXRBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OmNyZWF0ZShhZG9wdFB0cihuZXcgRmFrZUZs
b2F0QW5pbWF0aW9uQ3VydmUpLCAwLCAxLCBDQ0FjdGl2ZUFuaW1hdGlvbjo6T3BhY2l0eSkpOwor
ICAgIHBsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5hZGQoZmxvYXRB
bmltYXRpb24ucmVsZWFzZSgpKTsKIAotICAgIEludFNpemUgYm94U2l6ZTsKLSAgICBtX2dyYXBo
aWNzTGF5ZXItPmFkZEFuaW1hdGlvbih2YWx1ZXMsIGJveFNpemUsIGFuaW1hdGlvbi5nZXQoKSwg
IiIsIDApOworICAgIEFTU0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlv
bigpKTsKIAotICAgIEVYUEVDVF9UUlVFKG1fcGxhdGZvcm1MYXllci0+bGF5ZXJBbmltYXRpb25D
b250cm9sbGVyKCktPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKKyAgICBncmFwaGljc0xheWVyLT5z
ZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKIAotICAgIENDQWN0aXZlQW5pbWF0aW9uKiBhY3RpdmVBbmlt
YXRpb24gPSBtX3BsYXRmb3JtTGF5ZXItPmxheWVyQW5pbWF0aW9uQ29udHJvbGxlcigpLT5nZXRB
Y3RpdmVBbmltYXRpb24oQ0NBY3RpdmVBbmltYXRpb246OlRyYW5zZm9ybSk7Ci0gICAgRVhQRUNU
X1RSVUUoYWN0aXZlQW5pbWF0aW9uKTsKLSAgICBFWFBFQ1RfVFJVRShhY3RpdmVBbmltYXRpb24t
PmFsdGVybmF0ZXNEaXJlY3Rpb24oKSk7CisgICAgcGxhdGZvcm1MYXllciA9IHN0YXRpY19jYXN0
PExheWVyQ2hyb21pdW0qPihncmFwaGljc0xheWVyLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIEFT
U0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXIpOwogCi0gICAgRVhQRUNUX0VRKDIsIGFjdGl2ZUFuaW1h
dGlvbi0+aXRlcmF0aW9ucygpKTsKLSAgICBFWFBFQ1RfRVEoQ0NBY3RpdmVBbmltYXRpb246OlRy
YW5zZm9ybSwgYWN0aXZlQW5pbWF0aW9uLT50YXJnZXRQcm9wZXJ0eSgpKTsKKyAgICBBU1NFUlRf
VFJVRShwbGF0Zm9ybUxheWVyLT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CisgICAgcGxhdGZvcm1M
YXllci0+cmVtb3ZlQW5pbWF0aW9uKDApOworICAgIEFTU0VSVF9GQUxTRShwbGF0Zm9ybUxheWVy
LT5oYXNBY3RpdmVBbmltYXRpb24oKSk7CiAKLSAgICBFWFBFQ1RfRVEoQ0NBbmltYXRpb25DdXJ2
ZTo6VHJhbnNmb3JtLCBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnR5cGUoKSk7CisgICAgZ3Jh
cGhpY3NMYXllci0+c2V0UHJlc2VydmVzM0QoZmFsc2UpOwogCi0gICAgY29uc3QgQ0NUcmFuc2Zv
cm1BbmltYXRpb25DdXJ2ZSogY3VydmUgPSBhY3RpdmVBbmltYXRpb24tPmN1cnZlKCktPnRvVHJh
bnNmb3JtQW5pbWF0aW9uQ3VydmUoKTsKLSAgICBFWFBFQ1RfVFJVRShjdXJ2ZSk7CisgICAgcGxh
dGZvcm1MYXllciA9IHN0YXRpY19jYXN0PExheWVyQ2hyb21pdW0qPihncmFwaGljc0xheWVyLT5w
bGF0Zm9ybUxheWVyKCkpOworICAgIEFTU0VSVF9UUlVFKHBsYXRmb3JtTGF5ZXIpOwogCi0gICAg
ZXhwZWN0VHJhbnNsYXRlWCg0LCBjdXJ2ZS0+Z2V0VmFsdWUoMCkpOwotICAgIGV4cGVjdFRyYW5z
bGF0ZVgoMiwgY3VydmUtPmdldFZhbHVlKGR1cmF0aW9uKSk7CisgICAgQVNTRVJUX0ZBTFNFKHBs
YXRmb3JtTGF5ZXItPmhhc0FjdGl2ZUFuaW1hdGlvbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UK
</data>

          </attachment>
      

    </bug>

</bugzilla>