<?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>91863</bug_id>
          
          <creation_ts>2012-07-20 07:50:23 -0700</creation_ts>
          <short_desc>REGRESSION(r123182): Causing ASSERT crashes in tests accessibility/canvas.html and accessibility/canvas-accessibilitynodeobject.html (Requested by jernoble on #webkit).</short_desc>
          <delta_ts>2012-07-20 07:58:15 -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>87899</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>cfleizach</cc>
    
    <cc>dmazzoni</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>674568</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 07:50:23 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/123182 broke the build:
Causing ASSERT crashes in tests accessibility/canvas.html and accessibility/canvas-accessibilitynodeobject.html (Requested by jernoble 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>674570</commentid>
    <comment_count>1</comment_count>
      <attachid>153504</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 07:51:32 -0700</bug_when>
    <thetext>Created attachment 153504
ROLLOUT of r123182

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>674573</commentid>
    <comment_count>2</comment_count>
      <attachid>153504</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 07:58:12 -0700</bug_when>
    <thetext>Comment on attachment 153504
ROLLOUT of r123182

Clearing flags on attachment: 153504

Committed r123219: &lt;http://trac.webkit.org/changeset/123219&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>674574</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-20 07:58:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>153504</attachid>
            <date>2012-07-20 07:51:32 -0700</date>
            <delta_ts>2012-07-20 07:58:12 -0700</delta_ts>
            <desc>ROLLOUT of r123182</desc>
            <filename>bug-91863-20120720145703.patch</filename>
            <type>text/plain</type>
            <size>63914</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMjE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTg4ZjgxYWQwMmQzMWQ2
NGU2NDJiMGY1ZDFmZDViOTg0ZmQwNDE4OS4uMjljOTNjZjRlNGIwZmUzOTljZWUyZTJhYzVjZDY0
OWViNDk3MDI5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgxIEBACisyMDEyLTA3LTIwICBTaGVy
aWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmll
d2VkLCByb2xsaW5nIG91dCByMTIzMTgyLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3Jn
L2NoYW5nZXNldC8xMjMxODIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTkxODYzCisKKyAgICAgICAgQ2F1c2luZyBBU1NFUlQgY3Jhc2hlcyBpbiB0ZXN0
cyBhY2Nlc3NpYmlsaXR5L2NhbnZhcy5odG1sIGFuZAorICAgICAgICBhY2Nlc3NpYmlsaXR5L2Nh
bnZhcy1hY2Nlc3NpYmlsaXR5bm9kZW9iamVjdC5odG1sIChSZXF1ZXN0ZWQKKyAgICAgICAgYnkg
amVybm9ibGUgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAg
ICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5j
cHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaDoKKyAgICAgICAgKEFYT2JqZWN0Q2FjaGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2li
aWxpdHlBUklBR3JpZDo6QWNjZXNzaWJpbGl0eUFSSUFHcmlkKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6fkFjY2Vzc2liaWxpdHlBUklBR3JpZCk6CisgICAgICAg
IChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlBUklBR3JpZDo6Y3Jl
YXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oOgor
ICAgICAgICAoQWNjZXNzaWJpbGl0eUFSSUFHcmlkKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eUFSSUFHcmlkQ2VsbDo6Y3JlYXRlKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3c6OmNyZWF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5QWxsSW5PbmUuY3BwOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eUxpc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eUxpc3Q6OmNyZWF0ZSk6
CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5TGlzdEJveDo6Y3JlYXRlKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2w6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sc0NvbnRhaW5lcjo6Y3JlYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlNZWRpYVRpbWVsaW5lOjpjcmVhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXk6OmNyZWF0ZSk6CisgICAg
ICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuY3BwOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0Lmg6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5TWVudUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogYWNjZXNz
aWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5oOiBSZW1vdmVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oOgorICAgICAgICAoQWNjZXNzaWJpbGl0
eU9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJ
bmRpY2F0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5k
aWNhdG9yOjpjcmVhdGUpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJl
bmRlck9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5UmVuZGVyT2JqZWN0OjpkZXRhY2gpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6cmVtYXBBcmlhUm9sZUR1ZVRvUGFyZW50KToKKyAgICAgICAgKFdl
YkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6ZGV0
ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YXJpYVJvbGVBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUpOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6
OmNhbkhhdmVDaGlsZHJlbik6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVy
T2JqZWN0OjphZGRDaGlsZHJlbik6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0Lmg6CisgICAgICAgIChBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnNldFJlbmRlcmVy
KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVNsaWRlcjo6Y3JlYXRlKToKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpB
Y2Nlc3NpYmlsaXR5VGFibGU6OkFjY2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5VGFibGU6On5BY2Nlc3NpYmlsaXR5VGFibGUpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5VGFibGU6OmNyZWF0ZSk6Cisg
ICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGUuaDoKKyAgICAgICAgKEFj
Y2Vzc2liaWxpdHlUYWJsZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGVDZWxsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlUYWJsZUNlbGw6
OmNyZWF0ZSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eVRhYmxlUm93OjpjcmVhdGUpOgor
CiAyMDEyLTA3LTIwICBDaHJpc3RvcGhlIER1bWV6ICA8Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5j
b20+CiAKICAgICAgICAgW0VGTF0gUHJveHkgY29uZmlndXJhdGlvbiBzaG91bGQgaG9ub3IgdGhl
IG5vX3Byb3h5IGVudmlyb25tZW50IHZhcmlhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDM3
MmU5YTgwMTk2MThjYjBhMmMwNmEwMjkyMzY4ZWMxOGZlNzMxYzAuLjg5ZDQ1MDI4MTJiNzc0YTlj
ZjBkYzdmOTkwNGQ3NmM4ZDA1ZWJlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC05MzUsNyAr
OTM1LDYgQEAgU0VUKFdlYkNvcmVfU09VUkNFUwogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eU1lbnVMaXN0T3B0aW9uLmNwcAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0UG9wdXAuY3BwCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVj
dC5jcHAKLSAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAogICAg
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKICAgICBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAKICAgICBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCA3NDkxMDQzNjJhZTU1YTA1ZDRlYjk1N2UyZDkyOTNkMzQzMjg5MTgwLi4zZWI5NDM5OTFk
N2VmMzdjMmMwOTRhYTM3MjgwMDA3NzMyZjk5MDQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTEzMTcsOCArMTMxNyw2IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3RQb3B1cC5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNb2NrT2JqZWN0LmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TW9ja09iamVjdC5o
IFwKLQlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcCBcCi0JU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9i
amVjdC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmpl
Y3QuaCBcCiAJU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jl
c3NJbmRpY2F0b3IuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkg
Yi9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQucHJpCmluZGV4IDc3ODI4MjU1ZjQwNWNkOTMyMmZmYzcx
M2NmYTNiZmJlYjYwNjQ4ODkuLjIzYmMyZDBlMmZlNmU0MzliZmYwOTEzMmRiNmNlMzI2MmMyMmNm
NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKKysrIGIvU291cmNlL1dl
YkNvcmUvVGFyZ2V0LnByaQpAQCAtNTIsNyArNTIsNiBAQCBTT1VSQ0VTICs9IFwKICAgICBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TGlzdEJveC5jcHAgXAogICAgIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxp
c3RCb3hPcHRpb24uY3BwIFwKLSAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0LmNwcCBcCiAgICAgYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0
b3IuY3BwIFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3Bw
IFwKICAgICBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxiYXIuY3BwIFwKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUuZ3lwaQppbmRleCA1ZmNkNmQ0ZWY2ZTNjM2ZmYjYyMDQ1ZGJhMjQ1NjkxMmMxNjU3YTE3Li4z
YTM2MzI1YzdlZGZiOTg5MDhiZGJjNGQ2ZDdmNmRkYTEzM2E4MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CkBAIC0xNzkyLDggKzE3OTIsNiBAQAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU1lbnVMaXN0UG9wdXAuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5TW9ja09iamVjdC5jcHAnLAogICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU1vY2tPYmplY3QuaCcsCi0gICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAnLAotICAgICAgICAgICAgJ2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU5vZGVPYmplY3QuaCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcCcsCiAgICAgICAgICAgICAnYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwJywKICAgICAgICAgICAgICdhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvci5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDBmNGU2YTY3OTEzNzc1MWM2NGU5
MDA1NDg0ZWM5NGI3MTUxZmEyMjkuLjcxYTIyMTRlYWYxOTJkZjJhYjllMWNhODVlMzg2YWM3MDFm
ZjQ4N2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcApAQCAtMTg4LDIzICsxODgsNiBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENh
Y2hlOjpnZXQoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKICAgICByZXR1cm4gbV9vYmplY3RzLmdl
dChheElEKS5nZXQoKTsgICAgCiB9CiAKLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2Fj
aGU6OmdldChOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICAvLyBBbHdheXMgcHJlZmVyIGJ1aWxkaW5nIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0
IGZyb20gdGhlIHJlbmRlcmVyIGlmIHRoZXJlIGlzIG9uZS4KLSAgICBpZiAobm9kZS0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgcmV0dXJuIGdldChub2RlLT5yZW5kZXJlcigpKTsKLQotICAgIEFYSUQg
YXhJRCA9IG1fbm9kZU9iamVjdE1hcHBpbmcuZ2V0KG5vZGUpOwotICAgIEFTU0VSVCghSGFzaFRy
YWl0czxBWElEPjo6aXNEZWxldGVkVmFsdWUoYXhJRCkpOwotICAgIGlmICghYXhJRCkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gbV9vYmplY3RzLmdldChheElEKS5nZXQoKTsKLX0K
LQogLy8gRklYTUU6IFRoaXMgcHJvYmFibHkgYmVsb25ncyBvbiBOb2RlLgogLy8gRklYTUU6IFRo
aXMgc2hvdWxkIHRha2UgYSBjb25zdCBjaGFyKiwgYnV0IG9uZSBjYWxsZXIgcGFzc2VzIG51bGxB
dG9tLgogYm9vbCBub2RlSGFzUm9sZShOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIHJvbGUpCkBA
IC0yNjksMTEgKzI1Miw2IEBAIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IGNyZWF0ZUZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyCiAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNyZWF0ZShyZW5kZXJlcik7CiB9CiAKLXN0YXRpYyBQ
YXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IGNyZWF0ZUZyb21Ob2RlKE5vZGUqIG5vZGUp
Ci17Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjcmVhdGUobm9kZSk7Ci19
Ci0KIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldE9yQ3JlYXRlKFdpZGdl
dCogd2lkZ2V0KQogewogICAgIGlmICghd2lkZ2V0KQpAQCAtMjk1LDMyICsyNzMsNyBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQqIHdpZGdl
dCkKICAgICBhdHRhY2hXcmFwcGVyKG5ld09iai5nZXQoKSk7CiAgICAgcmV0dXJuIG5ld09iai5n
ZXQoKTsKIH0KLQotQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVh
dGUoTm9kZSogbm9kZSkKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgaWYgKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iaiA9IGdldChub2RlKSkKLSAgICAgICAgcmV0
dXJuIG9iajsKLQotICAgIGlmIChub2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm4gZ2V0
T3JDcmVhdGUobm9kZS0+cmVuZGVyZXIoKSk7Ci0KLSAgICAvLyBJdCdzIG9ubHkgYWxsb3dlZCB0
byBjcmVhdGUgYW4gQWNjZXNzaWJpbGl0eU9iamVjdCBmcm9tIGEgTm9kZSBpZiBpdCdzIGluIGEg
Y2FudmFzIHN1YnRyZWUuCi0gICAgaWYgKCFub2RlLT5wYXJlbnRFbGVtZW50KCkgfHwgIW5vZGUt
PnBhcmVudEVsZW1lbnQoKS0+aXNJbkNhbnZhc1N1YnRyZWUoKSkKLSAgICAgICAgcmV0dXJuIDA7
Ci0KLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gbmV3T2JqID0gY3JlYXRlRnJvbU5v
ZGUobm9kZSk7Ci0KLSAgICBnZXRBWElEKG5ld09iai5nZXQoKSk7Ci0KLSAgICBtX25vZGVPYmpl
Y3RNYXBwaW5nLnNldChub2RlLCBuZXdPYmotPmF4T2JqZWN0SUQoKSk7Ci0gICAgbV9vYmplY3Rz
LnNldChuZXdPYmotPmF4T2JqZWN0SUQoKSwgbmV3T2JqKTsKLSAgICBhdHRhY2hXcmFwcGVyKG5l
d09iai5nZXQoKSk7Ci0gICAgcmV0dXJuIG5ld09iai5nZXQoKTsKLX0KLQorICAgIAogQWNjZXNz
aWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0T3JDcmVhdGUoUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlcikKIHsKICAgICBpZiAoIXJlbmRlcmVyKQpAQCAtNDM1LDI0ICszODgsNiBAQCB2b2lk
IEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIG1fcmVu
ZGVyT2JqZWN0TWFwcGluZy5yZW1vdmUocmVuZGVyZXIpOwogfQogCi12b2lkIEFYT2JqZWN0Q2Fj
aGU6OnJlbW92ZShOb2RlKiBub2RlKQotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgcmVtb3ZlTm9kZUZvclVzZShub2RlKTsKLQotICAgIC8vIFRoaXMgaXMgYWxsIHNh
ZmUgZXZlbiBpZiB3ZSBkaWRuJ3QgaGF2ZSBhIG1hcHBpbmcuCi0gICAgQVhJRCBheElEID0gbV9u
b2RlT2JqZWN0TWFwcGluZy5nZXQobm9kZSk7Ci0gICAgcmVtb3ZlKGF4SUQpOwotICAgIG1fbm9k
ZU9iamVjdE1hcHBpbmcucmVtb3ZlKG5vZGUpOwotCi0gICAgaWYgKG5vZGUtPnJlbmRlcmVyKCkp
IHsKLSAgICAgICAgcmVtb3ZlKG5vZGUtPnJlbmRlcmVyKCkpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotfQotCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShXaWRnZXQqIHZpZXcpCiB7CiAg
ICAgaWYgKCF2aWV3KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2Fj
aGUuaAppbmRleCBiNzY4YjdkZDgwOTZjYzRhMmRlNzhiYjdlOTA2NTc3NzA4YzMxZDhlLi5iYzQ1
OGUxYzIyNWQwYzU3MGQyYmRkZTZmYzllYTIwYWRkZDc3NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNzAsNyArNzAsNiBAQCBwdWJsaWM6
CiAgICAgLy8gRm9yIEFYIG9iamVjdHMgd2l0aCBlbGVtZW50cyB0aGF0IGJhY2sgdGhlbS4KICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqKTsKICAgICBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBnZXRPckNyZWF0ZShXaWRnZXQqKTsKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBnZXRPckNyZWF0ZShOb2RlKik7CiAKICAgICAvLyB1c2VkIGZvciBvYmplY3Rz
IHdpdGhvdXQgYmFja2luZyBlbGVtZW50cwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldE9y
Q3JlYXRlKEFjY2Vzc2liaWxpdHlSb2xlKTsKQEAgLTc4LDEwICs3Nyw4IEBAIHB1YmxpYzoKICAg
ICAvLyB3aWxsIG9ubHkgcmV0dXJuIHRoZSBBY2Nlc3NpYmlsaXR5T2JqZWN0IGlmIGl0IGFscmVh
ZHkgZXhpc3RzCiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogZ2V0KFJlbmRlck9iamVjdCopOwog
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGdldChXaWRnZXQqKTsKLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBnZXQoTm9kZSopOwogICAgIAogICAgIHZvaWQgcmVtb3ZlKFJlbmRlck9iamVjdCop
OwotICAgIHZvaWQgcmVtb3ZlKE5vZGUqKTsKICAgICB2b2lkIHJlbW92ZShXaWRnZXQqKTsKICAg
ICB2b2lkIHJlbW92ZShBWElEKTsKIApAQCAtMTg1LDcgKzE4Miw2IEBAIHByaXZhdGU6CiAgICAg
SGFzaE1hcDxBWElELCBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gPiBtX29iamVjdHM7CiAg
ICAgSGFzaE1hcDxSZW5kZXJPYmplY3QqLCBBWElEPiBtX3JlbmRlck9iamVjdE1hcHBpbmc7CiAg
ICAgSGFzaE1hcDxXaWRnZXQqLCBBWElEPiBtX3dpZGdldE9iamVjdE1hcHBpbmc7Ci0gICAgSGFz
aE1hcDxOb2RlKiwgQVhJRD4gbV9ub2RlT2JqZWN0TWFwcGluZzsKICAgICBIYXNoU2V0PE5vZGUq
PiBtX3RleHRNYXJrZXJOb2RlczsKICAgICBzdGF0aWMgYm9vbCBnQWNjZXNzaWJpbGl0eUVuYWJs
ZWQ7CiAgICAgc3RhdGljIGJvb2wgZ0FjY2Vzc2liaWxpdHlFbmhhbmNlZFVzZXJJbnRlcmZhY2VF
bmFibGVkOwpAQCAtMjA4LDExICsyMDQsOSBAQCBpbmxpbmUgQVhPYmplY3RDYWNoZTo6QVhPYmpl
Y3RDYWNoZShjb25zdCBEb2N1bWVudCogZG9jKSA6IG1fZG9jdW1lbnQoY29uc3RfY2FzdAogaW5s
aW5lIEFYT2JqZWN0Q2FjaGU6On5BWE9iamVjdENhY2hlKCkgeyB9CiBpbmxpbmUgQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UoY29uc3Qg
UGFnZSopIHsgcmV0dXJuIDA7IH0KIGlubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVj
dENhY2hlOjpnZXQoUmVuZGVyT2JqZWN0KikgeyByZXR1cm4gMDsgfQotaW5saW5lIEFjY2Vzc2li
aWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChOb2RlKikgeyByZXR1cm4gMDsgfQogaW5s
aW5lIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6OmdldChXaWRnZXQqKSB7IHJl
dHVybiAwOyB9CiBpbmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6Z2V0
T3JDcmVhdGUoQWNjZXNzaWJpbGl0eVJvbGUpIHsgcmV0dXJuIDA7IH0KIGlubGluZSBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShSZW5kZXJPYmplY3QqKSB7
IHJldHVybiAwOyB9Ci1pbmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6
Z2V0T3JDcmVhdGUoTm9kZSopIHsgcmV0dXJuIDA7IH0KIGlubGluZSBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjpnZXRPckNyZWF0ZShXaWRnZXQqKSB7IHJldHVybiAwOyB9CiBp
bmxpbmUgQWNjZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdE9iamVjdCgpIHsg
cmV0dXJuIDA7IH0KIGlubGluZSBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpy
b290T2JqZWN0Rm9yRnJhbWUoRnJhbWUqKSB7IHJldHVybiAwOyB9CkBAIC0yMzksNyArMjMzLDYg
QEAgaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihSZW5kZXJPYmpl
Y3QqLCBBWE5vdGlmaWNhdGlvbiwgYm9vbAogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9z
dFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqLCBBWE5vdGlmaWNhdGlv
bikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoQVhJRCkgeyB9CiBpbmxp
bmUgdm9pZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoUmVuZGVyT2JqZWN0KikgeyB9Ci1pbmxpbmUg
dm9pZCBBWE9iamVjdENhY2hlOjpyZW1vdmUoTm9kZSopIHsgfQogaW5saW5lIHZvaWQgQVhPYmpl
Y3RDYWNoZTo6cmVtb3ZlKFdpZGdldCopIHsgfQogaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
c2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQoUmVuZGVyT2JqZWN0KikgeyB9CiAjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
LmNwcAppbmRleCA1ZTIxMDZiYWU5YWMwZTU4NDEzNTVjYjc0ZDY0NmIzNDUyNDFjNDhmLi5jYzEy
YzNlMzk5MmYzMDhhNzhiMGRhMTY5ODZlMzhlNzNjNDVjMWRhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3BwCkBAIC00
MywxNSArNDMsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6
OkFjY2Vzc2liaWxpdHlBUklBR3JpZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNj
ZXNzaWJpbGl0eVRhYmxlKHJlbmRlcmVyKQogewotfQotCi1BY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6
On5BY2Nlc3NpYmlsaXR5QVJJQUdyaWQoKQotewotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlBUklB
R3JpZDo6aW5pdCgpCi17Ci0gICAgQWNjZXNzaWJpbGl0eVRhYmxlOjppbml0KCk7CiAjaWYgQUND
RVNTSUJJTElUWV9UQUJMRVMKICAgICBtX2lzQWNjZXNzaWJpbGl0eVRhYmxlID0gdHJ1ZTsKICNl
bHNlCkBAIC01OSwxMSArNTAsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmluaXQo
KQogI2VuZGlmCiB9CiAKK0FjY2Vzc2liaWxpdHlBUklBR3JpZDo6fkFjY2Vzc2liaWxpdHlBUklB
R3JpZCgpCit7Cit9CisKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUFSSUFHcmlkPiBBY2Nlc3Np
YmlsaXR5QVJJQUdyaWQ6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIEFj
Y2Vzc2liaWxpdHlBUklBR3JpZCogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlBUklBR3JpZChyZW5k
ZXJlcik7Ci0gICAgb2JqLT5pbml0KCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7CisgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQocmVuZGVyZXIpKTsKIH0K
IAogYm9vbCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ6OmFkZENoaWxkKEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGNoaWxkLCBIYXNoU2V0PEFjY2Vzc2liaWxpdHlPYmplY3QqPiYgYXBwZW5kZWRSb3dzLCB1
bnNpZ25lZCYgY29sdW1uQ291bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaAppbmRleCAwNjNlMThiYTFmNmVhOGM5ZjMyYmY1
ODczMTc1MzY1MmYzODI3MGVmLi44OWI5MTcyNDBiOGQ0Y2Q4YzIzYWUzOWM1MjFkYzQyODVmMTg2
ZmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBUklBR3JpZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eUFSSUFHcmlkLmgKQEAgLTQ0LDggKzQ0LDYgQEAgcHJpdmF0ZToKIHB1YmxpYzoKICAgICBz
dGF0aWMgUGFzc1JlZlB0cjxBY2Nlc3NpYmlsaXR5QVJJQUdyaWQ+IGNyZWF0ZShSZW5kZXJPYmpl
Y3QqKTsKICAgICB2aXJ0dWFsIH5BY2Nlc3NpYmlsaXR5QVJJQUdyaWQoKTsKLQotICAgIHZpcnR1
YWwgdm9pZCBpbml0KCk7CiAgICAgCiAgICAgdmlydHVhbCBib29sIGlzQXJpYVRhYmxlKCkgY29u
c3QgeyByZXR1cm4gdHJ1ZTsgfSAgICAKICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCmluZGV4IDlk
MTY1ODRlMTZlMzkxMDA5ZjEyNjkyNmYyZDIzNTc0OGUwNjQ0ZTMuLjU1ZDA5YWQ0NzhiNTAyMjgw
MTZmNjRhZjhhMWNjM2FlNzRjMTZmYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcApAQCAtNDgsOSAr
NDgsNyBAQCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsOjp+QWNjZXNzaWJpbGl0eUFSSUFHcmlk
Q2VsbCgpCiAKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbD4gQWNjZXNzaWJp
bGl0eUFSSUFHcmlkQ2VsbDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAg
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbCogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGwocmVuZGVyZXIpOwotICAgIG9iai0+aW5pdCgpOwotICAgIHJldHVybiBhZG9wdFJlZihv
YmopOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbChy
ZW5kZXJlcikpOwogfQogCiBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRDZWxsOjpwYXJlbnRUYWJsZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKaW5kZXggZDMyYmE4
YWY5YzJlMTg4YmRlNjcwOTVhOGI2YjQxNTA1OTVhZDEyYS4uMmI5NjAzNjQ5NGEwMzM4OTFlMTYw
NDI5NjhiYWI1ZmRlMWE1MTgzZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApAQCAtNDgsOSArNDgsNyBA
QCBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3c6On5BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3coKQog
CiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdz4gQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93OjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBBY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3cqIG9iaiA9IG5ldyBBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cocmVuZGVy
ZXIpOwotICAgIG9iai0+aW5pdCgpOwotICAgIHJldHVybiBhZG9wdFJlZihvYmopOworICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93KHJlbmRlcmVyKSk7CiB9
CiAKIGJvb2wgQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93Ojppc0FSSUFUcmVlR3JpZFJvdygpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxp
dHlBbGxJbk9uZS5jcHAKaW5kZXggZTM1MzU1NmY3ZWFhM2E3YTYyNTRhMTIzOTgzYjc5NDZhZTEx
YWQzMS4uYjMyOWFkMDE2MGQ5YjE0ZWQyODhmNzQ2YmFjNWYyYzYwZWM1NTBkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QWxsSW5PbmUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFsbEluT25l
LmNwcApAQCAtMzQsNyArMzQsNiBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlMaXN0Qm94LmNw
cCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5TGlzdEJveE9wdGlvbi5jcHAiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwIgotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCIKICNpbmNsdWRlICJBY2Nlc3NpYmls
aXR5U2Nyb2xsVmlldy5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUxpc3QuY3BwCmluZGV4IDY4MDczMTQxNWIxYzhiNjFhMWUxNTVhOTNmODYx
ZjA1NDNiMzcwYzguLjA3M2IwZmMzNmY5ZjdmMDdkMTFlZGNmZWFkMTNmNWE4ODUyMWQ0M2MgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3Qu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3Qu
Y3BwCkBAIC01MCw5ICs1MCw3IEBAIEFjY2Vzc2liaWxpdHlMaXN0Ojp+QWNjZXNzaWJpbGl0eUxp
c3QoKQogCiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlMaXN0PiBBY2Nlc3NpYmlsaXR5TGlzdDo6
Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eUxpc3Qq
IG9iaiA9IG5ldyBBY2Nlc3NpYmlsaXR5TGlzdChyZW5kZXJlcik7Ci0gICAgb2JqLT5pbml0KCk7
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nl
c3NpYmlsaXR5TGlzdChyZW5kZXJlcikpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlMaXN0Ojph
Y2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUxpc3RCb3guY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKaW5kZXggNjBmODU0NjQyMDIy
MjY5OTZiYjAyMjY1MjE4MTFlNWIyMzcxMGQzOC4uMjJlNWI4MTg1NmY1OTVmOTM0MGZhMTdjNmUx
NWY2NWY2NjRhMTUxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5TGlzdEJveC5jcHAKQEAgLTU0LDkgKzU0LDcgQEAgQWNjZXNzaWJpbGl0
eUxpc3RCb3g6On5BY2Nlc3NpYmlsaXR5TGlzdEJveCgpCiAgICAgCiBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlMaXN0Qm94PiBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6Y3JlYXRlKFJlbmRlck9iamVj
dCogcmVuZGVyZXIpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eUxpc3RCb3gqIG9iaiA9IG5ldyBBY2Nl
c3NpYmlsaXR5TGlzdEJveChyZW5kZXJlcik7Ci0gICAgb2JqLT5pbml0KCk7Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKG9iaik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBY2Nlc3NpYmlsaXR5TGlz
dEJveChyZW5kZXJlcikpOwogfQogICAgIAogYm9vbCBBY2Nlc3NpYmlsaXR5TGlzdEJveDo6Y2Fu
U2V0U2VsZWN0ZWRDaGlsZHJlbkF0dHJpYnV0ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3Bw
CmluZGV4IDk3NzgzMDEzODM0ZmNhZjMxOGI3N2FkYTEwYjIzODE1MzNlMThlNmMuLjU2MzY2OTEz
MjRmYWI0NDZhOTFlZmUzZTMwNjczMDdiNTc1MWYxNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHMuY3Bw
CkBAIC02NywxMSArNjcsOCBAQCBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IEFjY2Vz
c2liaWxpdHlNZWRpYUNvbnRyb2w6OmNyZWF0ZShSZW5kZXJPYmplY3QqCiAgICAgY2FzZSBNZWRp
YUNvbnRyb2xzUGFuZWw6CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9s
c0NvbnRhaW5lcjo6Y3JlYXRlKHJlbmRlcmVyKTsKIAotICAgIGRlZmF1bHQ6IHsKLSAgICAgICAg
QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbCogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2wocmVuZGVyZXIpOwotICAgICAgICBvYmotPmluaXQoKTsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG9iaik7Ci0gICAgICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gYWRv
cHRSZWYobmV3IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2wocmVuZGVyZXIpKTsKICAgICB9CiB9
CiAKQEAgLTIxMCw5ICsyMDcsNyBAQCBBY2Nlc3NpYmlsaXR5TWVkaWFDb250cm9sc0NvbnRhaW5l
cjo6QWNjZXNzaWJpbGl0eU1lZGlhQ29udHJvbHNDb250YWluZXIoUmVuZGVyTwogCiBQYXNzUmVm
UHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRyb2xzQ29udGFp
bmVyOjpjcmVhdGUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIHsKLSAgICBBY2Nlc3NpYmlsaXR5
TWVkaWFDb250cm9sc0NvbnRhaW5lciogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlNZWRpYUNvbnRy
b2xzQ29udGFpbmVyKHJlbmRlcmVyKTsKLSAgICBvYmotPmluaXQoKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob2JqKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlNZWRpYUNv
bnRyb2xzQ29udGFpbmVyKHJlbmRlcmVyKSk7CiB9CiAKIFN0cmluZyBBY2Nlc3NpYmlsaXR5TWVk
aWFDb250cm9sc0NvbnRhaW5lcjo6YWNjZXNzaWJpbGl0eURlc2NyaXB0aW9uKCkgY29uc3QKQEAg
LTI1Niw5ICsyNTEsNyBAQCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZTo6QWNjZXNzaWJpbGl0
eU1lZGlhVGltZWxpbmUoUmVuZGVyT2JqZWN0KiByZW5kZXJlcikKIAogUGFzc1JlZlB0cjxBY2Nl
c3NpYmlsaXR5T2JqZWN0PiBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZTo6Y3JlYXRlKFJlbmRl
ck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eU1lZGlhVGltZWxpbmUqIG9i
aiA9IG5ldyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShyZW5kZXJlcik7Ci0gICAgb2JqLT5p
bml0KCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lbGluZShyZW5kZXJlcikpOwogfQogCiBTdHJpbmcgQWNj
ZXNzaWJpbGl0eU1lZGlhVGltZWxpbmU6OnZhbHVlRGVzY3JpcHRpb24oKSBjb25zdApAQCAtMjg4
LDkgKzI4MSw3IEBAIEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5OjpBY2Nlc3NpYmlsaXR5
TWVkaWFUaW1lRGlzcGxheShSZW5kZXJPYmplY3QqIHJlbmRlCiAKIFBhc3NSZWZQdHI8QWNjZXNz
aWJpbGl0eU9iamVjdD4gQWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXk6OmNyZWF0ZShSZW5k
ZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIEFjY2Vzc2liaWxpdHlNZWRpYVRpbWVEaXNwbGF5
KiBvYmogPSBuZXcgQWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXkocmVuZGVyZXIpOwotICAg
IG9iai0+aW5pdCgpOwotICAgIHJldHVybiBhZG9wdFJlZihvYmopOworICAgIHJldHVybiBhZG9w
dFJlZihuZXcgQWNjZXNzaWJpbGl0eU1lZGlhVGltZURpc3BsYXkocmVuZGVyZXIpKTsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5TWVkaWFUaW1lRGlzcGxheTo6YWNjZXNzaWJpbGl0eUlzSWdub3Jl
ZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlNZW51TGlzdC5jcHAKaW5kZXggZWViZDc4NGM0YzJmNzA0NTk2YjE2ODJjOTQzYjhm
ZDA3Mjk4YjJiYS4uYmFlYzdkMDBjNjRhZjJmYWE1MzVjYzU2YTc0MzkwZDcyZThhYThkNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxp
c3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1l
bnVMaXN0LmNwcApAQCAtMzcsMTMgKzM3LDYgQEAgQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpBY2Nl
c3NpYmlsaXR5TWVudUxpc3QoUmVuZGVyTWVudUxpc3QqIHJlbmRlcmVyKQogewogfQogCi1QYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlNZW51TGlzdD4gQWNjZXNzaWJpbGl0eU1lbnVMaXN0OjpjcmVh
dGUoUmVuZGVyTWVudUxpc3QqIHJlbmRlcmVyKQotewotICAgIEFjY2Vzc2liaWxpdHlNZW51TGlz
dCogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlNZW51TGlzdChyZW5kZXJlcik7Ci0gICAgb2JqLT5p
bml0KCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7Ci19Ci0KIGJvb2wgQWNjZXNzaWJpbGl0
eU1lbnVMaXN0OjpwcmVzcygpIGNvbnN0CiB7CiAgICAgUmVuZGVyTWVudUxpc3QqIG1lbnVMaXN0
ID0gc3RhdGljX2Nhc3Q8UmVuZGVyTWVudUxpc3QqPihtX3JlbmRlcmVyKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlNZW51TGlzdC5oCmluZGV4
IDI4MWQ3MzYyOWE0MjU1NjVmZDc0ZTRiODU1ZTQ2Zjg1MjU2ZWYyMWQuLjA4OWNkYzM3ODJiNTc1
ZGNjNDI1Zjk2NWJlYmUyMTEwZDYxZjBkNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU1lbnVMaXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5TWVudUxpc3QuaApAQCAtMzcsNyArMzcsNyBAQCBj
bGFzcyBSZW5kZXJNZW51TGlzdDsKIAogY2xhc3MgQWNjZXNzaWJpbGl0eU1lbnVMaXN0IDogcHVi
bGljIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgewogcHVibGljOgotICAgIHN0YXRpYyBQYXNz
UmVmUHRyPEFjY2Vzc2liaWxpdHlNZW51TGlzdD4gY3JlYXRlKFJlbmRlck1lbnVMaXN0KiByZW5k
ZXJlcik7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU1lbnVMaXN0PiBjcmVh
dGUoUmVuZGVyTWVudUxpc3QqIHJlbmRlcmVyKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNz
aWJpbGl0eU1lbnVMaXN0KHJlbmRlcmVyKSk7IH0KIAogICAgIHZpcnR1YWwgYm9vbCBpc0NvbGxh
cHNlZCgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBwcmVzcygpIGNvbnN0OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFlYWNhZGVjNDczMjA0NWRiYWY2
ODZhY2NhZDVmZjM3YWVkYTY1NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM4NyArMCwwIEBACi0vKgotKiBDb3B5cmln
aHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0qCi0qIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSogYXJlIG1ldDoKLSoKLSogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0qICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0qIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAotKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSoKLSogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0qIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQKLSogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
Ci0qIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0qLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3QuaCIKLQotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5SW1hZ2VNYXBMaW5rLmgiCi0jaW5jbHVkZSAiQWNjZXNzaWJpbGl0
eUxpc3RCb3guaCIKLSNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5U3BpbkJ1dHRvbi5oIgotI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlUYWJsZS5oIgotI2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKLSNpbmNs
dWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJGcmFtZS5oIgotI2luY2x1ZGUgIkZyYW1lTG9h
ZGVyLmgiCi0jaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKLSNpbmNsdWRlICJGcmFtZVZpZXcu
aCIKLSNpbmNsdWRlICJIVE1MQXJlYUVsZW1lbnQuaCIKLSNpbmNsdWRlICJIVE1MRmllbGRTZXRF
bGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZvcm1FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTEZy
YW1lRWxlbWVudEJhc2UuaCIKLSNpbmNsdWRlICJIVE1MSW1hZ2VFbGVtZW50LmgiCi0jaW5jbHVk
ZSAiSFRNTElucHV0RWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxMYWJlbEVsZW1lbnQuaCIKLSNp
bmNsdWRlICJIVE1MTGVnZW5kRWxlbWVudC5oIgotI2luY2x1ZGUgIkhUTUxNYXBFbGVtZW50Lmgi
Ci0jaW5jbHVkZSAiSFRNTE5hbWVzLmgiCi0jaW5jbHVkZSAiSFRNTE9wdEdyb3VwRWxlbWVudC5o
IgotI2luY2x1ZGUgIkhUTUxPcHRpb25FbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTE9wdGlvbnND
b2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiSFRNTFBsdWdJbkltYWdlRWxlbWVudC5oIgotI2luY2x1
ZGUgIkhUTUxTZWxlY3RFbGVtZW50LmgiCi0jaW5jbHVkZSAiSFRNTFRleHRBcmVhRWxlbWVudC5o
IgotI2luY2x1ZGUgIkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50LmgiCi0jaW5jbHVkZSAiSGl0
VGVzdFJlcXVlc3QuaCIKLSNpbmNsdWRlICJIaXRUZXN0UmVzdWx0LmgiCi0jaW5jbHVkZSAiTG9j
YWxpemVkU3RyaW5ncy5oIgotI2luY2x1ZGUgIk1hdGhNTE5hbWVzLmgiCi0jaW5jbHVkZSAiTm9k
ZUxpc3QuaCIKLSNpbmNsdWRlICJQYWdlLmgiCi0jaW5jbHVkZSAiUHJvZ3Jlc3NUcmFja2VyLmgi
Ci0jaW5jbHVkZSAiVGV4dC5oIgotI2luY2x1ZGUgIlRleHRDb250cm9sSW5uZXJFbGVtZW50cy5o
IgotI2luY2x1ZGUgIlRleHRJdGVyYXRvci5oIgotI2luY2x1ZGUgIldpZGdldC5oIgotI2luY2x1
ZGUgImh0bWxlZGl0aW5nLmgiCi0jaW5jbHVkZSAidmlzaWJsZV91bml0cy5oIgotI2luY2x1ZGUg
PHd0Zi9TdGRMaWJFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
Ci0jaW5jbHVkZSA8d3RmL3VuaWNvZGUvQ2hhcmFjdGVyTmFtZXMuaD4KLQotdXNpbmcgbmFtZXNw
YWNlIHN0ZDsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi11c2luZyBuYW1lc3BhY2UgSFRNTE5h
bWVzOwotCi1BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Qo
Tm9kZSogbm9kZSkKLSAgICA6IEFjY2Vzc2liaWxpdHlPYmplY3QoKQotICAgICwgbV9hcmlhUm9s
ZShVbmtub3duUm9sZSkKLSAgICAsIG1fY2hpbGRyZW5EaXJ0eShmYWxzZSkKLSAgICAsIG1fcm9s
ZUZvck1TQUEoVW5rbm93blJvbGUpCi0gICAgLCBtX25vZGUobm9kZSkKLXsKLX0KLQotQWNjZXNz
aWJpbGl0eU5vZGVPYmplY3Q6On5BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCgpCi17Ci0gICAgQVNT
RVJUKGlzRGV0YWNoZWQoKSk7Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6Omlu
aXQoKQotewotICAgIG1fcm9sZSA9IGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Ci19Ci0K
LVBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q+IEFjY2Vzc2liaWxpdHlOb2RlT2Jq
ZWN0OjpjcmVhdGUoTm9kZSogbm9kZSkKLXsKLSAgICBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdCog
b2JqID0gbmV3IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KG5vZGUpOwotICAgIG9iai0+aW5pdCgp
OwotICAgIHJldHVybiBhZG9wdFJlZihvYmopOwotfQotCi12b2lkIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjpkZXRhY2goKQotewotICAgIGNsZWFyQ2hpbGRyZW4oKTsKLSAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0OjpkZXRhY2goKTsKLSAgICBtX25vZGUgPSAwOwotfQotCi12b2lkIEFjY2Vzc2li
aWxpdHlOb2RlT2JqZWN0OjpjaGlsZHJlbkNoYW5nZWQoKQotewotICAgIC8vIFRoaXMgbWV0aG9k
IGlzIG1lYW50IGFzIGEgcXVpY2sgd2F5IG9mIG1hcmtpbmcgYSBwb3J0aW9uIG9mIHRoZSBhY2Nl
c3NpYmlsaXR5IHRyZWUgZGlydHkuCi0gICAgaWYgKCFub2RlKCkgJiYgIXJlbmRlcmVyKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbih0
aGlzLCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWENoaWxkcmVuQ2hhbmdlZCwgdHJ1ZSk7
Ci0KLSAgICAvLyBHbyB1cCB0aGUgYWNjZXNzaWJpbGl0eSBwYXJlbnQgY2hhaW4sIGJ1dCBvbmx5
IGlmIHRoZSBlbGVtZW50IGFscmVhZHkgZXhpc3RzLiBUaGlzIG1ldGhvZCBpcwotICAgIC8vIGNh
bGxlZCBkdXJpbmcgcmVuZGVyIGxheW91dHMsIG1pbmltYWwgd29yayBzaG91bGQgYmUgZG9uZS4g
Ci0gICAgLy8gSWYgQVggZWxlbWVudHMgYXJlIGNyZWF0ZWQgbm93LCB0aGV5IGNvdWxkIGludGVy
cm9nYXRlIHRoZSByZW5kZXIgdHJlZSB3aGlsZSBpdCdzIGluIGEgZnVua3kgc3RhdGUuCi0gICAg
Ly8gQXQgdGhlIHNhbWUgdGltZSwgcHJvY2VzcyBBUklBIGxpdmUgcmVnaW9uIGNoYW5nZXMuCi0g
ICAgZm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSB0aGlzOyBwYXJlbnQ7IHBhcmVu
dCA9IHBhcmVudC0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSkgewotICAgICAgICBwYXJlbnQtPnNl
dE5lZWRzVG9VcGRhdGVDaGlsZHJlbigpOwotCi0gICAgICAgIC8vIFRoZXNlIG5vdGlmaWNhdGlv
bnMgYWx3YXlzIG5lZWQgdG8gYmUgc2VudCBiZWNhdXNlIHNjcmVlbnJlYWRlcnMgYXJlIHJlbGlh
bnQgb24gdGhlbSB0byBwZXJmb3JtLiAKLSAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMsIHRoZXkg
bmVlZCB0byBiZSBzZW50IGV2ZW4gd2hlbiB0aGUgc2NyZWVuIHJlYWRlciBoYXMgbm90IGFjY2Vz
c2VkIHRoaXMgbGl2ZSByZWdpb24gc2luY2UgdGhlIGxhc3QgdXBkYXRlLgotCi0gICAgICAgIC8v
IElmIHRoaXMgZWxlbWVudCBzdXBwb3J0cyBBUklBIGxpdmUgcmVnaW9ucywgdGhlbiBub3RpZnkg
dGhlIEFUIG9mIGNoYW5nZXMuCi0gICAgICAgIGlmIChwYXJlbnQtPnN1cHBvcnRzQVJJQUxpdmVS
ZWdpb24oKSkKLSAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihw
YXJlbnQsIHBhcmVudC0+ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhMaXZlUmVnaW9uQ2hh
bmdlZCwgdHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgYW4g
QVJJQSB0ZXh0IGNvbnRyb2wsIG5vdGlmeSB0aGUgQVQgb2YgY2hhbmdlcy4KLSAgICAgICAgaWYg
KHBhcmVudC0+aXNBUklBVGV4dENvbnRyb2woKSAmJiAhcGFyZW50LT5pc05hdGl2ZVRleHRDb250
cm9sKCkgJiYgIXBhcmVudC0+bm9kZSgpLT5yZW5kZXJlcklzRWRpdGFibGUoKSkKLSAgICAgICAg
ICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihwYXJlbnQsIHBhcmVudC0+ZG9j
dW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOwotICAgIH0KLX0K
LQotdm9pZCBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6dXBkYXRlQWNjZXNzaWJpbGl0eVJvbGUo
KQotewotICAgIGJvb2wgaWdub3JlZFN0YXR1cyA9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsK
LSAgICBtX3JvbGUgPSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOwotICAgIAotICAgIC8v
IFRoZSBBWCBoaWVyYXJjaHkgb25seSBuZWVkcyB0byBiZSB1cGRhdGVkIGlmIHRoZSBpZ25vcmVk
IHN0YXR1cyBvZiBhbiBlbGVtZW50IGhhcyBjaGFuZ2VkLgotICAgIGlmIChpZ25vcmVkU3RhdHVz
ICE9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKLSAgICAgICAgY2hpbGRyZW5DaGFuZ2VkKCk7
Ci19Ci0gICAgCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6
Zmlyc3RDaGlsZCgpIGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKCkpCi0gICAgICAgIHJldHVybiAw
OwotICAgIAotICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBub2RlKCktPmZpcnN0Q2hpbGQoKTsKLQot
ICAgIGlmICghZmlyc3RDaGlsZCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgCi0gICAgcmV0dXJu
IGF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZmlyc3RDaGlsZCk7Ci19Ci0KLUFjY2Vzc2li
aWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpsYXN0Q2hpbGQoKSBjb25zdAot
ewotICAgIGlmICghbm9kZSgpKQotICAgICAgICByZXR1cm4gMDsKLSAgICAKLSAgICBOb2RlKiBs
YXN0Q2hpbGQgPSBub2RlKCktPmxhc3RDaGlsZCgpOwotICAgIGlmICghbGFzdENoaWxkKQotICAg
ICAgICByZXR1cm4gMDsKLSAgICAKLSAgICByZXR1cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNy
ZWF0ZShsYXN0Q2hpbGQpOwotfQotCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdDo6cHJldmlvdXNTaWJsaW5nKCkgY29uc3QKLXsKLSAgICBpZiAoIW5vZGUoKSkK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICBOb2RlKiBwcmV2aW91c1NpYmxpbmcgPSBub2RlKCkt
PnByZXZpb3VzU2libGluZygpOwotICAgIGlmICghcHJldmlvdXNTaWJsaW5nKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHByZXZp
b3VzU2libGluZyk7Ci19Ci0KLUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0OjpuZXh0U2libGluZygpIGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKCkpCi0gICAgICAg
IHJldHVybiAwOwotCi0gICAgTm9kZSogbmV4dFNpYmxpbmcgPSBub2RlKCktPm5leHRTaWJsaW5n
KCk7Ci0gICAgaWYgKCFuZXh0U2libGluZykKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1
cm4gYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShuZXh0U2libGluZyk7Ci19Ci0gICAgCi1B
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cGFyZW50T2JqZWN0
SWZFeGlzdHMoKSBjb25zdAotewotICAgIHJldHVybiBwYXJlbnRPYmplY3QoKTsKLX0KLSAgICAK
LUFjY2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpwYXJlbnRPYmpl
Y3QoKSBjb25zdAotewotICAgIGlmICghbm9kZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAg
IE5vZGUqIHBhcmVudE9iaiA9IG5vZGUoKS0+cGFyZW50Tm9kZSgpOwotICAgIGlmIChwYXJlbnRP
YmopCi0gICAgICAgIHJldHVybiBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHBhcmVudE9i
aik7Ci0gICAgCi0gICAgcmV0dXJuIDA7Ci19Ci0KLUxheW91dFJlY3QgQWNjZXNzaWJpbGl0eU5v
ZGVPYmplY3Q6OmVsZW1lbnRSZWN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gYm91bmRpbmdCb3hS
ZWN0KCk7Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OnNldE5vZGUoTm9kZSog
bm9kZSkKLXsKLSAgICBtX25vZGUgPSBub2RlOwotfQotCi1Eb2N1bWVudCogQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3Q6OmRvY3VtZW50KCkgY29uc3QKLXsKLSAgICBpZiAoIW5vZGUoKSkKLSAgICAg
ICAgcmV0dXJuIDA7Ci0gICAgcmV0dXJuIG5vZGUoKS0+ZG9jdW1lbnQoKTsKLX0KLQotQWNjZXNz
aWJpbGl0eVJvbGUgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGVybWluZUFjY2Vzc2liaWxp
dHlSb2xlKCkKLXsKLSAgICBpZiAoIW5vZGUoKSkKLSAgICAgICAgcmV0dXJuIFVua25vd25Sb2xl
OwotCi0gICAgbV9hcmlhUm9sZSA9IGRldGVybWluZUFyaWFSb2xlQXR0cmlidXRlKCk7Ci0gICAg
Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGUgPSBhcmlhUm9sZUF0dHJpYnV0ZSgpOwot
ICAgIGlmIChhcmlhUm9sZSAhPSBVbmtub3duUm9sZSkKLSAgICAgICAgcmV0dXJuIGFyaWFSb2xl
OwotCi0gICAgaWYgKG5vZGUoKS0+aXNMaW5rKCkpCi0gICAgICAgIHJldHVybiBXZWJDb3JlTGlu
a1JvbGU7Ci0gICAgaWYgKG5vZGUoKS0+aXNUZXh0Tm9kZSgpKQotICAgICAgICByZXR1cm4gU3Rh
dGljVGV4dFJvbGU7Ci0gICAgaWYgKG5vZGUoKS0+aGFzVGFnTmFtZShidXR0b25UYWcpKQotICAg
ICAgICByZXR1cm4gYXJpYUhhc1BvcHVwKCkgPyBQb3BVcEJ1dHRvblJvbGUgOiBCdXR0b25Sb2xl
OwotICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoaW5wdXRUYWcpKSB7Ci0gICAgICAgIEhUTUxJ
bnB1dEVsZW1lbnQqIGlucHV0ID0gc3RhdGljX2Nhc3Q8SFRNTElucHV0RWxlbWVudCo+KG5vZGUo
KSk7Ci0gICAgICAgIGlmIChpbnB1dC0+aXNDaGVja2JveCgpKQotICAgICAgICAgICAgcmV0dXJu
IENoZWNrQm94Um9sZTsKLSAgICAgICAgaWYgKGlucHV0LT5pc1JhZGlvQnV0dG9uKCkpCi0gICAg
ICAgICAgICByZXR1cm4gUmFkaW9CdXR0b25Sb2xlOwotICAgICAgICBpZiAoaW5wdXQtPmlzVGV4
dEJ1dHRvbigpKQotICAgICAgICAgICAgcmV0dXJuIGFyaWFIYXNQb3B1cCgpID8gUG9wVXBCdXR0
b25Sb2xlIDogQnV0dG9uUm9sZTsKLSAgICAgICAgcmV0dXJuIFRleHRGaWVsZFJvbGU7Ci0gICAg
fQotICAgIGlmIChub2RlKCktPmhhc1RhZ05hbWUoc2VsZWN0VGFnKSkgewotICAgICAgICBIVE1M
U2VsZWN0RWxlbWVudCogc2VsZWN0RWxlbWVudCA9IHRvSFRNTFNlbGVjdEVsZW1lbnQobm9kZSgp
KTsKLSAgICAgICAgcmV0dXJuIHNlbGVjdEVsZW1lbnQtPm11bHRpcGxlKCkgPyBMaXN0Um9sZSA6
IFBvcFVwQnV0dG9uUm9sZTsKLSAgICB9Ci0gICAgaWYgKG5vZGUoKS0+aXNGb2N1c2FibGUoKSkK
LSAgICAgICAgcmV0dXJuIEdyb3VwUm9sZTsKLSAgICAKLSAgICByZXR1cm4gVW5rbm93blJvbGU7
Ci19Ci0KLXZvaWQgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmFkZENoaWxkcmVuKCkKLXsKLSAg
ICAvLyBJZiB0aGUgbmVlZCB0byBhZGQgbW9yZSBjaGlsZHJlbiBpbiBhZGRpdGlvbiB0byBleGlz
dGluZyBjaGlsZHJlbiBhcmlzZXMsIAotICAgIC8vIGNoaWxkcmVuQ2hhbmdlZCBzaG91bGQgaGF2
ZSBiZWVuIGNhbGxlZCwgbGVhdmluZyB0aGUgb2JqZWN0IHdpdGggbm8gY2hpbGRyZW4uCi0gICAg
QVNTRVJUKCFtX2hhdmVDaGlsZHJlbik7IAotICAgIAotICAgIGlmICghbV9ub2RlKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICAvLyBUaGUgb25seSB0aW1lIHdlIGFkZCBjaGlsZHJlbiBmcm9tIHRo
ZSBET00gdHJlZSB0byBhIG5vZGUgd2l0aCBhIHJlbmRlcmVyIGlzIHdoZW4gaXQncyBhIGNhbnZh
cy4KLSAgICBpZiAocmVuZGVyZXIoKSAmJiAhbV9ub2RlLT5oYXNUYWdOYW1lKGNhbnZhc1RhZykp
Ci0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBtX2hhdmVDaGlsZHJlbiA9IHRydWU7Ci0KLSAg
ICBmb3IgKE5vZGUqIGNoaWxkID0gbV9ub2RlLT5maXJzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9
IGNoaWxkLT5uZXh0U2libGluZygpKSB7Ci0gICAgICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2Jq
ZWN0PiBvYmogPSBheE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGNoaWxkKTsKLSAgICAgICAg
b2JqLT5jbGVhckNoaWxkcmVuKCk7Ci0gICAgICAgIGlmIChvYmotPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkgewotICAgICAgICAgICAgQWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdG9yIGNoaWxk
cmVuID0gb2JqLT5jaGlsZHJlbigpOwotICAgICAgICAgICAgc2l6ZV90IGxlbmd0aCA9IGNoaWxk
cmVuLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICAgICAgbV9jaGlsZHJlbi5hcHBlbmQoY2hpbGRyZW5baV0pOwotICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgQVNTRVJUKG9iai0+cGFyZW50T2JqZWN0KCkgPT0g
dGhpcyk7Ci0gICAgICAgICAgICBtX2NoaWxkcmVuLmFwcGVuZChvYmopOwotICAgICAgICB9Ci0g
ICAgfQotfQotCi1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9yb2xlID09IFVua25vd25Sb2xlOwotfQot
Ci1ib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpIGNv
bnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9IHRoaXMtPm5vZGUoKTsKLQotICAgIGlmIChpc1dlYkFy
ZWEoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgCi0gICAgLy8gTk9URTogSXQgd291bGQg
YmUgbW9yZSBhY2N1cmF0ZSB0byBhc2sgdGhlIGRvY3VtZW50IHdoZXRoZXIgc2V0Rm9jdXNlZE5v
ZGUoKSB3b3VsZAotICAgIC8vIGRvIGFueXRoaW5nLiBGb3IgZXhhbXBsZSwgc2V0Rm9jdXNlZE5v
ZGUoKSB3aWxsIGRvIG5vdGhpbmcgaWYgdGhlIGN1cnJlbnQgZm9jdXNlZAotICAgIC8vIG5vZGUg
d2lsbCBub3QgcmVsaW5xdWlzaCB0aGUgZm9jdXMuCi0gICAgaWYgKCFub2RlKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAobm9kZS0+aXNFbGVtZW50Tm9kZSgpICYmICFzdGF0aWNf
Y2FzdDxFbGVtZW50Kj4obm9kZSktPmlzRW5hYmxlZEZvcm1Db250cm9sKCkpCi0gICAgICAgIHJl
dHVybiBmYWxzZTsKLQotICAgIHJldHVybiBub2RlLT5zdXBwb3J0c0ZvY3VzKCk7Ci19Ci0KLUFj
Y2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpkZXRlcm1pbmVBcmlhUm9s
ZUF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgY29uc3QgQXRvbWljU3RyaW5nJiBhcmlhUm9sZSA9
IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7Ci0gICAgaWYgKGFyaWFSb2xlLmlzTnVsbCgpIHx8IGFy
aWFSb2xlLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFVua25vd25Sb2xlOwotICAgIAotICAg
IEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlhUm9sZVRvV2ViQ29yZVJvbGUoYXJpYVJvbGUp
OwotCi0gICAgLy8gQVJJQSBzdGF0ZXMgaWYgYW4gaXRlbSBjYW4gZ2V0IGZvY3VzLCBpdCBzaG91
bGQgbm90IGJlIHByZXNlbnRhdGlvbmFsLgotICAgIGlmIChyb2xlID09IFByZXNlbnRhdGlvbmFs
Um9sZSAmJiBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQotICAgICAgICByZXR1cm4gVW5rbm93blJv
bGU7Ci0gICAgCi0gICAgaWYgKHJvbGUgPT0gQnV0dG9uUm9sZSAmJiBhcmlhSGFzUG9wdXAoKSkK
LSAgICAgICAgcm9sZSA9IFBvcFVwQnV0dG9uUm9sZTsKLQotICAgIGlmIChyb2xlID09IFRleHRB
cmVhUm9sZSAmJiAhYXJpYUlzTXVsdGlsaW5lKCkpCi0gICAgICAgIHJvbGUgPSBUZXh0RmllbGRS
b2xlOwotCi0gICAgcm9sZSA9IHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChyb2xlKTsKLSAgICAK
LSAgICBpZiAocm9sZSkKLSAgICAgICAgcmV0dXJuIHJvbGU7Ci0KLSAgICByZXR1cm4gVW5rbm93
blJvbGU7Ci19Ci0KLUFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojph
cmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1fYXJpYVJvbGU7Ci19Ci0K
LUFjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0OjpyZW1hcEFyaWFSb2xl
RHVlVG9QYXJlbnQoQWNjZXNzaWJpbGl0eVJvbGUgcm9sZSkgY29uc3QKLXsKLSAgICAvLyBTb21l
IG9iamVjdHMgY2hhbmdlIHRoZWlyIHJvbGUgYmFzZWQgb24gdGhlaXIgcGFyZW50LgotICAgIC8v
IEhvd2V2ZXIsIGFza2luZyBmb3IgdGhlIHVuaWdub3JlZFBhcmVudCBjYWxscyBhY2Nlc3NpYmls
aXR5SXNJZ25vcmVkKCksIHdoaWNoIGNhbiB0cmlnZ2VyIGEgbG9vcC4gCi0gICAgLy8gV2hpbGUg
aW5zaWRlIHRoZSBjYWxsIHN0YWNrIG9mIGNyZWF0aW5nIGFuIGVsZW1lbnQsIHdlIG5lZWQgdG8g
YXZvaWQgYWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpLgotICAgIC8vIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NTE3NAotCi0gICAgaWYgKHJvbGUgIT0gTGlzdEJveE9w
dGlvblJvbGUgJiYgcm9sZSAhPSBNZW51SXRlbVJvbGUpCi0gICAgICAgIHJldHVybiByb2xlOwot
ICAgIAotICAgIGZvciAoQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0
KCk7IHBhcmVudCAmJiAhcGFyZW50LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCk7IHBhcmVudCA9
IHBhcmVudC0+cGFyZW50T2JqZWN0KCkpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eVJvbGUgcGFy
ZW50QXJpYVJvbGUgPSBwYXJlbnQtPmFyaWFSb2xlQXR0cmlidXRlKCk7Ci0KLSAgICAgICAgLy8g
U2VsZWN0cyBhbmQgbGlzdGJveGVzIGJvdGggaGF2ZSBvcHRpb25zIGFzIGNoaWxkIHJvbGVzLCBi
dXQgdGhleSBtYXAgdG8gZGlmZmVyZW50IHJvbGVzIHdpdGhpbiBXZWJDb3JlLgotICAgICAgICBp
ZiAocm9sZSA9PSBMaXN0Qm94T3B0aW9uUm9sZSAmJiBwYXJlbnRBcmlhUm9sZSA9PSBNZW51Um9s
ZSkKLSAgICAgICAgICAgIHJldHVybiBNZW51SXRlbVJvbGU7Ci0gICAgICAgIC8vIEFuIGFyaWEg
Im1lbnVpdGVtIiBtYXkgbWFwIHRvIE1lbnVCdXR0b24gb3IgTWVudUl0ZW0gZGVwZW5kaW5nIG9u
IGl0cyBwYXJlbnQuCi0gICAgICAgIGlmIChyb2xlID09IE1lbnVJdGVtUm9sZSAmJiBwYXJlbnRB
cmlhUm9sZSA9PSBHcm91cFJvbGUpCi0gICAgICAgICAgICByZXR1cm4gTWVudUJ1dHRvblJvbGU7
Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgcGFyZW50IGhhZCBhIGRpZmZlcmVudCByb2xl
LCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY29udGludWUgc2VhcmNoaW5nIHVwIHRoZSBjaGFpbi4K
LSAgICAgICAgaWYgKHBhcmVudEFyaWFSb2xlKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgfQot
ICAgIAotICAgIHJldHVybiByb2xlOwotfSAgIAotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwODJmOGJiY2ZiMzIwZGI5
NjU2MDAwM2ZjNzg4MWM1ZDQ3ZWM5Y2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
Tm9kZU9iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTIzICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTIsIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBB
Y2Nlc3NpYmlsaXR5Tm9kZU9iamVjdF9oCi0jZGVmaW5lIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
X2gKLQotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKLSNpbmNsdWRlICJMYXlvdXRU
eXBlcy5oIgotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsK
LSAgICAKLWNsYXNzIEFYT2JqZWN0Q2FjaGU7Ci1jbGFzcyBFbGVtZW50OwotY2xhc3MgRnJhbWU7
Ci1jbGFzcyBGcmFtZVZpZXc7Ci1jbGFzcyBIaXRUZXN0UmVzdWx0OwotY2xhc3MgSFRNTEFuY2hv
ckVsZW1lbnQ7Ci1jbGFzcyBIVE1MQXJlYUVsZW1lbnQ7Ci1jbGFzcyBIVE1MRWxlbWVudDsKLWNs
YXNzIEhUTUxMYWJlbEVsZW1lbnQ7Ci1jbGFzcyBIVE1MTWFwRWxlbWVudDsKLWNsYXNzIEhUTUxT
ZWxlY3RFbGVtZW50OwotY2xhc3MgSW50UG9pbnQ7Ci1jbGFzcyBJbnRTaXplOwotY2xhc3MgTm9k
ZTsKLWNsYXNzIFJlbmRlckxpc3RCb3g7Ci1jbGFzcyBSZW5kZXJUZXh0Q29udHJvbDsKLWNsYXNz
IFJlbmRlclZpZXc7Ci1jbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwotY2xhc3MgV2lkZ2V0OwotICAg
IAotY2xhc3MgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU9i
amVjdCB7Ci1wcm90ZWN0ZWQ6Ci0gICAgQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoTm9kZSopOwot
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0PiBj
cmVhdGUoTm9kZSopOwotICAgIHZpcnR1YWwgfkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KCk7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpOwotICAgIAotICAgIHZpcnR1YWwgYm9vbCBpc0FjY2Vz
c2liaWxpdHlOb2RlT2JqZWN0KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgdmlydHVh
bCBib29sIGNhblNldEZvY3VzQXR0cmlidXRlKCkgY29uc3Q7Ci0gICAgCi0gICAgdmlydHVhbCBB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Q7Ci0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHByZXZpb3VzU2libGluZygpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogbmV4dFNpYmxpbmcoKSBjb25zdDsKLSAgICB2aXJ0dWFsIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJp
bGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZFeGlzdHMoKSBjb25zdDsKLQotICAgIHZvaWQgc2V0
Tm9kZShOb2RlKik7Ci0gICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9u
b2RlOyB9Ci0gICAgdmlydHVhbCBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKLQotICAgIHZp
cnR1YWwgdm9pZCBkZXRhY2goKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKCk7
Ci0gICAgdm9pZCB1cGRhdGVBY2Nlc3NpYmlsaXR5Um9sZSgpOwotCi0gICAgdmlydHVhbCBMYXlv
dXRSZWN0IGVsZW1lbnRSZWN0KCkgY29uc3Q7Ci0KLXByb3RlY3RlZDoKLSAgICBBY2Nlc3NpYmls
aXR5Um9sZSBtX2FyaWFSb2xlOwotICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwotICAgIG11dGFi
bGUgQWNjZXNzaWJpbGl0eVJvbGUgbV9yb2xlRm9yTVNBQTsKLQotICAgIHZpcnR1YWwgYm9vbCBp
c0RldGFjaGVkKCkgY29uc3QgeyByZXR1cm4gIW1fbm9kZTsgfQotCi0gICAgdmlydHVhbCBBY2Nl
c3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5Um9sZSgpOwotICAgIHZpcnR1YWwg
dm9pZCBhZGRDaGlsZHJlbigpOwotICAgIHZpcnR1YWwgYm9vbCBhY2Nlc3NpYmlsaXR5SXNJZ25v
cmVkKCkgY29uc3Q7Ci0gICAgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1dGUoKSBj
b25zdDsKLSAgICBBY2Nlc3NpYmlsaXR5Um9sZSBkZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgp
IGNvbnN0OwotICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChB
Y2Nlc3NpYmlsaXR5Um9sZSkgY29uc3Q7Ci0KLXByaXZhdGU6Ci0gICAgTm9kZSogbV9ub2RlOwot
fTsKLQotaW5saW5lIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KiB0b0FjY2Vzc2liaWxpdHlOb2Rl
T2JqZWN0KEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKLXsKLSAgICBBU1NFUlQoIW9iamVj
dCB8fCBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Kj4ob2JqZWN0KTsKLX0KLQotaW5saW5l
IGNvbnN0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KiB0b0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKLXsKLSAgICBBU1NFUlQoIW9iamVj
dCB8fCBvYmplY3QtPmlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSk7Ci0gICAgcmV0dXJuIHN0
YXRpY19jYXN0PGNvbnN0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Kj4ob2JqZWN0KTsKLX0KLQot
Ly8gVGhpcyB3aWxsIGNhdGNoIGFueW9uZSBkb2luZyBhbiB1bm5lY2Vzc2FyeSBjYXN0Lgotdm9p
ZCB0b0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0
Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEFjY2Vzc2liaWxpdHlO
b2RlT2JqZWN0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0LmgKaW5kZXggODhiMWYzOTA5MjVlZGNmNGRiMGQ2OTcwN2NlNjZkMDkyMjFm
NzI0MS4uNjQ5ZGRkNzBjNGQ1YmFmYmE1ZWNlOThhMTIzZjA3ZTA2YWU5ODM1MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAg
LTMxNyw3ICszMTcsNiBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8QWNj
ZXNzaWJpbGl0eU9iamVjdD4gPiBBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3I7CiAgICAgCi0g
ICAgdmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eU5vZGVPYmplY3QoKSBjb25zdCB7IHJldHVy
biBmYWxzZTsgfSAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNBY2Nlc3Np
YmlsaXR5U2Nyb2xsYmFyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJv
b2wgaXNBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlQcm9n
cmVzc0luZGljYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlQcm9ncmVzc0luZGljYXRvci5jcHAKaW5kZXggZjU3ZWQwYThiYTk1ZWQzZmEyZDU0OGYy
MTM5MjA3Yzk4YTUwMjA5NS4uYzcyMDJmMDlkMDJiZjk3YmU1Yjc4ZDE2YzI4NmI4NmU0N2YyYjcz
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UHJvZ3Jlc3NJbmRpY2F0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yLmNwcApAQCAtNDEsOSArNDEsNyBAQCBBY2Nl
c3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OkFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRv
cihSZW5kZXJQcm9ncmVzcyogcgogCiBQYXNzUmVmUHRyPEFjY2Vzc2liaWxpdHlQcm9ncmVzc0lu
ZGljYXRvcj4gQWNjZXNzaWJpbGl0eVByb2dyZXNzSW5kaWNhdG9yOjpjcmVhdGUoUmVuZGVyUHJv
Z3Jlc3MqIHJlbmRlcmVyKQogewotICAgIEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvciog
b2JqID0gbmV3IEFjY2Vzc2liaWxpdHlQcm9ncmVzc0luZGljYXRvcihyZW5kZXJlcik7Ci0gICAg
b2JqLT5pbml0KCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7CisgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3IocmVuZGVyZXIpKTsKIH0KIAog
Ym9vbCBBY2Nlc3NpYmlsaXR5UHJvZ3Jlc3NJbmRpY2F0b3I6OmFjY2Vzc2liaWxpdHlJc0lnbm9y
ZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKaW5kZXggZTA4ZmEyMjA4NWZjNzhlOTA2YmU5
NmJjOGYzYTQ3M2YwZDk4ZmExYS4uMzFlNjRlN2RjNzE3YjhiYjlkMmIwNTI4MTRhOTc1OWQwODdm
MmQ4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCkBAIC05Myw5ICs5MywxNCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogCiBBY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KFJlbmRlck9iamVjdCogcmVuZGVy
ZXIpCi0gICAgOiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdChyZW5kZXJlci0+bm9kZSgpKQorICAg
IDogQWNjZXNzaWJpbGl0eU9iamVjdCgpCiAgICAgLCBtX3JlbmRlcmVyKHJlbmRlcmVyKQorICAg
ICwgbV9hcmlhUm9sZShVbmtub3duUm9sZSkKKyAgICAsIG1fY2hpbGRyZW5EaXJ0eShmYWxzZSkK
KyAgICAsIG1fcm9sZUZvck1TQUEoVW5rbm93blJvbGUpCiB7CisgICAgbV9yb2xlID0gZGV0ZXJt
aW5lQWNjZXNzaWJpbGl0eVJvbGUoKTsKKwogI2lmbmRlZiBOREVCVUcKICAgICBtX3JlbmRlcmVy
LT5zZXRIYXNBWE9iamVjdCh0cnVlKTsKICNlbmRpZgpAQCAtMTA2LDI3ICsxMTEsMjEgQEAgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6fkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKQogICAg
IEFTU0VSVChpc0RldGFjaGVkKCkpOwogfQogCi12b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OmluaXQoKQotewotICAgIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppbml0KCk7Ci19Ci0K
IFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdD4gQWNjZXNzaWJpbGl0eVJlbmRl
ck9iamVjdDo6Y3JlYXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdCogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QocmVu
ZGVyZXIpOwotICAgIG9iai0+aW5pdCgpOwotICAgIHJldHVybiBhZG9wdFJlZihvYmopOworICAg
IHJldHVybiBhZG9wdFJlZihuZXcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChyZW5kZXJlcikp
OwogfQogCiB2b2lkIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmRldGFjaCgpCiB7Ci0gICAg
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3Q6OmRldGFjaCgpOworICAgIGNsZWFyQ2hpbGRyZW4oKTsK
KyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpkZXRhY2goKTsKICAgICAKICNpZm5kZWYgTkRFQlVH
CiAgICAgaWYgKG1fcmVuZGVyZXIpCiAgICAgICAgIG1fcmVuZGVyZXItPnNldEhhc0FYT2JqZWN0
KGZhbHNlKTsKICNlbmRpZgotICAgIG1fcmVuZGVyZXIgPSAwOworICAgIG1fcmVuZGVyZXIgPSAw
OyAgICAKIH0KIAogUmVuZGVyQm94TW9kZWxPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmpl
Y3Q6OnJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29uc3QKQEAgLTEzNiwxMiArMTM1LDYgQEAgUmVu
ZGVyQm94TW9kZWxPYmplY3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbmRlckJveE1v
ZGVsT2JqZWN0KCkgY29uc3QKICAgICByZXR1cm4gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChtX3Jl
bmRlcmVyKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRSZW5kZXJl
cihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQotewotICAgIG1fcmVuZGVyZXIgPSByZW5kZXJlcjsK
LSAgICBzZXROb2RlKHJlbmRlcmVyLT5ub2RlKCkpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wg
aXNJbmxpbmVXaXRoQ29udGludWF0aW9uKFJlbmRlck9iamVjdCogb2JqZWN0KQogewogICAgIGlm
ICghb2JqZWN0LT5pc0JveE1vZGVsT2JqZWN0KCkpCkBAIC0zMDkxLDYgKzMwODQsNzUgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6b2JzZXJ2YWJsZU9i
amVjdCgpIGNvbnN0CiAgICAgcmV0dXJuIDA7CiB9CiAKK0FjY2Vzc2liaWxpdHlSb2xlIEFjY2Vz
c2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbWFwQXJpYVJvbGVEdWVUb1BhcmVudChBY2Nlc3NpYmls
aXR5Um9sZSByb2xlKSBjb25zdAoreworICAgIC8vIFNvbWUgb2JqZWN0cyBjaGFuZ2UgdGhlaXIg
cm9sZSBiYXNlZCBvbiB0aGVpciBwYXJlbnQuCisgICAgLy8gSG93ZXZlciwgYXNraW5nIGZvciB0
aGUgdW5pZ25vcmVkUGFyZW50IGNhbGxzIGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSwgd2hpY2gg
Y2FuIHRyaWdnZXIgYSBsb29wLiAKKyAgICAvLyBXaGlsZSBpbnNpZGUgdGhlIGNhbGwgc3RhY2sg
b2YgY3JlYXRpbmcgYW4gZWxlbWVudCwgd2UgbmVlZCB0byBhdm9pZCBhY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkuCisgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTY1MTc0CisKKyAgICBpZiAocm9sZSAhPSBMaXN0Qm94T3B0aW9uUm9sZSAmJiByb2xlICE9IE1l
bnVJdGVtUm9sZSkKKyAgICAgICAgcmV0dXJuIHJvbGU7CisgICAgCisgICAgZm9yIChBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBwYXJlbnQgPSBwYXJlbnRPYmplY3QoKTsgcGFyZW50ICYmICFwYXJlbnQt
PmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3Qo
KSkgeworICAgICAgICBBY2Nlc3NpYmlsaXR5Um9sZSBwYXJlbnRBcmlhUm9sZSA9IHBhcmVudC0+
YXJpYVJvbGVBdHRyaWJ1dGUoKTsKKworICAgICAgICAvLyBTZWxlY3RzIGFuZCBsaXN0Ym94ZXMg
Ym90aCBoYXZlIG9wdGlvbnMgYXMgY2hpbGQgcm9sZXMsIGJ1dCB0aGV5IG1hcCB0byBkaWZmZXJl
bnQgcm9sZXMgd2l0aGluIFdlYkNvcmUuCisgICAgICAgIGlmIChyb2xlID09IExpc3RCb3hPcHRp
b25Sb2xlICYmIHBhcmVudEFyaWFSb2xlID09IE1lbnVSb2xlKQorICAgICAgICAgICAgcmV0dXJu
IE1lbnVJdGVtUm9sZTsKKyAgICAgICAgLy8gQW4gYXJpYSAibWVudWl0ZW0iIG1heSBtYXAgdG8g
TWVudUJ1dHRvbiBvciBNZW51SXRlbSBkZXBlbmRpbmcgb24gaXRzIHBhcmVudC4KKyAgICAgICAg
aWYgKHJvbGUgPT0gTWVudUl0ZW1Sb2xlICYmIHBhcmVudEFyaWFSb2xlID09IEdyb3VwUm9sZSkK
KyAgICAgICAgICAgIHJldHVybiBNZW51QnV0dG9uUm9sZTsKKyAgICAgICAgCisgICAgICAgIC8v
IElmIHRoZSBwYXJlbnQgaGFkIGEgZGlmZmVyZW50IHJvbGUsIHRoZW4gd2UgZG9uJ3QgbmVlZCB0
byBjb250aW51ZSBzZWFyY2hpbmcgdXAgdGhlIGNoYWluLgorICAgICAgICBpZiAocGFyZW50QXJp
YVJvbGUpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJvbGU7
Cit9CisgICAgCitBY2Nlc3NpYmlsaXR5Um9sZSBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojpk
ZXRlcm1pbmVBcmlhUm9sZUF0dHJpYnV0ZSgpIGNvbnN0Cit7CisgICAgY29uc3QgQXRvbWljU3Ry
aW5nJiBhcmlhUm9sZSA9IGdldEF0dHJpYnV0ZShyb2xlQXR0cik7CisgICAgaWYgKGFyaWFSb2xl
LmlzTnVsbCgpIHx8IGFyaWFSb2xlLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIFVua25vd25S
b2xlOworICAgIAorICAgIEFjY2Vzc2liaWxpdHlSb2xlIHJvbGUgPSBhcmlhUm9sZVRvV2ViQ29y
ZVJvbGUoYXJpYVJvbGUpOworCisgICAgLy8gQVJJQSBzdGF0ZXMgaWYgYW4gaXRlbSBjYW4gZ2V0
IGZvY3VzLCBpdCBzaG91bGQgbm90IGJlIHByZXNlbnRhdGlvbmFsLgorICAgIGlmIChyb2xlID09
IFByZXNlbnRhdGlvbmFsUm9sZSAmJiBjYW5TZXRGb2N1c0F0dHJpYnV0ZSgpKQorICAgICAgICBy
ZXR1cm4gVW5rbm93blJvbGU7CisgICAgCisgICAgaWYgKHJvbGUgPT0gQnV0dG9uUm9sZSAmJiBh
cmlhSGFzUG9wdXAoKSkKKyAgICAgICAgcm9sZSA9IFBvcFVwQnV0dG9uUm9sZTsKKworICAgIGlm
IChyb2xlID09IFRleHRBcmVhUm9sZSAmJiAhYXJpYUlzTXVsdGlsaW5lKCkpCisgICAgICAgIHJv
bGUgPSBUZXh0RmllbGRSb2xlOworCisgICAgcm9sZSA9IHJlbWFwQXJpYVJvbGVEdWVUb1BhcmVu
dChyb2xlKTsKKyAgICAKKyAgICBpZiAocm9sZSkKKyAgICAgICAgcmV0dXJuIHJvbGU7CisKKyAg
ICByZXR1cm4gVW5rbm93blJvbGU7Cit9CisKK0FjY2Vzc2liaWxpdHlSb2xlIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmFyaWFSb2xlQXR0cmlidXRlKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
bV9hcmlhUm9sZTsKK30KKyAgICAKK3ZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXBk
YXRlQWNjZXNzaWJpbGl0eVJvbGUoKQoreworICAgIGJvb2wgaWdub3JlZFN0YXR1cyA9IGFjY2Vz
c2liaWxpdHlJc0lnbm9yZWQoKTsKKyAgICBtX3JvbGUgPSBkZXRlcm1pbmVBY2Nlc3NpYmlsaXR5
Um9sZSgpOworICAgIAorICAgIC8vIFRoZSBBWCBoaWVyYXJjaHkgb25seSBuZWVkcyB0byBiZSB1
cGRhdGVkIGlmIHRoZSBpZ25vcmVkIHN0YXR1cyBvZiBhbiBlbGVtZW50IGhhcyBjaGFuZ2VkLgor
ICAgIGlmIChpZ25vcmVkU3RhdHVzICE9IGFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSkKKyAgICAg
ICAgY2hpbGRyZW5DaGFuZ2VkKCk7Cit9CisgICAgCiBib29sIEFjY2Vzc2liaWxpdHlSZW5kZXJP
YmplY3Q6OmlzRGVzY2VuZGFudE9mRWxlbWVudFR5cGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmFtZSkgY29uc3QKIHsKICAgICBmb3IgKFJlbmRlck9iamVjdCogcGFyZW50ID0gbV9yZW5kZXJl
ci0+cGFyZW50KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnQoKSkgewpAQCAtMzMy
Nyw2ICszMzg5LDI1IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YXJpYVJvbGVI
YXNQcmVzZW50YXRpb25hbENoaWxkcmVuKCkgY29uc3QKICAgICB9CiB9CiAKK2Jvb2wgQWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdAoreworICAg
IE5vZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CisKKyAgICBpZiAoaXNXZWJBcmVhKCkpCisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIAorICAgIC8vIE5PVEU6IEl0IHdvdWxkIGJlIG1vcmUgYWNj
dXJhdGUgdG8gYXNrIHRoZSBkb2N1bWVudCB3aGV0aGVyIHNldEZvY3VzZWROb2RlKCkgd291bGQK
KyAgICAvLyBkbyBhbnl0aGluZy4gIEZvciBleGFtcGxlLCBzZXRGb2N1c2VkTm9kZSgpIHdpbGwg
ZG8gbm90aGluZyBpZiB0aGUgY3VycmVudCBmb2N1c2VkCisgICAgLy8gbm9kZSB3aWxsIG5vdCBy
ZWxpbnF1aXNoIHRoZSBmb2N1cy4KKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIGlmIChub2RlLT5pc0VsZW1lbnROb2RlKCkgJiYgIXN0YXRpY19jYXN0PEVsZW1l
bnQqPihub2RlKS0+aXNFbmFibGVkRm9ybUNvbnRyb2woKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgcmV0dXJuIG5vZGUtPnN1cHBvcnRzRm9jdXMoKTsKK30KKyAgICAKIGJvb2wgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuU2V0RXhwYW5kZWRBdHRyaWJ1dGUoKSBjb25zdAog
ewogICAgIC8vIEFuIG9iamVjdCBjYW4gYmUgZXhwYW5kZWQgaWYgaXQgYXJpYS1leHBhbmRlZCBp
cyB0cnVlIG9yIGZhbHNlLgpAQCAtMzM3MywxNSArMzQ1NCwzOSBAQCB2b2lkIEFjY2Vzc2liaWxp
dHlSZW5kZXJPYmplY3Q6OmNvbnRlbnRDaGFuZ2VkKCkKICAgICB9CiB9CiAgICAgCit2b2lkIEFj
Y2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OmNoaWxkcmVuQ2hhbmdlZCgpCit7CisgICAgLy8gVGhp
cyBtZXRob2QgaXMgbWVhbnQgYXMgYSBxdWljayB3YXkgb2YgbWFya2luZyBhIHBvcnRpb24gb2Yg
dGhlIGFjY2Vzc2liaWxpdHkgdHJlZSBkaXJ0eS4KKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbih0aGlz
LCBkb2N1bWVudCgpLCBBWE9iamVjdENhY2hlOjpBWENoaWxkcmVuQ2hhbmdlZCwgdHJ1ZSk7CisK
KyAgICAvLyBHbyB1cCB0aGUgYWNjZXNzaWJpbGl0eSBwYXJlbnQgY2hhaW4sIGJ1dCBvbmx5IGlm
IHRoZSBlbGVtZW50IGFscmVhZHkgZXhpc3RzLiBUaGlzIG1ldGhvZCBpcworICAgIC8vIGNhbGxl
ZCBkdXJpbmcgcmVuZGVyIGxheW91dHMsIG1pbmltYWwgd29yayBzaG91bGQgYmUgZG9uZS4gCisg
ICAgLy8gSWYgQVggZWxlbWVudHMgYXJlIGNyZWF0ZWQgbm93LCB0aGV5IGNvdWxkIGludGVycm9n
YXRlIHRoZSByZW5kZXIgdHJlZSB3aGlsZSBpdCdzIGluIGEgZnVua3kgc3RhdGUuCisgICAgLy8g
QXQgdGhlIHNhbWUgdGltZSwgcHJvY2VzcyBBUklBIGxpdmUgcmVnaW9uIGNoYW5nZXMuCisgICAg
Zm9yIChBY2Nlc3NpYmlsaXR5T2JqZWN0KiBwYXJlbnQgPSB0aGlzOyBwYXJlbnQ7IHBhcmVudCA9
IHBhcmVudC0+cGFyZW50T2JqZWN0SWZFeGlzdHMoKSkgeworICAgICAgICBwYXJlbnQtPnNldE5l
ZWRzVG9VcGRhdGVDaGlsZHJlbigpOworCisgICAgICAgIC8vIFRoZXNlIG5vdGlmaWNhdGlvbnMg
YWx3YXlzIG5lZWQgdG8gYmUgc2VudCBiZWNhdXNlIHNjcmVlbnJlYWRlcnMgYXJlIHJlbGlhbnQg
b24gdGhlbSB0byBwZXJmb3JtLiAKKyAgICAgICAgLy8gSW4gb3RoZXIgd29yZHMsIHRoZXkgbmVl
ZCB0byBiZSBzZW50IGV2ZW4gd2hlbiB0aGUgc2NyZWVuIHJlYWRlciBoYXMgbm90IGFjY2Vzc2Vk
IHRoaXMgbGl2ZSByZWdpb24gc2luY2UgdGhlIGxhc3QgdXBkYXRlLgorCisgICAgICAgIC8vIElm
IHRoaXMgZWxlbWVudCBzdXBwb3J0cyBBUklBIGxpdmUgcmVnaW9ucywgdGhlbiBub3RpZnkgdGhl
IEFUIG9mIGNoYW5nZXMuCisgICAgICAgIGlmIChwYXJlbnQtPnN1cHBvcnRzQVJJQUxpdmVSZWdp
b24oKSkKKyAgICAgICAgICAgIGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihwYXJl
bnQsIHBhcmVudC0+ZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhMaXZlUmVnaW9uQ2hhbmdl
ZCwgdHJ1ZSk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGlzIGVsZW1lbnQgaXMgYW4gQVJJ
QSB0ZXh0IGNvbnRyb2wsIG5vdGlmeSB0aGUgQVQgb2YgY2hhbmdlcy4KKyAgICAgICAgaWYgKHBh
cmVudC0+aXNBUklBVGV4dENvbnRyb2woKSAmJiAhcGFyZW50LT5pc05hdGl2ZVRleHRDb250cm9s
KCkgJiYgIXBhcmVudC0+bm9kZSgpLT5yZW5kZXJlcklzRWRpdGFibGUoKSkKKyAgICAgICAgICAg
IGF4T2JqZWN0Q2FjaGUoKS0+cG9zdE5vdGlmaWNhdGlvbihwYXJlbnQsIHBhcmVudC0+ZG9jdW1l
bnQoKSwgQVhPYmplY3RDYWNoZTo6QVhWYWx1ZUNoYW5nZWQsIHRydWUpOworICAgIH0KK30KKyAg
ICAKIGJvb2wgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6Y2FuSGF2ZUNoaWxkcmVuKCkgY29u
c3QKIHsKICAgICBpZiAoIW1fcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
LSAgICAvLyBDYW52YXMgaXMgYSBzcGVjaWFsIGNhc2U7IGl0cyByb2xlIGlzIEltYWdlUm9sZSBi
dXQgaXQgaXMgYWxsb3dlZCB0byBoYXZlIGNoaWxkcmVuLgotICAgIGlmIChub2RlKCkgJiYgbm9k
ZSgpLT5oYXNUYWdOYW1lKGNhbnZhc1RhZykpCi0gICAgICAgIHJldHVybiB0cnVlOwotCiAgICAg
Ly8gRWxlbWVudHMgdGhhdCBzaG91bGQgbm90IGhhdmUgY2hpbGRyZW4KICAgICBzd2l0Y2ggKHJv
bGVWYWx1ZSgpKSB7CiAgICAgY2FzZSBJbWFnZVJvbGU6CkBAIC0zNDU0LDE1ICszNTU5LDYgQEAg
dm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjphZGRUZXh0RmllbGRDaGlsZHJlbigpCiAg
ICAgbV9jaGlsZHJlbi5hcHBlbmQoYXhTcGluQnV0dG9uKTsKIH0KIAotdm9pZCBBY2Nlc3NpYmls
aXR5UmVuZGVyT2JqZWN0OjphZGRDYW52YXNDaGlsZHJlbigpCi17Ci0gICAgLy8gSWYgaXQncyBh
IGNhbnZhcywgaXQgd29uJ3QgaGF2ZSByZW5kZXJlZCBjaGlsZHJlbiwgYnV0IGl0IG1pZ2h0IGhh
dmUgYWNjZXNzaWJsZSBmYWxsYmFjayBjb250ZW50LgotICAgIGlmIChub2RlKCkgJiYgbm9kZSgp
LT5oYXNUYWdOYW1lKGNhbnZhc1RhZykpIHsKLSAgICAgICAgQWNjZXNzaWJpbGl0eU5vZGVPYmpl
Y3Q6OmFkZENoaWxkcmVuKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci19Ci0KIHZvaWQgQWNj
ZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRkQXR0YWNobWVudENoaWxkcmVuKCkKIHsKICAgICBp
ZiAoIWlzQXR0YWNobWVudCgpKQpAQCAtMzQ5OSw3ICszNTk1LDExIEBAIHZvaWQgQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgIC8vIElmIHRoZSBuZWVkIHRvIGFk
ZCBtb3JlIGNoaWxkcmVuIGluIGFkZGl0aW9uIHRvIGV4aXN0aW5nIGNoaWxkcmVuIGFyaXNlcywg
CiAgICAgLy8gY2hpbGRyZW5DaGFuZ2VkIHNob3VsZCBoYXZlIGJlZW4gY2FsbGVkLCBsZWF2aW5n
IHRoZSBvYmplY3Qgd2l0aCBubyBjaGlsZHJlbi4KICAgICBBU1NFUlQoIW1faGF2ZUNoaWxkcmVu
KTsgCi0KKyAgICAKKyAgICAvLyBub3RoaW5nIHRvIGFkZCBpZiB0aGVyZSBpcyBubyBSZW5kZXJP
YmplY3QKKyAgICBpZiAoIW1fcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsKKyAgICAKICAgICBt
X2hhdmVDaGlsZHJlbiA9IHRydWU7CiAgICAgCiAgICAgaWYgKCFjYW5IYXZlQ2hpbGRyZW4oKSkK
QEAgLTM1MDcsNiArMzYwNyw3IEBAIHZvaWQgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6YWRk
Q2hpbGRyZW4oKQogICAgIAogICAgIC8vIGFkZCBhbGwgdW5pZ25vcmVkIGFjYyBjaGlsZHJlbgog
ICAgIGZvciAoUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGZpcnN0Q2hpbGQoKTsg
b2JqOyBvYmogPSBvYmotPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAgCiAgICAgICAgIC8vIElm
IHRoZSBwYXJlbnQgaXMgYXNraW5nIGZvciB0aGlzIGNoaWxkJ3MgY2hpbGRyZW4sIHRoZW4gZWl0
aGVyIGl0J3MgdGhlIGZpcnN0IHRpbWUgKGFuZCBjbGVhcmluZyBpcyBhIG5vLW9wKSwgCiAgICAg
ICAgIC8vIG9yIGl0cyB2aXNpYmlsaXR5IGhhcyBjaGFuZ2VkLiBJbiB0aGUgbGF0dGVyIGNhc2Us
IHRoaXMgY2hpbGQgbWF5IGhhdmUgYSBzdGFsZSBjaGlsZCBjYWNoZWQuIAogICAgICAgICAvLyBU
aGlzIGNhbiBwcmV2ZW50IGFyaWEtaGlkZGVuIGNoYW5nZXMgZnJvbSB3b3JraW5nIGNvcnJlY3Rs
eS4gSGVuY2UsIHdoZW5ldmVyIGEgcGFyZW50IGlzIGdldHRpbmcgY2hpbGRyZW4sIGVuc3VyZSBk
YXRhIGlzIG5vdCBzdGFsZS4KQEAgLTM1MjYsNyArMzYyNyw2IEBAIHZvaWQgQWNjZXNzaWJpbGl0
eVJlbmRlck9iamVjdDo6YWRkQ2hpbGRyZW4oKQogICAgIGFkZEF0dGFjaG1lbnRDaGlsZHJlbigp
OwogICAgIGFkZEltYWdlTWFwQ2hpbGRyZW4oKTsKICAgICBhZGRUZXh0RmllbGRDaGlsZHJlbigp
OwotICAgIGFkZENhbnZhc0NoaWxkcmVuKCk7CiAKICNpZiBQTEFURk9STShNQUMpCiAgICAgdXBk
YXRlQXR0YWNobWVudFZpZXdQYXJlbnRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCmluZGV4IDI2NGU3MGIz
N2NmYjJlZDI0MTkyYmQxZjhmM2NkZjE5NzlmZWEwMDEuLmE0M2I3MWQ1NTNiMDNmYTRmMzg5Yzc2
MjAwMjU3NWQ3NGIyMDQ3ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5oCkBAIC0yOSw3ICsyOSw3IEBACiAj
aWZuZGVmIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3RfaAogI2RlZmluZSBBY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0X2gKIAotI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgiCisj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkxheW91dFR5cGVzLmgi
CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIApAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZW5k
ZXJWaWV3OwogY2xhc3MgVmlzaWJsZVNlbGVjdGlvbjsKIGNsYXNzIFdpZGdldDsKICAgICAKLWNs
YXNzIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QgOiBwdWJsaWMgQWNjZXNzaWJpbGl0eU5vZGVP
YmplY3QgeworY2xhc3MgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCA6IHB1YmxpYyBBY2Nlc3Np
YmlsaXR5T2JqZWN0IHsKIHByb3RlY3RlZDoKICAgICBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0
KFJlbmRlck9iamVjdCopOwogcHVibGljOgpAQCAtNjMsOCArNjMsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB+QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpOwogICAgIAogICAgIHZpcnR1YWwg
Ym9vbCBpc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpOwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBpc0Fu
Y2hvcigpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBpc0F0dGFjaG1lbnQoKSBjb25zdDsKQEAg
LTExMyw2ICsxMTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGhhc1NhbWVTdHlsZShS
ZW5kZXJPYmplY3QqKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaGFzVW5kZXJsaW5lKCkgY29u
c3Q7CiAKKyAgICB2aXJ0dWFsIGJvb2wgY2FuU2V0Rm9jdXNBdHRyaWJ1dGUoKSBjb25zdDsKICAg
ICB2aXJ0dWFsIGJvb2wgY2FuU2V0VGV4dFJhbmdlQXR0cmlidXRlcygpIGNvbnN0OwogICAgIHZp
cnR1YWwgYm9vbCBjYW5TZXRWYWx1ZUF0dHJpYnV0ZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9v
bCBjYW5TZXRFeHBhbmRlZEF0dHJpYnV0ZSgpIGNvbnN0OwpAQCAtMTUwLDggKzE0OSwxMCBAQCBw
dWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgYXJpYU93bnNFbGVtZW50cyhBY2Nlc3NpYmlsaXR5
Q2hpbGRyZW5WZWN0b3ImKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBUklBT3du
cygpIGNvbnN0OworICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eVJvbGUgYXJpYVJvbGVBdHRyaWJ1
dGUoKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25hbENoaWxkT2ZBcmlh
Um9sZSgpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBhcmlhUm9sZUhhc1ByZXNlbnRhdGlvbmFs
Q2hpbGRyZW4oKSBjb25zdDsKKyAgICB2b2lkIHVwZGF0ZUFjY2Vzc2liaWxpdHlSb2xlKCk7CiAg
ICAgCiAgICAgLy8gU2hvdWxkIGJlIGNhbGxlZCBvbiB0aGUgcm9vdCBhY2Nlc3NpYmlsaXR5IG9i
amVjdCB0byBraWNrIG9mZiBhIGhpdCB0ZXN0LgogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9i
amVjdCogYWNjZXNzaWJpbGl0eUhpdFRlc3QoY29uc3QgSW50UG9pbnQmKSBjb25zdDsKQEAgLTE2
NywxNSArMTY4LDE0IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIExheW91dFJlY3QgZWxlbWVudFJl
Y3QoKSBjb25zdDsKICAgICB2aXJ0dWFsIEludFBvaW50IGNsaWNrUG9pbnQoKTsKICAgICAKLSAg
ICB2b2lkIHNldFJlbmRlcmVyKFJlbmRlck9iamVjdCopOworICAgIHZvaWQgc2V0UmVuZGVyZXIo
UmVuZGVyT2JqZWN0KiByZW5kZXJlcikgeyBtX3JlbmRlcmVyID0gcmVuZGVyZXI7IH0KICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogcmVuZGVyZXIoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmVy
OyB9CiAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlbmRlckJveE1vZGVsT2JqZWN0KCkgY29u
c3Q7CiAgICAgdmlydHVhbCBOb2RlKiBub2RlKCkgY29uc3Q7CiAKLSAgICB2aXJ0dWFsIERvY3Vt
ZW50KiBkb2N1bWVudCgpIGNvbnN0OwotCiAgICAgUmVuZGVyVmlldyogdG9wUmVuZGVyZXIoKSBj
b25zdDsKICAgICBSZW5kZXJUZXh0Q29udHJvbCogdGV4dENvbnRyb2woKSBjb25zdDsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICBGcmFtZVZpZXcqIHRvcERvY3VtZW50RnJh
bWVWaWV3KCkgY29uc3Q7ICAKICAgICBEb2N1bWVudCogdG9wRG9jdW1lbnQoKSBjb25zdDsKICAg
ICBIVE1MTGFiZWxFbGVtZW50KiBsYWJlbEVsZW1lbnRDb250YWluZXIoKSBjb25zdDsKQEAgLTIx
NCw2ICsyMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRlY3JlbWVudCgpOwogICAg
IAogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5D
aGFuZ2VkKCk7CiAgICAgdmlydHVhbCB2b2lkIGNvbnRlbnRDaGFuZ2VkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGFkZENoaWxkcmVuKCk7CiAgICAgdmlydHVhbCBib29sIGNhbkhhdmVDaGlsZHJlbigp
IGNvbnN0OwpAQCAtMjU5LDYgKzI2MCw4IEBAIHB1YmxpYzoKIAogcHJvdGVjdGVkOgogICAgIFJl
bmRlck9iamVjdCogbV9yZW5kZXJlcjsKKyAgICBBY2Nlc3NpYmlsaXR5Um9sZSBtX2FyaWFSb2xl
OworICAgIGJvb2wgbV9jaGlsZHJlbkRpcnR5OwogICAgIAogICAgIHZvaWQgc2V0UmVuZGVyT2Jq
ZWN0KFJlbmRlck9iamVjdCogcmVuZGVyZXIpIHsgbV9yZW5kZXJlciA9IHJlbmRlcmVyOyB9CiAg
ICAgdm9pZCBhcmlhTGFiZWxlZEJ5RWxlbWVudHMoVmVjdG9yPEVsZW1lbnQqPiYgZWxlbWVudHMp
IGNvbnN0OwpAQCAtMjY4LDggKzI3MSw2IEBAIHByb3RlY3RlZDoKICAgICAKICAgICB2aXJ0dWFs
IGJvb2wgaXNEZXRhY2hlZCgpIGNvbnN0IHsgcmV0dXJuICFtX3JlbmRlcmVyOyB9CiAKLSAgICB2
aXJ0dWFsIEFjY2Vzc2liaWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7Ci0K
IHByaXZhdGU6CiAgICAgdm9pZCBhcmlhTGlzdGJveFNlbGVjdGVkQ2hpbGRyZW4oQWNjZXNzaWJp
bGl0eUNoaWxkcmVuVmVjdG9yJik7CiAgICAgdm9pZCBhcmlhTGlzdGJveFZpc2libGVDaGlsZHJl
bihBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0b3ImKTsKQEAgLTI4NSw2ICsyODYsOSBAQCBwcml2
YXRlOgogCiAgICAgRWxlbWVudCogbWVudUVsZW1lbnRGb3JNZW51QnV0dG9uKCkgY29uc3Q7CiAg
ICAgRWxlbWVudCogbWVudUl0ZW1FbGVtZW50Rm9yTWVudSgpIGNvbnN0OworICAgIEFjY2Vzc2li
aWxpdHlSb2xlIGRldGVybWluZUFjY2Vzc2liaWxpdHlSb2xlKCk7CisgICAgQWNjZXNzaWJpbGl0
eVJvbGUgZGV0ZXJtaW5lQXJpYVJvbGVBdHRyaWJ1dGUoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmls
aXR5Um9sZSByZW1hcEFyaWFSb2xlRHVlVG9QYXJlbnQoQWNjZXNzaWJpbGl0eVJvbGUpIGNvbnN0
OwogCiAgICAgYm9vbCBpc1RhYkl0ZW1TZWxlY3RlZCgpIGNvbnN0OwogICAgIHZvaWQgYWx0ZXJT
bGlkZXJWYWx1ZShib29sIGluY3JlYXNlKTsKQEAgLTMwMSw3ICszMDUsNiBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBhZGRUZXh0RmllbGRDaGlsZHJlbigpOwogICAgIHZvaWQgYWRkSW1hZ2VNYXBD
aGlsZHJlbigpOwotICAgIHZvaWQgYWRkQ2FudmFzQ2hpbGRyZW4oKTsKICAgICB2b2lkIGFkZEF0
dGFjaG1lbnRDaGlsZHJlbigpOwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHVwZGF0ZUF0
dGFjaG1lbnRWaWV3UGFyZW50cygpOwpAQCAtMzI1LDYgKzMyOCw4IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGFyaWFMaXZlUmVnaW9uQnVzeSgpIGNvbnN0OyAgICAKICAgICAKICAgICBi
b29sIGluaGVyaXRzUHJlc2VudGF0aW9uYWxSb2xlKCkgY29uc3Q7CisgICAgCisgICAgbXV0YWJs
ZSBBY2Nlc3NpYmlsaXR5Um9sZSBtX3JvbGVGb3JNU0FBOwogfTsKIAogaW5saW5lIEFjY2Vzc2li
aWxpdHlSZW5kZXJPYmplY3QqIHRvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdChBY2Nlc3NpYmls
aXR5T2JqZWN0KiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlTbGlkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5U2xpZGVyLmNwcAppbmRleCA3YTBhYmQwM2RiNTU5ZTIzYTM4YTM5ZTY3
MzJhY2IzYmYxYmFmMGI4Li41NmNlZjdmZjk2NjJlZDUxZTM2YmI5MmQ0YjJiOWFiYzkwZGExZTVi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlT
bGlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVNsaWRlci5jcHAKQEAgLTQ3LDkgKzQ3LDcgQEAgQWNjZXNzaWJpbGl0eVNsaWRlcjo6QWNjZXNz
aWJpbGl0eVNsaWRlcihSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogCiBQYXNzUmVmUHRyPEFjY2Vz
c2liaWxpdHlTbGlkZXI+IEFjY2Vzc2liaWxpdHlTbGlkZXI6OmNyZWF0ZShSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQogewotICAgIEFjY2Vzc2liaWxpdHlTbGlkZXIqIG9iaiA9IG5ldyBBY2Nlc3Np
YmlsaXR5U2xpZGVyKHJlbmRlcmVyKTsKLSAgICBvYmotPmluaXQoKTsKLSAgICByZXR1cm4gYWRv
cHRSZWYob2JqKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFjY2Vzc2liaWxpdHlTbGlkZXIo
cmVuZGVyZXIpKTsKIH0KIAogQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlT
bGlkZXI6Om9yaWVudGF0aW9uKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmNwcAppbmRleCBiMWQxNTVkNDJiMjZkNzgwZDgz
ZDEzOGNlNTJjOTA1ODRkNzE4ZTBjLi40MzMwMDU1Zjk3ODJjZDUzZTkyZjc3ODZhY2Y2MTc3NzVi
ZTg5NGY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2li
aWxpdHlUYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5VGFibGUuY3BwCkBAIC01MSwxNSArNTEsNiBAQCBBY2Nlc3NpYmlsaXR5VGFibGU6OkFj
Y2Vzc2liaWxpdHlUYWJsZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIDogQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdChyZW5kZXJlciksCiAgICAgbV9oZWFkZXJDb250YWluZXIoMCkKIHsK
LX0KLQotQWNjZXNzaWJpbGl0eVRhYmxlOjp+QWNjZXNzaWJpbGl0eVRhYmxlKCkKLXsKLX0KLQot
dm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmluaXQoKQotewotICAgIEFjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3Q6OmluaXQoKTsKICNpZiBBQ0NFU1NJQklMSVRZX1RBQkxFUwogICAgIG1faXNBY2Nl
c3NpYmlsaXR5VGFibGUgPSBpc1RhYmxlRXhwb3NhYmxlVGhyb3VnaEFjY2Vzc2liaWxpdHkoKTsK
ICNlbHNlCkBAIC02NywxMSArNTgsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VGFibGU6OmluaXQo
KQogI2VuZGlmCiB9CiAKK0FjY2Vzc2liaWxpdHlUYWJsZTo6fkFjY2Vzc2liaWxpdHlUYWJsZSgp
Cit7Cit9CisKIFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eVRhYmxlPiBBY2Nlc3NpYmlsaXR5VGFi
bGU6OmNyZWF0ZShSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogewotICAgIEFjY2Vzc2liaWxpdHlU
YWJsZSogb2JqID0gbmV3IEFjY2Vzc2liaWxpdHlUYWJsZShyZW5kZXJlcik7Ci0gICAgb2JqLT5p
bml0KCk7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG9iaik7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBBY2Nlc3NpYmlsaXR5VGFibGUocmVuZGVyZXIpKTsKIH0KIAogYm9vbCBBY2Nlc3NpYmlsaXR5
VGFibGU6Omhhc0FSSUFSb2xlKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZS5oCmluZGV4IDJlZTFiYzA5NDlhMzdjM2I1OTc2YjJj
MmU2NjhkZjhjYjU3NWIzN2EuLjdmZDdjYzYxMTc2MjMyN2M2N2Y2OWRhZGE2NTBjZGZkNmM3YzM0
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eVRhYmxlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
VGFibGUuaApAQCAtNTAsOCArNTAsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRhYmxlPiBjcmVhdGUoUmVuZGVyT2JqZWN0Kik7CiAgICAgdmlydHVhbCB+
QWNjZXNzaWJpbGl0eVRhYmxlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgaW5pdCgpOwotCiAgICAg
dmlydHVhbCBib29sIGlzQWNjZXNzaWJpbGl0eVRhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGlzRGF0YVRhYmxlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZUNlbGwuY3BwCmluZGV4IGYyYjFjOTU4Yjg5
OWRmMzA4ZmEyZmZlZDI2MTY3ZTVlMjQwMTRlOTQuLjdlYzg3YjJkODBlMzQzZmQ3ZWI0MmIzM2Ux
NDgyMTJiMzBlNDMxZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVDZWxsLmNwcApAQCAtNTEsOSArNTEsNyBAQCBBY2Nlc3Np
YmlsaXR5VGFibGVDZWxsOjp+QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCgpCiAKIFBhc3NSZWZQdHI8
QWNjZXNzaWJpbGl0eVRhYmxlQ2VsbD4gQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbDo6Y3JlYXRlKFJl
bmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eVRhYmxlQ2VsbCogb2Jq
ID0gbmV3IEFjY2Vzc2liaWxpdHlUYWJsZUNlbGwocmVuZGVyZXIpOwotICAgIG9iai0+aW5pdCgp
OwotICAgIHJldHVybiBhZG9wdFJlZihvYmopOworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWNj
ZXNzaWJpbGl0eVRhYmxlQ2VsbChyZW5kZXJlcikpOwogfQogCiBib29sIEFjY2Vzc2liaWxpdHlU
YWJsZUNlbGw6OmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5VGFibGVSb3cuY3BwCmluZGV4
IGI0NTk2ZDg2MWFhMTc4M2ZiMmQ0NTEzNGY3YjFlY2IwNWM5OWRkNDkuLmNmYmRmYjVjNWRlMWNk
ZDljMzZhNzJjZWU3N2UzYTkzMzBmYjdhNTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVRhYmxlUm93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlUYWJsZVJvdy5jcHAKQEAgLTU0LDkgKzU0LDcg
QEAgQWNjZXNzaWJpbGl0eVRhYmxlUm93Ojp+QWNjZXNzaWJpbGl0eVRhYmxlUm93KCkKIAogUGFz
c1JlZlB0cjxBY2Nlc3NpYmlsaXR5VGFibGVSb3c+IEFjY2Vzc2liaWxpdHlUYWJsZVJvdzo6Y3Jl
YXRlKFJlbmRlck9iamVjdCogcmVuZGVyZXIpCiB7Ci0gICAgQWNjZXNzaWJpbGl0eVRhYmxlUm93
KiBvYmogPSBuZXcgQWNjZXNzaWJpbGl0eVRhYmxlUm93KHJlbmRlcmVyKTsKLSAgICBvYmotPmlu
aXQoKTsKLSAgICByZXR1cm4gYWRvcHRSZWYob2JqKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFjY2Vzc2liaWxpdHlUYWJsZVJvdyhyZW5kZXJlcikpOwogfQogCiBBY2Nlc3NpYmlsaXR5Um9s
ZSBBY2Nlc3NpYmlsaXR5VGFibGVSb3c6OnJvbGVWYWx1ZSgpIGNvbnN0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYTg5ODM5
OWYwOTZlMWY5YmNhMDFhOGZhNTBkNTkyZWFlZWM2NmFlNy4uMTQ1MjZlZjA0MGUwMTQwNzllMTg3
MTE5MTU2ZTc4NzM3MTgzNWQ1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA3LTIwICBT
aGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTIzMTgyLgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8xMjMxODIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTkxODYzCisKKyAgICAgICAgQ2F1c2luZyBBU1NFUlQgY3Jhc2hlcyBpbiB0
ZXN0cyBhY2Nlc3NpYmlsaXR5L2NhbnZhcy5odG1sIGFuZAorICAgICAgICBhY2Nlc3NpYmlsaXR5
L2NhbnZhcy1hY2Nlc3NpYmlsaXR5bm9kZW9iamVjdC5odG1sIChSZXF1ZXN0ZWQKKyAgICAgICAg
YnkgamVybm9ibGUgb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2NhbnZh
cy1hY2Nlc3NpYmlsaXR5bm9kZW9iamVjdC1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9jYW52YXMtYWNjZXNzaWJpbGl0eW5vZGVvYmplY3QuaHRtbDogUmVt
b3ZlZC4KKwogMjAxMi0wNy0yMCAgU3RlcGhlbiBDaGVubmV5ICA8c2NoZW5uZXlAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIEZpeCBjaHJvbWl1bSBUZXN0RXhwZWN0YXRpb25zIGZpbGUuCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1hY2Nlc3NpYmlsaXR5bm9k
ZW9iamVjdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2NhbnZhcy1h
Y2Nlc3NpYmlsaXR5bm9kZW9iamVjdC1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDA3NTMyZjcwM2ZmYmRkYjdmZmQ1MWE0Mjk2MjRiYTlmZDg0ZGQyZjYuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9jYW52YXMtYWNjZXNzaWJpbGl0eW5vZGVvYmplY3QtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotTGluayAgQnV0dG9uICAgICAgICAgICBBUklB
IGJ1dHRvbiBBUklBIGxpbmsKLVRoaXMgdGVzdCBtYWtlcyBzdXJlIHRoYXQgQWNjZXNzaWJpbGl0
eU5vZGVPYmplY3RzIGFyZSBjcmVhdGVkIGZvciBlbGVtZW50cyBpbiBhIGNhbnZhcyBzdWJ0cmVl
LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBheFJlbmRlck9iamVjdHMu
bGVuZ3RoIGlzIGF4Tm9kZU9iamVjdHMubGVuZ3RoCi1QQVNTIGkgPT0gMDsgYXhSZW5kZXJPYmpl
Y3Qucm9sZSA9PSBheE5vZGVPYmplY3Qucm9sZSBpcyB0cnVlCi1QQVNTIGkgPT0gMTsgYXhSZW5k
ZXJPYmplY3Qucm9sZSA9PSBheE5vZGVPYmplY3Qucm9sZSBpcyB0cnVlCi1QQVNTIGkgPT0gMjsg
YXhSZW5kZXJPYmplY3Qucm9sZSA9PSBheE5vZGVPYmplY3Qucm9sZSBpcyB0cnVlCi1QQVNTIGkg
PT0gMzsgYXhSZW5kZXJPYmplY3Qucm9sZSA9PSBheE5vZGVPYmplY3Qucm9sZSBpcyB0cnVlCi1Q
QVNTIGkgPT0gNDsgYXhSZW5kZXJPYmplY3Qucm9sZSA9PSBheE5vZGVPYmplY3Qucm9sZSBpcyB0
cnVlCi1QQVNTIGkgPT0gNTsgYXhSZW5kZXJPYmplY3Qucm9sZSA9PSBheE5vZGVPYmplY3Qucm9s
ZSBpcyB0cnVlCi1QQVNTIGkgPT0gNjsgYXhSZW5kZXJPYmplY3Qucm9sZSA9PSBheE5vZGVPYmpl
Y3Qucm9sZSBpcyB0cnVlCi1QQVNTIGkgPT0gNzsgYXhSZW5kZXJPYmplY3Qucm9sZSA9PSBheE5v
ZGVPYmplY3Qucm9sZSBpcyB0cnVlCi1QQVNTIGkgPT0gODsgYXhSZW5kZXJPYmplY3Qucm9sZSA9
PSBheE5vZGVPYmplY3Qucm9sZSBpcyB0cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0
cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9jYW52YXMtYWNjZXNzaWJpbGl0eW5vZGVvYmplY3QuaHRtbCBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvY2FudmFzLWFjY2Vzc2liaWxpdHlub2Rlb2JqZWN0Lmh0bWwKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2YmJiYjYxZDU2MGVjNWY2ZDljM2ZmNzllMGI0OTY5YjQ0
NTdiYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9jYW52YXMtYWNjZXNzaWJpbGl0eW5vZGVvYmplY3QuaHRt
bAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MPgotPGh0bWw+
Ci08Ym9keT4KLTxzY3JpcHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Ci0KLTxkaXYgaWQ9Im15Q29udGFpbmVyIiB0YWJpbmRleD0iLTEiPgotICA8
YSBocmVmPSIjIj5MaW5rPC9hPgotICA8YnV0dG9uPkJ1dHRvbjwvYnV0dG9uPgotICA8aW5wdXQg
dHlwZT0idGV4dCI+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCI+Ci0gIDxpbnB1dCB0eXBlPSJy
YWRpbyI+Ci0gIDxpbnB1dCB0eXBlPSJzdWJtaXQiPgotICA8c2VsZWN0PjxvcHRpb24+MTxvcHRp
b24+Mjwvc2VsZWN0PgotICA8c3BhbiB0YWJpbmRleD0iMCIgcm9sZT0iYnV0dG9uIj5BUklBIGJ1
dHRvbjwvc3Bhbj4KLSAgPHNwYW4gdGFiaW5kZXg9IjAiIHJvbGU9ImxpbmsiPkFSSUEgbGluazwv
c3Bhbj4KLTwvZGl2PgotCi08Y2FudmFzIGlkPSJteUNhbnZhcyIgd2lkdGg9IjMwMCIgaGVpZ2h0
PSIzMDAiIHRhYmluZGV4PSItMSI+Ci0gIDxhIGhyZWY9IiMiPkxpbms8L2E+Ci0gIDxidXR0b24+
QnV0dG9uPC9idXR0b24+Ci0gIDxpbnB1dCB0eXBlPSJ0ZXh0Ij4KLSAgPGlucHV0IHR5cGU9ImNo
ZWNrYm94Ij4KLSAgPGlucHV0IHR5cGU9InJhZGlvIj4KLSAgPGlucHV0IHR5cGU9InN1Ym1pdCI+
Ci0gIDxzZWxlY3Q+PG9wdGlvbj4xPG9wdGlvbj4yPC9zZWxlY3Q+Ci0gIDxzcGFuIHRhYmluZGV4
PSIwIiByb2xlPSJidXR0b24iPkFSSUEgYnV0dG9uPC9zcGFuPgotICA8c3BhbiB0YWJpbmRleD0i
MCIgcm9sZT0ibGluayI+QVJJQSBsaW5rPC9zcGFuPgotPC9jYW52YXM+Ci0KLTxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgotPHNjcmlwdD4KLWRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgbWFrZXMgc3Vy
ZSB0aGF0IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0cyBhcmUgY3JlYXRlZCBmb3IgZWxlbWVudHMg
aW4gYSBjYW52YXMgc3VidHJlZS4iKTsKLQotaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
ciAmJiB3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICB3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwotCi0gICAgZnVuY3Rpb24gYXBwZW5kRm9jdXNh
YmxlRGVzY2VuZGFudHMoYXhPYmplY3QsIGF4Rm9jdXNhYmxlTGlzdCkgewotICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGF4T2JqZWN0LmNoaWxkcmVuQ291bnQ7IGkrKykgewotICAgICAgICAg
ICAgdmFyIGF4Q2hpbGQgPSBheE9iamVjdC5jaGlsZEF0SW5kZXgoaSk7Ci0gICAgICAgICAgICBp
ZiAoYXhDaGlsZC5pc0ZvY3VzYWJsZSkKLSAgICAgICAgICAgICAgICBheEZvY3VzYWJsZUxpc3Qu
cHVzaChheENoaWxkKTsKLSAgICAgICAgICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4
Q2hpbGQsIGF4Rm9jdXNhYmxlTGlzdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2YXIgY29u
dGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm15Q29udGFpbmVyIik7Ci0gICAgY29u
dGFpbmVyLmZvY3VzKCk7Ci0gICAgdmFyIGF4Q29udGFpbmVyID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICB2YXIgY2FudmFzID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoIm15Q2FudmFzIik7Ci0gICAgY2FudmFzLmZvY3VzKCk7Ci0gICAgdmFyIGF4Q2Fu
dmFzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICB2YXIg
YXhSZW5kZXJPYmplY3RzID0gW107Ci0gICAgdmFyIGF4Tm9kZU9iamVjdHMgPSBbXTsKLQotICAg
IGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4Q29udGFpbmVyLCBheFJlbmRlck9iamVjdHMp
OwotICAgIGFwcGVuZEZvY3VzYWJsZURlc2NlbmRhbnRzKGF4Q2FudmFzLCBheE5vZGVPYmplY3Rz
KTsKLQotICAgIHNob3VsZEJlKCJheFJlbmRlck9iamVjdHMubGVuZ3RoIiwgImF4Tm9kZU9iamVj
dHMubGVuZ3RoIik7Ci0KLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IGF4UmVuZGVyT2JqZWN0cy5s
ZW5ndGg7IGkrKykgewotICAgICAgICB2YXIgYXhSZW5kZXJPYmplY3QgPSBheFJlbmRlck9iamVj
dHNbaV07Ci0gICAgICAgIHZhciBheE5vZGVPYmplY3QgPSBheE5vZGVPYmplY3RzW2ldOwotICAg
ICAgICBzaG91bGRCZSgiaSA9PSAiICsgaSArICI7IGF4UmVuZGVyT2JqZWN0LnJvbGUgPT0gYXhO
b2RlT2JqZWN0LnJvbGUiLCAidHJ1ZSIpOwotICAgIH0KLX0KLQotPC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQgc3JjPSIuLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgot
PC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>