<?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>161868</bug_id>
          
          <creation_ts>2016-09-12 12:13:50 -0700</creation_ts>
          <short_desc>[CSS Parser] Add support for the parsing of the HTML sizes attribute</short_desc>
          <delta_ts>2016-09-22 13:37:45 -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>CSS</component>
          <version>WebKit 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>46591</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dave Hyatt">hyatt</reporter>
          <assigned_to name="Dave Hyatt">hyatt</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1228840</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-12 12:13:50 -0700</bug_when>
    <thetext>[CSS Parser] Add support for the parsing of the HTML sizes attribute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228842</commentid>
    <comment_count>1</comment_count>
      <attachid>288597</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-12 12:16:05 -0700</bug_when>
    <thetext>Created attachment 288597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228846</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-12 12:18:46 -0700</bug_when>
    <thetext>Attachment 288597 did not pass style-queue:


ERROR: Source/WebCore/css/parser/SizesAttributeParser.h:49:  The parameter name &quot;type&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/css/parser/SizesCalcParser.cpp:231:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/parser/SizesCalcParser.cpp:245:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
ERROR: Source/WebCore/css/parser/SizesCalcParser.cpp:247:  One line control clauses should not use braces.  [whitespace/braces] [4]
ERROR: Source/WebCore/css/parser/SizesAttributeParser.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 5 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228849</commentid>
    <comment_count>3</comment_count>
      <attachid>288600</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-12 12:21:22 -0700</bug_when>
    <thetext>Created attachment 288600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228858</commentid>
    <comment_count>4</comment_count>
      <attachid>288600</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-12 12:32:49 -0700</bug_when>
    <thetext>Comment on attachment 288600
Patch

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

&gt; Source/WebCore/css/parser/SizesAttributeParser.cpp:51
&gt; +    if (type == CSSPrimitiveValue::CSS_EXS || type == CSSPrimitiveValue::CSS_CHS) {

Why not CSS_EMS too?

&gt; Source/WebCore/css/parser/SizesAttributeParser.cpp:104
&gt; +    // A Media Condition cannot have a media type other then screen.

Typo: than</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228877</commentid>
    <comment_count>5</comment_count>
      <attachid>288600</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-12 13:54:01 -0700</bug_when>
    <thetext>Comment on attachment 288600
Patch

Attachment 288600 did not pass ios-sim-ews (ios-simulator-wk2):
Output: http://webkit-queues.webkit.org/results/2060905

New failing tests:
fast/scrolling/ios/scrollTo-at-page-load.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228878</commentid>
    <comment_count>6</comment_count>
      <attachid>288607</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2016-09-12 13:54:05 -0700</bug_when>
    <thetext>Created attachment 288607
Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2

The attached test failures were seen while running run-webkit-tests on the ios-sim-ews.
Bot: ews122  Port: ios-simulator-elcapitan-wk2  Platform: Mac OS X 10.11.5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1228889</commentid>
    <comment_count>7</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-12 14:15:03 -0700</bug_when>
    <thetext>Landed in r205821.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288597</attachid>
            <date>2016-09-12 12:16:05 -0700</date>
            <delta_ts>2016-09-12 12:21:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>31680</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE2LTA5LTEyICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBBZGQgc3VwcG9y
dCBmb3IgdGhlIHBhcnNpbmcgb2YgdGhlIEhUTUwgc2l6ZXMgYXR0cmlidXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4NjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhl
IHBhcnNlcnMgZm9yIHRoZSBzaXplcyBhdHRyaWJ1dGUuIFRoaXMgY29kZSBpcyBoZWF2aWx5IG1v
ZGlmaWVkCisgICAgICAgIGZyb20gQmxpbmssIGFuZCBpdCByZWFsbHkgb25seSBtYWtlcyB1c2Ug
b2YgdGhlIHRva2VuaXphdGlvbi9wYXJzaW5nIGNvZGUuIFdoYXQgaXMgZG9uZQorICAgICAgICB3
aXRoIHRoZSByZXN1bHRzIGludm9sdmVzIHRoZSBzYW1lIG9yaWdpbmFsIGNvZGUgdGhhdCB3ZSB1
c2VkIG92ZXIgaW4gU291cmNlU2l6ZUxpc3QuY3BwLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpjb21wdXRlTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpTaXplc0F0dHJpYnV0ZVBhcnNlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6bGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpjYWxjdWxhdGVMZW5ndGhJblBpeGVscyk6
CisgICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6bWVkaWFDb25kaXRpb25N
YXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpwYXJzZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6ZWZmZWN0aXZlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6ZWZmZWN0aXZlU2l6ZURl
ZmF1bHRWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpTaXplc0NhbGNQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpyZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3JQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaXplc0NhbGNQYXJz
ZXI6OmhhbmRsZU9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1BhcnNlcjo6
YXBwZW5kTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1BhcnNlcjo6YXBwZW5k
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1BhcnNlcjo6YXBwZW5kT3BlcmF0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpjYWxjVG9SZXZlcnNlUG9s
aXNoTm90YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0ZU9uU3RhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpjYWxjdWxhdGUpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2l6ZXND
YWxjVmFsdWU6OlNpemVzQ2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1Bh
cnNlcjo6aXNWYWxpZCk6CisKIDIwMTYtMDktMTIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEVuaGFuY2UgTmV0d29yayBsb2dnaW5nCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1NzkwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzNjYsNiArMTM2Niw4IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogICAgIGNz
cy9wYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5jcHAKICAgICBjc3MvcGFyc2VyL01lZGlh
UXVlcnlQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAK
KyAgICBjc3MvcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5jcHAKICAgICBjc3MvcGFyc2VyL1NWR0NT
U1BhcnNlci5jcHAKIAogICAgIGNzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjA1NzkwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQyLDYgKzMzNDIsMTAgQEAKIAkJOTNGOUI3
QTAwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlFMEJBNjAzMjYwMDg1NDA2NCAv
KiBKU0NEQVRBU2VjdGlvbi5jcHAgKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAv
KiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87
IH07CiAJCTkzRkRBRkNBMEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkRBRkM5MEIx
MTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NDQ0Q0JEMzFEODYwQzhCMDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NDRDQkQwMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXplc0NhbGNQYXJzZXIu
Y3BwICovOyB9OworCQk5NDQ0Q0JENDFEODYwQzhCMDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDQ0Q0JD
RjFEODYwQzc0MDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2VyLmggKi87IH07CisJCTk0NDRDQkQ1
MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDQ0Q0JEMjFEODYwQzc0MDA3M0Ew
NzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwICovOyB9OworCQk5NDQ0Q0JENjFEODYwQzhC
MDA3M0EwNzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkQxMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXpl
c0F0dHJpYnV0ZVBhcnNlci5oICovOyB9OwogCQk5NDZEMzcyRDFENkNCMjk0MDA3NzA4NEYgLyog
Q1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk0NkQzNzI4MUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwICovOyB9OwogCQk5
NDZEMzcyRTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyog
Q1NTUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTQ2RDM3MkYxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlck1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJBMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDk5LDYgKzEwNTAzLDEwIEBACiAJCTkzRjlCNzlFMEJB
NjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjlCNzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9y
SW5zZXJ0QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JJ
bnNlcnRBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0NENCQ0YxRDg2
MEM3NDAwNzNBMDc0IC8qIFNpemVzQ2FsY1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTaXplc0NhbGNQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9TaXplc0NhbGNQYXJz
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0NENCRDAxRDg2MEM3NDAwNzNB
MDc0IC8qIFNpemVzQ2FsY1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTaXplc0NhbGNQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1NpemVzQ2FsY1BhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQxMUQ4NjBDNzQwMDcz
QTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTaXplc0F0dHJpYnV0ZVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL1NpemVzQXR0cmli
dXRlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQyMUQ4NjBD
NzQwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHA7IHBhdGggPSBwYXJz
ZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NT
UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MjkxRDZDQjI4
QjAwNzcwODRGIC8qIENTU1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBDU1NQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MkExRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlck1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyTW9kZS5oOyBwYXRo
ID0gcGFyc2VyL0NTU1BhcnNlck1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4MjEwLDYgKzE4MjE4LDEwIEBACiAJCQkJOTQ5M0I2QjcxRDc0QjM5NTAwODhFNzgwIC8qIE1l
ZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLywKIAkJCQk5NDkzQjZCODFENzRCMzk1MDA4OEU3ODAg
LyogTWVkaWFRdWVyeVBhcnNlci5jcHAgKi8sCiAJCQkJOTQ5M0I2QjkxRDc0QjM5NTAwODhFNzgw
IC8qIE1lZGlhUXVlcnlQYXJzZXIuaCAqLywKKwkJCQk5NDQ0Q0JEMDFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmNwcCAqLywKKwkJCQk5NDQ0Q0JDRjFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmggKi8sCisJCQkJOTQ0NENCRDIxRDg2MEM3NDAwNzNBMDc0IC8q
IFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCAqLywKKwkJCQk5NDQ0Q0JEMTFEODYwQzc0MDA3M0Ew
NzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCAqLywKIAkJCQk5NDZEMzczMjFENkNDMzcyMDA3
NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gcGFyc2VyOwpA
QCAtMjQ4MDksNiArMjQ4MjEsNyBAQAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJ
bmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEE1OEU1MUJBQTQwQjEw
MEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1
MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0
NDRDQkQ2MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzM0ODYxMjQxNUZERTIxRTAwN0ExQ0M5IC8qIElucHV0VHlwZU5hbWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERUMwOTlFNjQ5MjAw
NTZFNTgxIC8qIEluc2VydExpbmVCcmVha0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjcw
MzUsNiArMjcwNDgsNyBAQAogCQkJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXRO
YW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAv
KiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk0NDRDQkQ0MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0NhbGNQYXJzZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3MDlFOENGMUQ0MTNEOUEwMDMyNDRBQyAvKiBXZWJLaXRTdWJ0
bGVDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAv
KiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg0
MDgsNiArMjg0MjIsNyBAQAogCQkJCTJENUE1OTJGMTUyNTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9y
aWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MUEyRjQxMTdEN0Q1REUwMDcyNTE3
QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0M3
MjVFMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFnZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5NDQ0Q0JEMzFEODYwQzhCMDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxp
Y2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOTYxQzU0MThBRDMzODUwMEQw
N0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5MjIs
NiArMjk5MzcsNyBAQAogCQkJCTRCNkZBNkY3MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxh
Y2VDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEFGRDAwQjBEQUYzMzU0MDBGNUY1NUMgLyog
U01JTFRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBRkQwMEQwREFGMzM1NTAwRjVGNTVD
IC8qIFNNSUxUaW1lQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NDRDQkQ1MUQ4
NjBDOEIwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzY4OEFBMzFEMzgxNEJGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDkgQEAKKy8vIENvcHlyaWdo
dCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNpemVzQXR0cmlidXRlUGFyc2VyLmgiCisKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5
RXZhbHVhdG9yLmgiCisjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKKyNpbmNsdWRlICJD
U1NUb0xlbmd0aENvbnZlcnNpb25EYXRhLmgiCisjaW5jbHVkZSAiQ1NTVG9rZW5pemVyLmgiCisj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNpemVzQ2FsY1BhcnNlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2Zsb2F0IFNpemVzQXR0cmlidXRlUGFyc2VyOjpjb21wdXRl
TGVuZ3RoKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlclZpZXcmIHJlbmRlcmVyKQoreworICAgIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEoJnN0eWxlLCAmc3R5bGUsICZy
ZW5kZXJlcik7CisgICAgCisgICAgLy8gQmVjYXVzZSB3ZSBldmFsdWF0ZSAic2l6ZXMiIGF0IHBh
cnNlIHRpbWUgKGJlZm9yZSBzdHlsZSBoYXMgYmVlbiByZXNvbHZlZCksIHRoZSBmb250IG1ldHJp
Y3MgdXNlZCBmb3IgdGhlc2Ugc3BlY2lmaWMgdW5pdHMKKyAgICAvLyBhcmUgbm90IGF2YWlsYWJs
ZS4gVGhlIGZvbnQgc2VsZWN0b3IncyBpbnRlcm5hbCBjb25zaXN0ZW5jeSBpc24ndCBndWFyYW50
ZWVkIGp1c3QgeWV0LCBzbyB3ZSBjYW4ganVzdCB0ZW1wb3JhcmlseSBjbGVhcgorICAgIC8vIHRo
ZSBwb2ludGVyIHRvIGl0IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHVuaXQgZXZhbHVhdGlvbi4g
VGhpcyBpcyBhY2NlcHRpYmxlIGJlY2F1c2UgdGhlIHN0eWxlIGFsd2F5cyBjb21lcyBmcm9tIHRo
ZQorICAgIC8vIFJlbmRlclZpZXcsIHdoaWNoIGhhcyBpdHMgZm9udCBpbmZvcm1hdGlvbiBoYXJk
Y29kZWQgaW4gcmVzb2x2ZUZvckRvY3VtZW50KCkgdG8gYmUgLXdlYmtpdC1zdGFuZGFyZCwgd2hv
c2Ugb3BlcmF0aW9ucworICAgIC8vIGRvbid0IHJlcXVpcmUgYSBmb250IHNlbGVjdG9yLgorICAg
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTIHx8IHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19DSFMpIHsKKyAgICAgICAgUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9u
dFNlbGVjdG9yID0gc3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKTsKKyAgICAgICAg
c3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUobnVsbHB0cik7CisgICAgICAgIGZsb2F0IHJlc3Vs
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJz
aW9uRGF0YSwgdHlwZSwgdmFsdWUpOworICAgICAgICBzdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0
ZShmb250U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVO
b25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCB0eXBlLCB2YWx1ZSkpOworfQorICAg
IAorU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OlNpemVzQXR0cmlidXRlUGFyc2VyKGNvbnN0IFN0cmlu
ZyYgYXR0cmlidXRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlclZpZXcmIHZpZXcp
CisgICAgOiBtX3N0eWxlKHN0eWxlKQorICAgICwgbV92aWV3KHZpZXcpCisgICAgLCBtX2xlbmd0
aCgwKQorICAgICwgbV9sZW5ndGhXYXNTZXQoZmFsc2UpCit7CisgICAgbV9pc1ZhbGlkID0gcGFy
c2UoQ1NTVG9rZW5pemVyOjpTY29wZShhdHRyaWJ1dGUpLnRva2VuUmFuZ2UoKSk7Cit9CisKK2Zs
b2F0IFNpemVzQXR0cmlidXRlUGFyc2VyOjpsZW5ndGgoKQoreworICAgIGlmIChtX2lzVmFsaWQp
CisgICAgICAgIHJldHVybiBlZmZlY3RpdmVTaXplKCk7CisgICAgcmV0dXJuIGVmZmVjdGl2ZVNp
emVEZWZhdWx0VmFsdWUoKTsKK30KKworYm9vbCBTaXplc0F0dHJpYnV0ZVBhcnNlcjo6Y2FsY3Vs
YXRlTGVuZ3RoSW5QaXhlbHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgZmxvYXQmIHJlc3Vs
dCkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgc3RhcnRUb2tlbiA9IHJhbmdlLnBlZWso
KTsKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSA9IHN0YXJ0VG9rZW4udHlwZSgpOworICAg
IGlmICh0eXBlID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIGlmICghQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzTGVuZ3RoKHN0YXJ0VG9rZW4udW5pdFR5cGUoKSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGgoc3RhcnRUb2tlbi5udW1l
cmljVmFsdWUoKSwgc3RhcnRUb2tlbi51bml0VHlwZSgpLCBtX3N0eWxlLCBtX3ZpZXcpOworICAg
ICAgICBpZiAocmVzdWx0ID49IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVs
c2UgaWYgKHR5cGUgPT0gRnVuY3Rpb25Ub2tlbikgeworICAgICAgICBTaXplc0NhbGNQYXJzZXIg
Y2FsY1BhcnNlcihyYW5nZSwgbV9zdHlsZSwgbV92aWV3KTsKKyAgICAgICAgaWYgKCFjYWxjUGFy
c2VyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0
ID0gY2FsY1BhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNl
IGlmICh0eXBlID09IE51bWJlclRva2VuICYmICFzdGFydFRva2VuLm51bWVyaWNWYWx1ZSgpKSB7
CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTaXplc0F0dHJpYnV0ZVBhcnNlcjo6bWVkaWFDb25k
aXRpb25NYXRjaGVzKGNvbnN0IE1lZGlhUXVlcnlTZXQmIG1lZGlhQ29uZGl0aW9uKQoreworICAg
IC8vIEEgTWVkaWEgQ29uZGl0aW9uIGNhbm5vdCBoYXZlIGEgbWVkaWEgdHlwZSBvdGhlciB0aGVu
IHNjcmVlbi4KKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBtX3Zp
ZXcuZG9jdW1lbnQoKSwgJm1fc3R5bGUgfS5ldmFsdWF0ZShtZWRpYUNvbmRpdGlvbiwgbV92aWV3
LmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpOworfQorCitib29sIFNpemVzQXR0
cmlidXRlUGFyc2VyOjpwYXJzZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKQoreworICAgIC8v
IFNwbGl0IG9uIGEgY29tbWEgdG9rZW4gYW5kIHBhcnNlIHRoZSByZXN1bHQgdG9rZW5zIGFzICht
ZWRpYS1jb25kaXRpb24sIGxlbmd0aCkgcGFpcnMKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkp
IHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIG1lZGlhQ29uZGl0aW9uU3RhcnQgPSAm
cmFuZ2UucGVlaygpOworICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIHRoZSBsYXN0IGNvbXBvbmVu
dCB2YWx1ZSBiZWZvcmUgdGhlIGNvbW1hIHdoaWNoIGlzbid0IHdoaXRlc3BhY2Ugb3IgYSBjb21t
ZW50CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBsZW5ndGhUb2tlblN0YXJ0ID0gJnJh
bmdlLnBlZWsoKTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxlbmd0aFRva2VuRW5k
ID0gJnJhbmdlLnBlZWsoKTsKKyAgICAgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpICYmIHJhbmdl
LnBlZWsoKS50eXBlKCkgIT0gQ29tbWFUb2tlbikgeworICAgICAgICAgICAgbGVuZ3RoVG9rZW5T
dGFydCA9ICZyYW5nZS5wZWVrKCk7CisgICAgICAgICAgICByYW5nZS5jb25zdW1lQ29tcG9uZW50
VmFsdWUoKTsKKyAgICAgICAgICAgIGxlbmd0aFRva2VuRW5kID0gJnJhbmdlLnBlZWsoKTsKKyAg
ICAgICAgICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAg
cmFuZ2UuY29uc3VtZSgpOworCisgICAgICAgIGZsb2F0IGxlbmd0aDsKKyAgICAgICAgaWYgKCFj
YWxjdWxhdGVMZW5ndGhJblBpeGVscyhyYW5nZS5tYWtlU3ViUmFuZ2UobGVuZ3RoVG9rZW5TdGFy
dCwgbGVuZ3RoVG9rZW5FbmQpLCBsZW5ndGgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYUNvbmRpdGlvbiA9IE1lZGlhUXVlcnlQYXJz
ZXI6OnBhcnNlTWVkaWFDb25kaXRpb24ocmFuZ2UubWFrZVN1YlJhbmdlKG1lZGlhQ29uZGl0aW9u
U3RhcnQsIGxlbmd0aFRva2VuU3RhcnQpKTsKKyAgICAgICAgaWYgKCFtZWRpYUNvbmRpdGlvbiB8
fCAhbWVkaWFDb25kaXRpb25NYXRjaGVzKCptZWRpYUNvbmRpdGlvbikpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7CisgICAgICAgIG1fbGVuZ3RoV2Fz
U2V0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworZmxvYXQgU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OmVmZmVjdGl2ZVNpemUoKQorewor
ICAgIGlmIChtX2xlbmd0aFdhc1NldCkKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOworICAgIHJl
dHVybiBlZmZlY3RpdmVTaXplRGVmYXVsdFZhbHVlKCk7Cit9CisKK3Vuc2lnbmVkIFNpemVzQXR0
cmlidXRlUGFyc2VyOjplZmZlY3RpdmVTaXplRGVmYXVsdFZhbHVlKCkKK3sKKyAgICByZXR1cm4g
Y2xhbXBUbzxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91
YmxlKHsgJm1fc3R5bGUsICZtX3N0eWxlLCAmbV92aWV3IH0sIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVlcsIDEwMC4wKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRp
YVF1ZXJ5QmxvY2tXYXRjaGVyLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENTU1ZhbHVlOworY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBSZW5kZXJWaWV3OworICAg
IAorY2xhc3MgU2l6ZXNBdHRyaWJ1dGVQYXJzZXIgeworcHVibGljOgorICAgIFNpemVzQXR0cmli
dXRlUGFyc2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlbmRlclN0eWxlJiwgUmVuZGVyVmlldyYp
OworCisgICAgZmxvYXQgbGVuZ3RoKCk7CisKKyAgICBzdGF0aWMgZmxvYXQgZGVmYXVsdExlbmd0
aChjb25zdCBSZW5kZXJTdHlsZSYsIFJlbmRlclZpZXcmKTsKKyAgICBzdGF0aWMgZmxvYXQgY29t
cHV0ZUxlbmd0aChkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdHlw
ZSwgY29uc3QgUmVuZGVyU3R5bGUmLCBSZW5kZXJWaWV3Jik7CisKK3ByaXZhdGU6CisgICAgYm9v
bCBwYXJzZShDU1NQYXJzZXJUb2tlblJhbmdlKTsKKyAgICBmbG9hdCBlZmZlY3RpdmVTaXplKCk7
CisgICAgYm9vbCBjYWxjdWxhdGVMZW5ndGhJblBpeGVscyhDU1NQYXJzZXJUb2tlblJhbmdlLCBm
bG9hdCYgcmVzdWx0KTsKKyAgICBib29sIG1lZGlhQ29uZGl0aW9uTWF0Y2hlcyhjb25zdCBNZWRp
YVF1ZXJ5U2V0JiBtZWRpYUNvbmRpdGlvbik7CisgICAgdW5zaWduZWQgZWZmZWN0aXZlU2l6ZURl
ZmF1bHRWYWx1ZSgpOworCisgICAgY29uc3QgUmVuZGVyU3R5bGUmIG1fc3R5bGU7CisgICAgUmVu
ZGVyVmlldyYgbV92aWV3OworICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtX21lZGlhQ29uZGl0
aW9uOworICAgIGZsb2F0IG1fbGVuZ3RoOworICAgIGJvb2wgbV9sZW5ndGhXYXNTZXQ7CisgICAg
Ym9vbCBtX2lzVmFsaWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0NhbGNQYXJzZXIuY3BwCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDI1OSBAQAorLy8gQ29weXJpZ2h0IDIwMTQgVGhlIENocm9t
aXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisvLyBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8KKy8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorLy8gbWV0OgorLy8KKy8vICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKy8vIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKy8vICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
Ly8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lcgorLy8gaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorLy8gZGlzdHJpYnV0aW9uLgorLy8gICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisvLyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKy8vCisvLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisvLyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisvLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisvLyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisvLyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKy8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorLy8gKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisvLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2l6ZXND
YWxjUGFyc2VyLmgiCisKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlbi5oIgorI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKKyNpbmNsdWRlICJTaXplc0F0dHJpYnV0ZVBhcnNlci5oIgorCituYW1lc3Bh
Y2UgV2ViQ29yZSB7CisKK1NpemVzQ2FsY1BhcnNlcjo6U2l6ZXNDYWxjUGFyc2VyKENTU1BhcnNl
clRva2VuUmFuZ2UgcmFuZ2UsIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgUmVuZGVyVmlldyYg
dmlldykKKyAgICA6IG1fcmVzdWx0KDApCisgICAgLCBtX3N0eWxlKHN0eWxlKQorICAgICwgbV92
aWV3KHZpZXcpCit7CisgICAgbV9pc1ZhbGlkID0gY2FsY1RvUmV2ZXJzZVBvbGlzaE5vdGF0aW9u
KHJhbmdlKSAmJiBjYWxjdWxhdGUoKTsKK30KKworZmxvYXQgU2l6ZXNDYWxjUGFyc2VyOjpyZXN1
bHQoKSBjb25zdAoreworICAgIEFTU0VSVChtX2lzVmFsaWQpOworICAgIHJldHVybiBtX3Jlc3Vs
dDsKK30KKworc3RhdGljIGJvb2wgb3BlcmF0b3JQcmlvcml0eShVQ2hhciBjYywgYm9vbCYgaGln
aFByaW9yaXR5KQoreworICAgIGlmIChjYyA9PSAnKycgfHwgY2MgPT0gJy0nKQorICAgICAgICBo
aWdoUHJpb3JpdHkgPSBmYWxzZTsKKyAgICBlbHNlIGlmIChjYyA9PSAnKicgfHwgY2MgPT0gJy8n
KQorICAgICAgICBoaWdoUHJpb3JpdHkgPSB0cnVlOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFNpemVzQ2FsY1BhcnNlcjo6aGFu
ZGxlT3BlcmF0b3IoVmVjdG9yPENTU1BhcnNlclRva2VuPiYgc3RhY2ssIGNvbnN0IENTU1BhcnNl
clRva2VuJiB0b2tlbikKK3sKKyAgICAvLyBJZiB0aGUgdG9rZW4gaXMgYW4gb3BlcmF0b3IsIG8x
LCB0aGVuOgorICAgIC8vIHdoaWxlIHRoZXJlIGlzIGFuIG9wZXJhdG9yIHRva2VuLCBvMiwgYXQg
dGhlIHRvcCBvZiB0aGUgc3RhY2ssIGFuZAorICAgIC8vIGVpdGhlciBvMSBpcyBsZWZ0LWFzc29j
aWF0aXZlIGFuZCBpdHMgcHJlY2VkZW5jZSBpcyBlcXVhbCB0byB0aGF0IG9mIG8yLAorICAgIC8v
IG9yIG8xIGhhcyBwcmVjZWRlbmNlIGxlc3MgdGhhbiB0aGF0IG9mIG8yLAorICAgIC8vIHBvcCBv
MiBvZmYgdGhlIHN0YWNrLCBvbnRvIHRoZSBvdXRwdXQgcXVldWU7CisgICAgLy8gcHVzaCBvMSBv
bnRvIHRoZSBzdGFjay4KKyAgICBib29sIHN0YWNrT3BlcmF0b3JQcmlvcml0eTsKKyAgICBib29s
IGluY29taW5nT3BlcmF0b3JQcmlvcml0eTsKKworICAgIGlmICghb3BlcmF0b3JQcmlvcml0eSh0
b2tlbi5kZWxpbWl0ZXIoKSwgaW5jb21pbmdPcGVyYXRvclByaW9yaXR5KSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIGlmICghc3RhY2suaXNFbXB0eSgpICYmIHN0YWNrLmxhc3QoKS50eXBl
KCkgPT0gRGVsaW1pdGVyVG9rZW4pIHsKKyAgICAgICAgaWYgKCFvcGVyYXRvclByaW9yaXR5KHN0
YWNrLmxhc3QoKS5kZWxpbWl0ZXIoKSwgc3RhY2tPcGVyYXRvclByaW9yaXR5KSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKCFpbmNvbWluZ09wZXJhdG9yUHJpb3JpdHkg
fHwgc3RhY2tPcGVyYXRvclByaW9yaXR5KSB7CisgICAgICAgICAgICBhcHBlbmRPcGVyYXRvcihz
dGFjay5sYXN0KCkpOworICAgICAgICAgICAgc3RhY2sucmVtb3ZlTGFzdCgpOworICAgICAgICB9
CisgICAgfQorICAgIHN0YWNrLmFwcGVuZCh0b2tlbik7CisgICAgcmV0dXJuIHRydWU7Cit9CisK
K3ZvaWQgU2l6ZXNDYWxjUGFyc2VyOjphcHBlbmROdW1iZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW4m
IHRva2VuKQoreworICAgIFNpemVzQ2FsY1ZhbHVlIHZhbHVlOworICAgIHZhbHVlLnZhbHVlID0g
dG9rZW4ubnVtZXJpY1ZhbHVlKCk7CisgICAgbV92YWx1ZUxpc3QuYXBwZW5kKHZhbHVlKTsKK30K
KworYm9vbCBTaXplc0NhbGNQYXJzZXI6OmFwcGVuZExlbmd0aChjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4pCit7CisgICAgU2l6ZXNDYWxjVmFsdWUgdmFsdWU7CisgICAgZG91YmxlIHJlc3Vs
dCA9IFNpemVzQXR0cmlidXRlUGFyc2VyOjpjb21wdXRlTGVuZ3RoKHRva2VuLm51bWVyaWNWYWx1
ZSgpLCB0b2tlbi51bml0VHlwZSgpLCBtX3N0eWxlLCBtX3ZpZXcpOworICAgIHZhbHVlLnZhbHVl
ID0gcmVzdWx0OworICAgIHZhbHVlLmlzTGVuZ3RoID0gdHJ1ZTsKKyAgICBtX3ZhbHVlTGlzdC5h
cHBlbmQodmFsdWUpOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNpemVzQ2FsY1BhcnNl
cjo6YXBwZW5kT3BlcmF0b3IoY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRva2VuKQoreworICAgIFNp
emVzQ2FsY1ZhbHVlIHZhbHVlOworICAgIHZhbHVlLm9wZXJhdGlvbiA9IHRva2VuLmRlbGltaXRl
cigpOworICAgIG1fdmFsdWVMaXN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK2Jvb2wgU2l6ZXNDYWxj
UGFyc2VyOjpjYWxjVG9SZXZlcnNlUG9saXNoTm90YXRpb24oQ1NTUGFyc2VyVG9rZW5SYW5nZSBy
YW5nZSkKK3sKKyAgICAvLyBUaGlzIG1ldGhvZCBpbXBsZW1lbnRzIHRoZSBzaHVudGluZyB5YXJk
IGFsZ29yaXRobSwgdG8gdHVybiB0aGUgY2FsYyBzeW50YXggaW50byBhIHJldmVyc2UgcG9saXNo
IG5vdGF0aW9uLgorICAgIC8vIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2h1bnRpbmct
eWFyZF9hbGdvcml0aG0KKworICAgIFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4gc3RhY2s7CisgICAg
d2hpbGUgKCFyYW5nZS5hdEVuZCgpKSB7CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuJiB0
b2tlbiA9IHJhbmdlLmNvbnN1bWUoKTsKKyAgICAgICAgc3dpdGNoICh0b2tlbi50eXBlKCkpIHsK
KyAgICAgICAgY2FzZSBOdW1iZXJUb2tlbjoKKyAgICAgICAgICAgIGFwcGVuZE51bWJlcih0b2tl
bik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEaW1lbnNpb25Ub2tlbjoKKyAg
ICAgICAgICAgIGlmICghQ1NTUHJpbWl0aXZlVmFsdWU6OmlzTGVuZ3RoKHRva2VuLnVuaXRUeXBl
KCkpIHx8ICFhcHBlbmRMZW5ndGgodG9rZW4pKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERlbGltaXRlclRva2VuOgorICAg
ICAgICAgICAgaWYgKCFoYW5kbGVPcGVyYXRvcihzdGFjaywgdG9rZW4pKQorICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZ1bmN0
aW9uVG9rZW46CisgICAgICAgICAgICBpZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2UodG9rZW4u
dmFsdWUoKSwgImNhbGMiKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAvLyAiY2FsYygiIGlzIHRoZSBzYW1lIGFzICIoIgorICAgICAgICAgICAgRkFMTFRIUk9V
R0g7CisgICAgICAgIGNhc2UgTGVmdFBhcmVudGhlc2lzVG9rZW46CisgICAgICAgICAgICAvLyBJ
ZiB0aGUgdG9rZW4gaXMgYSBsZWZ0IHBhcmVudGhlc2lzLCB0aGVuIHB1c2ggaXQgb250byB0aGUg
c3RhY2suCisgICAgICAgICAgICBzdGFjay5hcHBlbmQodG9rZW4pOworICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgIGNhc2UgUmlnaHRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICAgICAgLy8g
SWYgdGhlIHRva2VuIGlzIGEgcmlnaHQgcGFyZW50aGVzaXM6CisgICAgICAgICAgICAvLyBVbnRp
bCB0aGUgdG9rZW4gYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2sgaXMgYSBsZWZ0IHBhcmVudGhlc2lz
LCBwb3Agb3BlcmF0b3JzIG9mZiB0aGUgc3RhY2sgb250byB0aGUgb3V0cHV0IHF1ZXVlLgorICAg
ICAgICAgICAgd2hpbGUgKCFzdGFjay5pc0VtcHR5KCkgJiYgc3RhY2subGFzdCgpLnR5cGUoKSAh
PSBMZWZ0UGFyZW50aGVzaXNUb2tlbiAmJiBzdGFjay5sYXN0KCkudHlwZSgpICE9IEZ1bmN0aW9u
VG9rZW4pIHsKKyAgICAgICAgICAgICAgICBhcHBlbmRPcGVyYXRvcihzdGFjay5sYXN0KCkpOwor
ICAgICAgICAgICAgICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIC8vIElmIHRoZSBzdGFjayBydW5zIG91dCB3aXRob3V0IGZpbmRpbmcgYSBsZWZ0IHBh
cmVudGhlc2lzLCB0aGVuIHRoZXJlIGFyZSBtaXNtYXRjaGVkIHBhcmVudGhlc2VzLgorICAgICAg
ICAgICAgaWYgKHN0YWNrLmlzRW1wdHkoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAvLyBQb3AgdGhlIGxlZnQgcGFyZW50aGVzaXMgZnJvbSB0aGUgc3RhY2ss
IGJ1dCBub3Qgb250byB0aGUgb3V0cHV0IHF1ZXVlLgorICAgICAgICAgICAgc3RhY2sucmVtb3Zl
TGFzdCgpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2hpdGVzcGFjZVRva2Vu
OgorICAgICAgICBjYXNlIEVPRlRva2VuOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgQ29tbWVudFRva2VuOgorICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
ICAgIGNhc2UgQ0RPVG9rZW46CisgICAgICAgIGNhc2UgQ0RDVG9rZW46CisgICAgICAgIGNhc2Ug
QXRLZXl3b3JkVG9rZW46CisgICAgICAgIGNhc2UgSGFzaFRva2VuOgorICAgICAgICBjYXNlIFVy
bFRva2VuOgorICAgICAgICBjYXNlIEJhZFVybFRva2VuOgorICAgICAgICBjYXNlIFBlcmNlbnRh
Z2VUb2tlbjoKKyAgICAgICAgY2FzZSBJbmNsdWRlTWF0Y2hUb2tlbjoKKyAgICAgICAgY2FzZSBE
YXNoTWF0Y2hUb2tlbjoKKyAgICAgICAgY2FzZSBQcmVmaXhNYXRjaFRva2VuOgorICAgICAgICBj
YXNlIFN1ZmZpeE1hdGNoVG9rZW46CisgICAgICAgIGNhc2UgU3Vic3RyaW5nTWF0Y2hUb2tlbjoK
KyAgICAgICAgY2FzZSBDb2x1bW5Ub2tlbjoKKyAgICAgICAgY2FzZSBVbmljb2RlUmFuZ2VUb2tl
bjoKKyAgICAgICAgY2FzZSBJZGVudFRva2VuOgorICAgICAgICBjYXNlIENvbW1hVG9rZW46Cisg
ICAgICAgIGNhc2UgQ29sb25Ub2tlbjoKKyAgICAgICAgY2FzZSBTZW1pY29sb25Ub2tlbjoKKyAg
ICAgICAgY2FzZSBMZWZ0QnJhY2VUb2tlbjoKKyAgICAgICAgY2FzZSBMZWZ0QnJhY2tldFRva2Vu
OgorICAgICAgICBjYXNlIFJpZ2h0QnJhY2VUb2tlbjoKKyAgICAgICAgY2FzZSBSaWdodEJyYWNr
ZXRUb2tlbjoKKyAgICAgICAgY2FzZSBTdHJpbmdUb2tlbjoKKyAgICAgICAgY2FzZSBCYWRTdHJp
bmdUb2tlbjoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIC8vIFdoZW4gdGhlcmUgYXJlIG5vIG1vcmUgdG9rZW5zIHRvIHJlYWQ6CisgICAgLy8gV2hp
bGUgdGhlcmUgYXJlIHN0aWxsIG9wZXJhdG9yIHRva2VucyBpbiB0aGUgc3RhY2s6CisgICAgd2hp
bGUgKCFzdGFjay5pc0VtcHR5KCkpIHsKKyAgICAgICAgLy8gSWYgdGhlIG9wZXJhdG9yIHRva2Vu
IG9uIHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGEgcGFyZW50aGVzaXMsIHRoZW4gdGhlcmUgYXJl
IG1pc21hdGNoZWQgcGFyZW50aGVzZXMuCisgICAgICAgIENTU1BhcnNlclRva2VuVHlwZSB0eXBl
ID0gc3RhY2subGFzdCgpLnR5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gTGVmdFBhcmVudGhl
c2lzVG9rZW4gfHwgdHlwZSA9PSBGdW5jdGlvblRva2VuKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAvLyBQb3AgdGhlIG9wZXJhdG9yIG9udG8gdGhlIG91dHB1dCBxdWV1ZS4K
KyAgICAgICAgYXBwZW5kT3BlcmF0b3Ioc3RhY2subGFzdCgpKTsKKyAgICAgICAgc3RhY2sucmVt
b3ZlTGFzdCgpOworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgb3Bl
cmF0ZU9uU3RhY2soVmVjdG9yPFNpemVzQ2FsY1ZhbHVlPiYgc3RhY2ssIFVDaGFyIG9wZXJhdGlv
bikKK3sKKyAgICBpZiAoc3RhY2suc2l6ZSgpIDwgMikKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIFNpemVzQ2FsY1ZhbHVlIHJpZ2h0T3BlcmFuZCA9IHN0YWNrLmxhc3QoKTsKKyAgICBzdGFj
ay5yZW1vdmVMYXN0KCk7CisgICAgU2l6ZXNDYWxjVmFsdWUgbGVmdE9wZXJhbmQgPSBzdGFjay5s
YXN0KCk7CisgICAgc3RhY2sucmVtb3ZlTGFzdCgpOworICAgIGJvb2wgaXNMZW5ndGg7CisgICAg
c3dpdGNoIChvcGVyYXRpb24pIHsKKyAgICBjYXNlICcrJzoKKyAgICAgICAgaWYgKHJpZ2h0T3Bl
cmFuZC5pc0xlbmd0aCAhPSBsZWZ0T3BlcmFuZC5pc0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaXNMZW5ndGggPSAocmlnaHRPcGVyYW5kLmlzTGVuZ3RoICYmIGxl
ZnRPcGVyYW5kLmlzTGVuZ3RoKTsKKyAgICAgICAgc3RhY2suYXBwZW5kKFNpemVzQ2FsY1ZhbHVl
KGxlZnRPcGVyYW5kLnZhbHVlICsgcmlnaHRPcGVyYW5kLnZhbHVlLCBpc0xlbmd0aCkpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlICctJzoKKyAgICAgICAgaWYgKHJpZ2h0T3BlcmFuZC5pc0xl
bmd0aCAhPSBsZWZ0T3BlcmFuZC5pc0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgaXNMZW5ndGggPSAocmlnaHRPcGVyYW5kLmlzTGVuZ3RoICYmIGxlZnRPcGVyYW5k
LmlzTGVuZ3RoKTsKKyAgICAgICAgc3RhY2suYXBwZW5kKFNpemVzQ2FsY1ZhbHVlKGxlZnRPcGVy
YW5kLnZhbHVlIC0gcmlnaHRPcGVyYW5kLnZhbHVlLCBpc0xlbmd0aCkpOworICAgICAgICBicmVh
azsKKyAgICBjYXNlICcqJzoKKyAgICAgICAgaWYgKHJpZ2h0T3BlcmFuZC5pc0xlbmd0aCAmJiBs
ZWZ0T3BlcmFuZC5pc0xlbmd0aCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aXNMZW5ndGggPSAocmlnaHRPcGVyYW5kLmlzTGVuZ3RoIHx8IGxlZnRPcGVyYW5kLmlzTGVuZ3Ro
KTsKKyAgICAgICAgc3RhY2suYXBwZW5kKFNpemVzQ2FsY1ZhbHVlKGxlZnRPcGVyYW5kLnZhbHVl
ICogcmlnaHRPcGVyYW5kLnZhbHVlLCBpc0xlbmd0aCkpOworICAgICAgICBicmVhazsKKyAgICBj
YXNlICcvJzoKKyAgICAgICAgaWYgKHJpZ2h0T3BlcmFuZC5pc0xlbmd0aCB8fCByaWdodE9wZXJh
bmQudmFsdWUgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgc3RhY2su
YXBwZW5kKFNpemVzQ2FsY1ZhbHVlKGxlZnRPcGVyYW5kLnZhbHVlIC8gcmlnaHRPcGVyYW5kLnZh
bHVlLCBsZWZ0T3BlcmFuZC5pc0xlbmd0aCkpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0
OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCiti
b29sIFNpemVzQ2FsY1BhcnNlcjo6Y2FsY3VsYXRlKCkKK3sKKyAgICBWZWN0b3I8U2l6ZXNDYWxj
VmFsdWU+IHN0YWNrOworICAgIGZvciAoY29uc3QgYXV0byYgdmFsdWUgOiBtX3ZhbHVlTGlzdCkg
eworICAgICAgICBpZiAodmFsdWUub3BlcmF0aW9uID09IDApIHsKKyAgICAgICAgICAgIHN0YWNr
LmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoIW9wZXJh
dGVPblN0YWNrKHN0YWNrLCB2YWx1ZS5vcGVyYXRpb24pKQorICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoc3RhY2suc2l6ZSgpID09IDEgJiYg
c3RhY2subGFzdCgpLmlzTGVuZ3RoKSB7CisgICAgICAgIG1fcmVzdWx0ID0gc3RkOjptYXgoY2xh
bXBUbzxmbG9hdD4oc3RhY2subGFzdCgpLnZhbHVlKSwgKGZsb2F0KTAuMCk7CisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNDYWxjUGFyc2Vy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0NhbGNQYXJz
ZXIuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQ2Fs
Y1BhcnNlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsODMgQEAKKy8vIENvcHlyaWdodCAy
MDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4K
Ky8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBw
cm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
Ky8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8v
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRl
ICJDU1NQYXJzZXJUb2tlbi5oIgorI2luY2x1ZGUgIkNTU1BhcnNlclRva2VuUmFuZ2UuaCIKKyNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBSZW5kZXJTdHlsZTsKK2NsYXNzIFJlbmRlclZpZXc7CisKK3N0cnVjdCBTaXplc0NhbGNW
YWx1ZSB7CisgICAgZG91YmxlIHZhbHVlOworICAgIGJvb2wgaXNMZW5ndGg7CisgICAgVUNoYXIg
b3BlcmF0aW9uOworCisgICAgU2l6ZXNDYWxjVmFsdWUoKQorICAgICAgICA6IHZhbHVlKDApCisg
ICAgICAgICwgaXNMZW5ndGgoZmFsc2UpCisgICAgICAgICwgb3BlcmF0aW9uKDApCisgICAgewor
ICAgIH0KKworICAgIFNpemVzQ2FsY1ZhbHVlKGRvdWJsZSBudW1lcmljVmFsdWUsIGJvb2wgbGVu
Z3RoKQorICAgICAgICA6IHZhbHVlKG51bWVyaWNWYWx1ZSkKKyAgICAgICAgLCBpc0xlbmd0aChs
ZW5ndGgpCisgICAgICAgICwgb3BlcmF0aW9uKDApCisgICAgeworICAgIH0KK307CisKK2NsYXNz
IFNpemVzQ2FsY1BhcnNlciB7CitwdWJsaWM6CisgICAgU2l6ZXNDYWxjUGFyc2VyKENTU1BhcnNl
clRva2VuUmFuZ2UsIGNvbnN0IFJlbmRlclN0eWxlJiwgUmVuZGVyVmlldyYpOworCisgICAgZmxv
YXQgcmVzdWx0KCkgY29uc3Q7CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9p
c1ZhbGlkOyB9CisKK3ByaXZhdGU6CisgICAgYm9vbCBjYWxjVG9SZXZlcnNlUG9saXNoTm90YXRp
b24oQ1NTUGFyc2VyVG9rZW5SYW5nZSk7CisgICAgYm9vbCBjYWxjdWxhdGUoKTsKKyAgICB2b2lk
IGFwcGVuZE51bWJlcihjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIGJvb2wgYXBwZW5kTGVu
Z3RoKGNvbnN0IENTU1BhcnNlclRva2VuJik7CisgICAgYm9vbCBoYW5kbGVPcGVyYXRvcihWZWN0
b3I8Q1NTUGFyc2VyVG9rZW4+JiBzdGFjaywgY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICB2
b2lkIGFwcGVuZE9wZXJhdG9yKGNvbnN0IENTU1BhcnNlclRva2VuJik7CisKKyAgICBWZWN0b3I8
U2l6ZXNDYWxjVmFsdWU+IG1fdmFsdWVMaXN0OworICAgIGJvb2wgbV9pc1ZhbGlkOworICAgIGZs
b2F0IG1fcmVzdWx0OworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3N0eWxlOworICAgIFJlbmRl
clZpZXcmIG1fdmlldzsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>288600</attachid>
            <date>2016-09-12 12:21:22 -0700</date>
            <delta_ts>2016-09-12 13:54:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>31690</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTgxNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE2LTA5LTEyICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBBZGQgc3VwcG9y
dCBmb3IgdGhlIHBhcnNpbmcgb2YgdGhlIEhUTUwgc2l6ZXMgYXR0cmlidXRlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE4NjgKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFkZHMgdGhl
IHBhcnNlcnMgZm9yIHRoZSBzaXplcyBhdHRyaWJ1dGUuIFRoaXMgY29kZSBpcyBoZWF2aWx5IG1v
ZGlmaWVkCisgICAgICAgIGZyb20gQmxpbmssIGFuZCBpdCByZWFsbHkgb25seSBtYWtlcyB1c2Ug
b2YgdGhlIHRva2VuaXphdGlvbi9wYXJzaW5nIGNvZGUuIFdoYXQgaXMgZG9uZQorICAgICAgICB3
aXRoIHRoZSByZXN1bHRzIGludm9sdmVzIHRoZSBzYW1lIG9yaWdpbmFsIGNvZGUgdGhhdCB3ZSB1
c2VkIG92ZXIgaW4gU291cmNlU2l6ZUxpc3QuY3BwLgorCisgICAgICAgICogQ01ha2VMaXN0cy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIGNzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpjb21wdXRlTGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpTaXplc0F0dHJpYnV0ZVBhcnNlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6bGVuZ3RoKToKKyAgICAgICAg
KFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpjYWxjdWxhdGVMZW5ndGhJblBpeGVscyk6
CisgICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6bWVkaWFDb25kaXRpb25N
YXRjaGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQXR0cmlidXRlUGFyc2VyOjpwYXJzZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6ZWZmZWN0aXZlU2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpTaXplc0F0dHJpYnV0ZVBhcnNlcjo6ZWZmZWN0aXZlU2l6ZURl
ZmF1bHRWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5o
OiBBZGRlZC4KKyAgICAgICAgKiBjc3MvcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5jcHA6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpTaXplc0NhbGNQYXJzZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpyZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3JQcmlvcml0eSk6CisgICAgICAgIChXZWJDb3JlOjpTaXplc0NhbGNQYXJz
ZXI6OmhhbmRsZU9wZXJhdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1BhcnNlcjo6
YXBwZW5kTnVtYmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1BhcnNlcjo6YXBwZW5k
TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1BhcnNlcjo6YXBwZW5kT3BlcmF0
b3IpOgorICAgICAgICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpjYWxjVG9SZXZlcnNlUG9s
aXNoTm90YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0ZU9uU3RhY2spOgorICAgICAg
ICAoV2ViQ29yZTo6U2l6ZXNDYWxjUGFyc2VyOjpjYWxjdWxhdGUpOgorICAgICAgICAqIGNzcy9w
YXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U2l6ZXND
YWxjVmFsdWU6OlNpemVzQ2FsY1ZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNpemVzQ2FsY1Bh
cnNlcjo6aXNWYWxpZCk6CisKIDIwMTYtMDktMTIgIEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIEVuaGFuY2UgTmV0d29yayBsb2dnaW5nCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DTWFr
ZUxpc3RzLnR4dAkocmV2aXNpb24gMjA1NzkwKQorKysgU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzNjYsNiArMTM2Niw4IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBjc3MvcGFyc2VyL0NTU1Rva2VuaXplcklucHV0U3RyZWFtLmNwcAogICAgIGNz
cy9wYXJzZXIvTWVkaWFRdWVyeUJsb2NrV2F0Y2hlci5jcHAKICAgICBjc3MvcGFyc2VyL01lZGlh
UXVlcnlQYXJzZXIuY3BwCisgICAgY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAK
KyAgICBjc3MvcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5jcHAKICAgICBjc3MvcGFyc2VyL1NWR0NT
U1BhcnNlci5jcHAKIAogICAgIGNzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApJbmRleDogU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gMjA1NzkwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQyLDYgKzMzNDIsMTAgQEAKIAkJOTNGOUI3
QTAwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlFMEJBNjAzMjYwMDg1NDA2NCAv
KiBKU0NEQVRBU2VjdGlvbi5jcHAgKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2NCAv
KiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi87
IH07CiAJCTkzRkRBRkNBMEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkRBRkM5MEIx
MTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NDQ0Q0JEMzFEODYwQzhCMDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDk0NDRDQkQwMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXplc0NhbGNQYXJzZXIu
Y3BwICovOyB9OworCQk5NDQ0Q0JENDFEODYwQzhCMDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2Vy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDQ0Q0JD
RjFEODYwQzc0MDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2VyLmggKi87IH07CisJCTk0NDRDQkQ1
MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDQ0Q0JEMjFEODYwQzc0MDA3M0Ew
NzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwICovOyB9OworCQk5NDQ0Q0JENjFEODYwQzhC
MDA3M0EwNzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkQxMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXpl
c0F0dHJpYnV0ZVBhcnNlci5oICovOyB9OwogCQk5NDZEMzcyRDFENkNCMjk0MDA3NzA4NEYgLyog
Q1NTUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDk0NkQzNzI4MUQ2Q0IyOEIwMDc3MDg0RiAvKiBDU1NQYXJzZXIuY3BwICovOyB9OwogCQk5
NDZEMzcyRTFENkNCMjk0MDA3NzA4NEYgLyogQ1NTUGFyc2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NDZEMzcyOTFENkNCMjhCMDA3NzA4NEYgLyog
Q1NTUGFyc2VyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJOTQ2RDM3MkYxRDZDQjI5NDAwNzcwODRGIC8qIENTU1BhcnNlck1vZGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NkQzNzJBMUQ2Q0IyOEIw
MDc3MDg0RiAvKiBDU1NQYXJzZXJNb2RlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwNDk5LDYgKzEwNTAzLDEwIEBACiAJCTkzRjlCNzlFMEJB
NjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkzRjlCNzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9y
SW5zZXJ0QWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JJ
bnNlcnRBY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0NENCQ0YxRDg2
MEM3NDAwNzNBMDc0IC8qIFNpemVzQ2FsY1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IG5hbWUgPSBTaXplc0NhbGNQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9TaXplc0NhbGNQYXJz
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQ0NENCRDAxRDg2MEM3NDAwNzNB
MDc0IC8qIFNpemVzQ2FsY1BhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IG5hbWUgPSBTaXplc0NhbGNQYXJzZXIuY3BwOyBwYXRoID0gcGFyc2VyL1NpemVzQ2FsY1BhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQxMUQ4NjBDNzQwMDcz
QTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IG5hbWUgPSBTaXplc0F0dHJpYnV0ZVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL1NpemVzQXR0cmli
dXRlUGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTk0NDRDQkQyMUQ4NjBD
NzQwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHA7IHBhdGggPSBwYXJz
ZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk5NDZEMzcyODFENkNCMjhCMDA3NzA4NEYgLyogQ1NTUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1BhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NT
UGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MjkxRDZDQjI4
QjAwNzcwODRGIC8qIENTU1BhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBDU1NQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3MkExRDZDQjI4QjAwNzcwODRGIC8qIENTU1BhcnNlck1vZGUu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2VyTW9kZS5oOyBwYXRo
ID0gcGFyc2VyL0NTU1BhcnNlck1vZGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE4MjEwLDYgKzE4MjE4LDEwIEBACiAJCQkJOTQ5M0I2QjcxRDc0QjM5NTAwODhFNzgwIC8qIE1l
ZGlhUXVlcnlCbG9ja1dhdGNoZXIuaCAqLywKIAkJCQk5NDkzQjZCODFENzRCMzk1MDA4OEU3ODAg
LyogTWVkaWFRdWVyeVBhcnNlci5jcHAgKi8sCiAJCQkJOTQ5M0I2QjkxRDc0QjM5NTAwODhFNzgw
IC8qIE1lZGlhUXVlcnlQYXJzZXIuaCAqLywKKwkJCQk5NDQ0Q0JEMDFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmNwcCAqLywKKwkJCQk5NDQ0Q0JDRjFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmggKi8sCisJCQkJOTQ0NENCRDIxRDg2MEM3NDAwNzNBMDc0IC8q
IFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCAqLywKKwkJCQk5NDQ0Q0JEMTFEODYwQzc0MDA3M0Ew
NzQgLyogU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCAqLywKIAkJCQk5NDZEMzczMjFENkNDMzcyMDA3
NzA4NEYgLyogU1ZHQ1NTUGFyc2VyLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gcGFyc2VyOwpA
QCAtMjQ4MDksNiArMjQ4MjEsNyBAQAogCQkJCTFDMDEwNzAxMTkyNTk0REYwMDhBNDIwMSAvKiBJ
bmxpbmVUZXh0Qm94U3R5bGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMEE1OEU1MUJBQTQwQjEw
MEMxOTI4MiAvKiBJblByb2Nlc3NJREJTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RTM1
MjREMTI0NTBDNjYwMEJBRjVEOSAvKiBJbnB1dFR5cGUuaCBpbiBIZWFkZXJzICovLAorCQkJCTk0
NDRDQkQ2MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5oIGluIEhlYWRl
cnMgKi8sCiAJCQkJQzM0ODYxMjQxNUZERTIxRTAwN0ExQ0M5IC8qIElucHV0VHlwZU5hbWVzLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5MzMwOURFQTA5OUU2NDkyMDA1NkU1ODEgLyogSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTMzMDlERUMwOTlFNjQ5MjAw
NTZFNTgxIC8qIEluc2VydExpbmVCcmVha0NvbW1hbmQuaCBpbiBIZWFkZXJzICovLApAQCAtMjcw
MzUsNiArMjcwNDgsNyBAQAogCQkJCTdDNDhBNkQxMTkxQzlENjUwMDAyNjY3NCAvKiBXZWJLaXRO
YW1lc3BhY2UuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1REVCREE0MTZGQjkwODcwMDgzNkZFMCAv
KiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQk0OTRCRDc5NTBGNTVDOEVFMDA3NDc4MjggLyogV2ViS2l0UG9pbnQuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk0NDRDQkQ0MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0NhbGNQYXJzZXIuaCBp
biBIZWFkZXJzICovLAogCQkJCTU3MDlFOENGMUQ0MTNEOUEwMDMyNDRBQyAvKiBXZWJLaXRTdWJ0
bGVDcnlwdG8uaCBpbiBIZWFkZXJzICovLAogCQkJCTQxNEI4MjA1MUQ2REYwRTUwMDc3RUJFMyAv
KiBTdHJ1Y3R1cmVkQ2xvbmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTMxQzBGRjI1MEU0Q0VCNkUw
MDdENkZFNSAvKiBXZWJLaXRUcmFuc2l0aW9uRXZlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjg0
MDgsNiArMjg0MjIsNyBAQAogCQkJCTJENUE1OTJGMTUyNTI1MjMwMDM2RUU1MSAvKiBJbWFnZU9y
aWVudGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUI1MUEyRjQxMTdEN0Q1REUwMDcyNTE3
QSAvKiBJbWFnZVF1YWxpdHlDb250cm9sbGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0M3
MjVFMTk3NDg3NEIwMEFFREQwQyAvKiBJbWFnZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKKwkJ
CQk5NDQ0Q0JEMzFEODYwQzhCMDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTRCMzQ4MDkzMEVFRjUwRDQwMEFDMUI0MSAvKiBJbWFnZVNvdXJjZUNHTWFj
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMzE2RkUxMTcwRTZFMURBNzAwQkY2MDg4IC8qIEltcGxp
Y2l0QW5pbWF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJFOTYxQzU0MThBRDMzODUwMEQw
N0RDNSAvKiBJbmJhbmREYXRhVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLApAQCAtMjk5MjIs
NiArMjk5MzcsNyBAQAogCQkJCTRCNkZBNkY3MEMzOUU0QTEwMDA4NzAxMSAvKiBTbWFydFJlcGxh
Y2VDRi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNEFGRDAwQjBEQUYzMzU0MDBGNUY1NUMgLyog
U01JTFRpbWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRTRBRkQwMEQwREFGMzM1NTAwRjVGNTVD
IC8qIFNNSUxUaW1lQ29udGFpbmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTk0NDRDQkQ1MUQ4
NjBDOEIwMDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk1QzY4OEFBMzFEMzgxNEJGMDAwQjU0RkEgLyogU29ja2V0UHJvdmlkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNTEwRDRBMzYxMDMxNjVFRTAwNDlFQTU0IC8qIFNvY2tldFN0cmVhbUhh
bmRsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUFCQUUxRjEwM0MxOTEzMDA4QzUyNjAgLyog
U29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291
cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0
ZVBhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNDkgQEAKKy8vIENvcHlyaWdo
dCAyMDE0IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKy8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisv
LyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlv
bi4KKy8vICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKKy8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8g
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
Ky8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlNpemVzQXR0cmlidXRlUGFyc2VyLmgiCisKKyNpbmNsdWRlICJDU1NQcmltaXRp
dmVWYWx1ZS5oIgorI2luY2x1ZGUgIkNTU1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEuaCIKKyNpbmNs
dWRlICJDU1NUb2tlbml6ZXIuaCIKKyNpbmNsdWRlICJNZWRpYVF1ZXJ5RXZhbHVhdG9yLmgiCisj
aW5jbHVkZSAiUmVuZGVyVmlldy5oIgorI2luY2x1ZGUgIlNpemVzQ2FsY1BhcnNlci5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2Zsb2F0IFNpemVzQXR0cmlidXRlUGFyc2VyOjpjb21wdXRl
TGVuZ3RoKGRvdWJsZSB2YWx1ZSwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB0eXBlLCBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlclZpZXcmIHJlbmRlcmVyKQoreworICAgIENT
U1RvTGVuZ3RoQ29udmVyc2lvbkRhdGEgY29udmVyc2lvbkRhdGEoJnN0eWxlLCAmc3R5bGUsICZy
ZW5kZXJlcik7CisgICAgCisgICAgLy8gQmVjYXVzZSB3ZSBldmFsdWF0ZSAic2l6ZXMiIGF0IHBh
cnNlIHRpbWUgKGJlZm9yZSBzdHlsZSBoYXMgYmVlbiByZXNvbHZlZCksIHRoZSBmb250IG1ldHJp
Y3MgdXNlZCBmb3IgdGhlc2Ugc3BlY2lmaWMgdW5pdHMKKyAgICAvLyBhcmUgbm90IGF2YWlsYWJs
ZS4gVGhlIGZvbnQgc2VsZWN0b3IncyBpbnRlcm5hbCBjb25zaXN0ZW5jeSBpc24ndCBndWFyYW50
ZWVkIGp1c3QgeWV0LCBzbyB3ZSBjYW4ganVzdCB0ZW1wb3JhcmlseSBjbGVhcgorICAgIC8vIHRo
ZSBwb2ludGVyIHRvIGl0IGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIHVuaXQgZXZhbHVhdGlvbi4g
VGhpcyBpcyBhY2NlcHRpYmxlIGJlY2F1c2UgdGhlIHN0eWxlIGFsd2F5cyBjb21lcyBmcm9tIHRo
ZQorICAgIC8vIFJlbmRlclZpZXcsIHdoaWNoIGhhcyBpdHMgZm9udCBpbmZvcm1hdGlvbiBoYXJk
Y29kZWQgaW4gcmVzb2x2ZUZvckRvY3VtZW50KCkgdG8gYmUgLXdlYmtpdC1zdGFuZGFyZCwgd2hv
c2Ugb3BlcmF0aW9ucworICAgIC8vIGRvbid0IHJlcXVpcmUgYSBmb250IHNlbGVjdG9yLgorICAg
IGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfRVhTIHx8IHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19DSFMpIHsKKyAgICAgICAgUmVmUHRyPEZvbnRTZWxlY3Rvcj4gZm9u
dFNlbGVjdG9yID0gc3R5bGUuZm9udENhc2NhZGUoKS5mb250U2VsZWN0b3IoKTsKKyAgICAgICAg
c3R5bGUuZm9udENhc2NhZGUoKS51cGRhdGUobnVsbHB0cik7CisgICAgICAgIGZsb2F0IHJlc3Vs
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTm9uQ2FsY0xlbmd0aERvdWJsZShjb252ZXJz
aW9uRGF0YSwgdHlwZSwgdmFsdWUpOworICAgICAgICBzdHlsZS5mb250Q2FzY2FkZSgpLnVwZGF0
ZShmb250U2VsZWN0b3IuZ2V0KCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAg
ICAKKyAgICByZXR1cm4gY2xhbXBUbzxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVO
b25DYWxjTGVuZ3RoRG91YmxlKGNvbnZlcnNpb25EYXRhLCB0eXBlLCB2YWx1ZSkpOworfQorICAg
IAorU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OlNpemVzQXR0cmlidXRlUGFyc2VyKGNvbnN0IFN0cmlu
ZyYgYXR0cmlidXRlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlclZpZXcmIHZpZXcp
CisgICAgOiBtX3N0eWxlKHN0eWxlKQorICAgICwgbV92aWV3KHZpZXcpCisgICAgLCBtX2xlbmd0
aCgwKQorICAgICwgbV9sZW5ndGhXYXNTZXQoZmFsc2UpCit7CisgICAgbV9pc1ZhbGlkID0gcGFy
c2UoQ1NTVG9rZW5pemVyOjpTY29wZShhdHRyaWJ1dGUpLnRva2VuUmFuZ2UoKSk7Cit9CisKK2Zs
b2F0IFNpemVzQXR0cmlidXRlUGFyc2VyOjpsZW5ndGgoKQoreworICAgIGlmIChtX2lzVmFsaWQp
CisgICAgICAgIHJldHVybiBlZmZlY3RpdmVTaXplKCk7CisgICAgcmV0dXJuIGVmZmVjdGl2ZVNp
emVEZWZhdWx0VmFsdWUoKTsKK30KKworYm9vbCBTaXplc0F0dHJpYnV0ZVBhcnNlcjo6Y2FsY3Vs
YXRlTGVuZ3RoSW5QaXhlbHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSByYW5nZSwgZmxvYXQmIHJlc3Vs
dCkKK3sKKyAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgc3RhcnRUb2tlbiA9IHJhbmdlLnBlZWso
KTsKKyAgICBDU1NQYXJzZXJUb2tlblR5cGUgdHlwZSA9IHN0YXJ0VG9rZW4udHlwZSgpOworICAg
IGlmICh0eXBlID09IERpbWVuc2lvblRva2VuKSB7CisgICAgICAgIGlmICghQ1NTUHJpbWl0aXZl
VmFsdWU6OmlzTGVuZ3RoKHN0YXJ0VG9rZW4udW5pdFR5cGUoKSkpCisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJlc3VsdCA9IGNvbXB1dGVMZW5ndGgoc3RhcnRUb2tlbi5udW1l
cmljVmFsdWUoKSwgc3RhcnRUb2tlbi51bml0VHlwZSgpLCBtX3N0eWxlLCBtX3ZpZXcpOworICAg
ICAgICBpZiAocmVzdWx0ID49IDApCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9IGVs
c2UgaWYgKHR5cGUgPT0gRnVuY3Rpb25Ub2tlbikgeworICAgICAgICBTaXplc0NhbGNQYXJzZXIg
Y2FsY1BhcnNlcihyYW5nZSwgbV9zdHlsZSwgbV92aWV3KTsKKyAgICAgICAgaWYgKCFjYWxjUGFy
c2VyLmlzVmFsaWQoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmVzdWx0
ID0gY2FsY1BhcnNlci5yZXN1bHQoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNl
IGlmICh0eXBlID09IE51bWJlclRva2VuICYmICFzdGFydFRva2VuLm51bWVyaWNWYWx1ZSgpKSB7
CisgICAgICAgIHJlc3VsdCA9IDA7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKworYm9vbCBTaXplc0F0dHJpYnV0ZVBhcnNlcjo6bWVkaWFDb25k
aXRpb25NYXRjaGVzKGNvbnN0IE1lZGlhUXVlcnlTZXQmIG1lZGlhQ29uZGl0aW9uKQoreworICAg
IC8vIEEgTWVkaWEgQ29uZGl0aW9uIGNhbm5vdCBoYXZlIGEgbWVkaWEgdHlwZSBvdGhlciB0aGVu
IHNjcmVlbi4KKyAgICByZXR1cm4gTWVkaWFRdWVyeUV2YWx1YXRvciB7ICJzY3JlZW4iLCBtX3Zp
ZXcuZG9jdW1lbnQoKSwgJm1fc3R5bGUgfS5ldmFsdWF0ZShtZWRpYUNvbmRpdGlvbiwgbV92aWV3
LmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpOworfQorCitib29sIFNpemVzQXR0
cmlidXRlUGFyc2VyOjpwYXJzZShDU1NQYXJzZXJUb2tlblJhbmdlIHJhbmdlKQoreworICAgIC8v
IFNwbGl0IG9uIGEgY29tbWEgdG9rZW4gYW5kIHBhcnNlIHRoZSByZXN1bHQgdG9rZW5zIGFzICht
ZWRpYS1jb25kaXRpb24sIGxlbmd0aCkgcGFpcnMKKyAgICB3aGlsZSAoIXJhbmdlLmF0RW5kKCkp
IHsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIG1lZGlhQ29uZGl0aW9uU3RhcnQgPSAm
cmFuZ2UucGVlaygpOworICAgICAgICAvLyBUaGUgbGVuZ3RoIGlzIHRoZSBsYXN0IGNvbXBvbmVu
dCB2YWx1ZSBiZWZvcmUgdGhlIGNvbW1hIHdoaWNoIGlzbid0IHdoaXRlc3BhY2Ugb3IgYSBjb21t
ZW50CisgICAgICAgIGNvbnN0IENTU1BhcnNlclRva2VuKiBsZW5ndGhUb2tlblN0YXJ0ID0gJnJh
bmdlLnBlZWsoKTsKKyAgICAgICAgY29uc3QgQ1NTUGFyc2VyVG9rZW4qIGxlbmd0aFRva2VuRW5k
ID0gJnJhbmdlLnBlZWsoKTsKKyAgICAgICAgd2hpbGUgKCFyYW5nZS5hdEVuZCgpICYmIHJhbmdl
LnBlZWsoKS50eXBlKCkgIT0gQ29tbWFUb2tlbikgeworICAgICAgICAgICAgbGVuZ3RoVG9rZW5T
dGFydCA9ICZyYW5nZS5wZWVrKCk7CisgICAgICAgICAgICByYW5nZS5jb25zdW1lQ29tcG9uZW50
VmFsdWUoKTsKKyAgICAgICAgICAgIGxlbmd0aFRva2VuRW5kID0gJnJhbmdlLnBlZWsoKTsKKyAg
ICAgICAgICAgIHJhbmdlLmNvbnN1bWVXaGl0ZXNwYWNlKCk7CisgICAgICAgIH0KKyAgICAgICAg
cmFuZ2UuY29uc3VtZSgpOworCisgICAgICAgIGZsb2F0IGxlbmd0aDsKKyAgICAgICAgaWYgKCFj
YWxjdWxhdGVMZW5ndGhJblBpeGVscyhyYW5nZS5tYWtlU3ViUmFuZ2UobGVuZ3RoVG9rZW5TdGFy
dCwgbGVuZ3RoVG9rZW5FbmQpLCBsZW5ndGgpKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYUNvbmRpdGlvbiA9IE1lZGlhUXVlcnlQYXJz
ZXI6OnBhcnNlTWVkaWFDb25kaXRpb24ocmFuZ2UubWFrZVN1YlJhbmdlKG1lZGlhQ29uZGl0aW9u
U3RhcnQsIGxlbmd0aFRva2VuU3RhcnQpKTsKKyAgICAgICAgaWYgKCFtZWRpYUNvbmRpdGlvbiB8
fCAhbWVkaWFDb25kaXRpb25NYXRjaGVzKCptZWRpYUNvbmRpdGlvbikpCisgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgbV9sZW5ndGggPSBsZW5ndGg7CisgICAgICAgIG1fbGVuZ3RoV2Fz
U2V0ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxz
ZTsKK30KKworZmxvYXQgU2l6ZXNBdHRyaWJ1dGVQYXJzZXI6OmVmZmVjdGl2ZVNpemUoKQorewor
ICAgIGlmIChtX2xlbmd0aFdhc1NldCkKKyAgICAgICAgcmV0dXJuIG1fbGVuZ3RoOworICAgIHJl
dHVybiBlZmZlY3RpdmVTaXplRGVmYXVsdFZhbHVlKCk7Cit9CisKK3Vuc2lnbmVkIFNpemVzQXR0
cmlidXRlUGFyc2VyOjplZmZlY3RpdmVTaXplRGVmYXVsdFZhbHVlKCkKK3sKKyAgICByZXR1cm4g
Y2xhbXBUbzxmbG9hdD4oQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVOb25DYWxjTGVuZ3RoRG91
YmxlKHsgJm1fc3R5bGUsICZtX3N0eWxlLCAmbV92aWV3IH0sIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfVlcsIDEwMC4wKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQXR0cmlidXRlUGFyc2VyLmgJKG5vbmV4
aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9TaXplc0F0dHJpYnV0ZVBhcnNl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjYgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRo
ZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChD
KSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
Ky8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisv
LyAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKKy8vIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
Ly8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
Ly8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZWRp
YVF1ZXJ5QmxvY2tXYXRjaGVyLmgiCisjaW5jbHVkZSAiTWVkaWFRdWVyeVBhcnNlci5oIgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIENTU1ZhbHVlOworY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBSZW5kZXJWaWV3OworICAg
IAorY2xhc3MgU2l6ZXNBdHRyaWJ1dGVQYXJzZXIgeworcHVibGljOgorICAgIFNpemVzQXR0cmli
dXRlUGFyc2VyKGNvbnN0IFN0cmluZyYsIGNvbnN0IFJlbmRlclN0eWxlJiwgUmVuZGVyVmlldyYp
OworCisgICAgZmxvYXQgbGVuZ3RoKCk7CisKKyAgICBzdGF0aWMgZmxvYXQgZGVmYXVsdExlbmd0
aChjb25zdCBSZW5kZXJTdHlsZSYsIFJlbmRlclZpZXcmKTsKKyAgICBzdGF0aWMgZmxvYXQgY29t
cHV0ZUxlbmd0aChkb3VibGUgdmFsdWUsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMsIGNv
bnN0IFJlbmRlclN0eWxlJiwgUmVuZGVyVmlldyYpOworCitwcml2YXRlOgorICAgIGJvb2wgcGFy
c2UoQ1NTUGFyc2VyVG9rZW5SYW5nZSk7CisgICAgZmxvYXQgZWZmZWN0aXZlU2l6ZSgpOworICAg
IGJvb2wgY2FsY3VsYXRlTGVuZ3RoSW5QaXhlbHMoQ1NTUGFyc2VyVG9rZW5SYW5nZSwgZmxvYXQm
IHJlc3VsdCk7CisgICAgYm9vbCBtZWRpYUNvbmRpdGlvbk1hdGNoZXMoY29uc3QgTWVkaWFRdWVy
eVNldCYgbWVkaWFDb25kaXRpb24pOworICAgIHVuc2lnbmVkIGVmZmVjdGl2ZVNpemVEZWZhdWx0
VmFsdWUoKTsKKworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3N0eWxlOworICAgIFJlbmRlclZp
ZXcmIG1fdmlldzsKKyAgICBSZWZQdHI8TWVkaWFRdWVyeVNldD4gbV9tZWRpYUNvbmRpdGlvbjsK
KyAgICBmbG9hdCBtX2xlbmd0aDsKKyAgICBib29sIG1fbGVuZ3RoV2FzU2V0OworICAgIGJvb2wg
bV9pc1ZhbGlkOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL3BhcnNlci9TaXplc0NhbGNQYXJzZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmNwcAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwyNjAgQEAKKy8vIENvcHlyaWdodCAyMDE0IFRoZSBDaHJvbWl1bSBB
dXRob3JzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorLy8gQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKy8vCisvLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKy8vIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKy8vIG1ldDoKKy8vCisvLyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisvLyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisvLyAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKy8vIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKy8vIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKy8vIGRpc3RyaWJ1dGlvbi4KKy8vICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworLy8gY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKy8vIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisvLworLy8gVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
Ly8gQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKy8vIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorLy8gTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisvLyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKy8vIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKy8vIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorLy8g
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNpemVzQ2FsY1Bh
cnNlci5oIgorCisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlICJSZW5kZXJW
aWV3LmgiCisjaW5jbHVkZSAiU2l6ZXNBdHRyaWJ1dGVQYXJzZXIuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitTaXplc0NhbGNQYXJzZXI6OlNpemVzQ2FsY1BhcnNlcihDU1NQYXJzZXJUb2tl
blJhbmdlIHJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIFJlbmRlclZpZXcmIHZpZXcp
CisgICAgOiBtX3Jlc3VsdCgwKQorICAgICwgbV9zdHlsZShzdHlsZSkKKyAgICAsIG1fdmlldyh2
aWV3KQoreworICAgIG1faXNWYWxpZCA9IGNhbGNUb1JldmVyc2VQb2xpc2hOb3RhdGlvbihyYW5n
ZSkgJiYgY2FsY3VsYXRlKCk7Cit9CisKK2Zsb2F0IFNpemVzQ2FsY1BhcnNlcjo6cmVzdWx0KCkg
Y29uc3QKK3sKKyAgICBBU1NFUlQobV9pc1ZhbGlkKTsKKyAgICByZXR1cm4gbV9yZXN1bHQ7Cit9
CisKK3N0YXRpYyBib29sIG9wZXJhdG9yUHJpb3JpdHkoVUNoYXIgY2MsIGJvb2wmIGhpZ2hQcmlv
cml0eSkKK3sKKyAgICBpZiAoY2MgPT0gJysnIHx8IGNjID09ICctJykKKyAgICAgICAgaGlnaFBy
aW9yaXR5ID0gZmFsc2U7CisgICAgZWxzZSBpZiAoY2MgPT0gJyonIHx8IGNjID09ICcvJykKKyAg
ICAgICAgaGlnaFByaW9yaXR5ID0gdHJ1ZTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTaXplc0NhbGNQYXJzZXI6OmhhbmRsZU9w
ZXJhdG9yKFZlY3RvcjxDU1NQYXJzZXJUb2tlbj4mIHN0YWNrLCBjb25zdCBDU1NQYXJzZXJUb2tl
biYgdG9rZW4pCit7CisgICAgLy8gSWYgdGhlIHRva2VuIGlzIGFuIG9wZXJhdG9yLCBvMSwgdGhl
bjoKKyAgICAvLyB3aGlsZSB0aGVyZSBpcyBhbiBvcGVyYXRvciB0b2tlbiwgbzIsIGF0IHRoZSB0
b3Agb2YgdGhlIHN0YWNrLCBhbmQKKyAgICAvLyBlaXRoZXIgbzEgaXMgbGVmdC1hc3NvY2lhdGl2
ZSBhbmQgaXRzIHByZWNlZGVuY2UgaXMgZXF1YWwgdG8gdGhhdCBvZiBvMiwKKyAgICAvLyBvciBv
MSBoYXMgcHJlY2VkZW5jZSBsZXNzIHRoYW4gdGhhdCBvZiBvMiwKKyAgICAvLyBwb3AgbzIgb2Zm
IHRoZSBzdGFjaywgb250byB0aGUgb3V0cHV0IHF1ZXVlOworICAgIC8vIHB1c2ggbzEgb250byB0
aGUgc3RhY2suCisgICAgYm9vbCBzdGFja09wZXJhdG9yUHJpb3JpdHk7CisgICAgYm9vbCBpbmNv
bWluZ09wZXJhdG9yUHJpb3JpdHk7CisKKyAgICBpZiAoIW9wZXJhdG9yUHJpb3JpdHkodG9rZW4u
ZGVsaW1pdGVyKCksIGluY29taW5nT3BlcmF0b3JQcmlvcml0eSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICBpZiAoIXN0YWNrLmlzRW1wdHkoKSAmJiBzdGFjay5sYXN0KCkudHlwZSgpID09
IERlbGltaXRlclRva2VuKSB7CisgICAgICAgIGlmICghb3BlcmF0b3JQcmlvcml0eShzdGFjay5s
YXN0KCkuZGVsaW1pdGVyKCksIHN0YWNrT3BlcmF0b3JQcmlvcml0eSkpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlmICghaW5jb21pbmdPcGVyYXRvclByaW9yaXR5IHx8IHN0
YWNrT3BlcmF0b3JQcmlvcml0eSkgeworICAgICAgICAgICAgYXBwZW5kT3BlcmF0b3Ioc3RhY2su
bGFzdCgpKTsKKyAgICAgICAgICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICAgICAgfQorICAg
IH0KKyAgICBzdGFjay5hcHBlbmQodG9rZW4pOworICAgIHJldHVybiB0cnVlOworfQorCit2b2lk
IFNpemVzQ2FsY1BhcnNlcjo6YXBwZW5kTnVtYmVyKGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tl
bikKK3sKKyAgICBTaXplc0NhbGNWYWx1ZSB2YWx1ZTsKKyAgICB2YWx1ZS52YWx1ZSA9IHRva2Vu
Lm51bWVyaWNWYWx1ZSgpOworICAgIG1fdmFsdWVMaXN0LmFwcGVuZCh2YWx1ZSk7Cit9CisKK2Jv
b2wgU2l6ZXNDYWxjUGFyc2VyOjphcHBlbmRMZW5ndGgoY29uc3QgQ1NTUGFyc2VyVG9rZW4mIHRv
a2VuKQoreworICAgIFNpemVzQ2FsY1ZhbHVlIHZhbHVlOworICAgIGRvdWJsZSByZXN1bHQgPSBT
aXplc0F0dHJpYnV0ZVBhcnNlcjo6Y29tcHV0ZUxlbmd0aCh0b2tlbi5udW1lcmljVmFsdWUoKSwg
dG9rZW4udW5pdFR5cGUoKSwgbV9zdHlsZSwgbV92aWV3KTsKKyAgICB2YWx1ZS52YWx1ZSA9IHJl
c3VsdDsKKyAgICB2YWx1ZS5pc0xlbmd0aCA9IHRydWU7CisgICAgbV92YWx1ZUxpc3QuYXBwZW5k
KHZhbHVlKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBTaXplc0NhbGNQYXJzZXI6OmFw
cGVuZE9wZXJhdG9yKGNvbnN0IENTU1BhcnNlclRva2VuJiB0b2tlbikKK3sKKyAgICBTaXplc0Nh
bGNWYWx1ZSB2YWx1ZTsKKyAgICB2YWx1ZS5vcGVyYXRpb24gPSB0b2tlbi5kZWxpbWl0ZXIoKTsK
KyAgICBtX3ZhbHVlTGlzdC5hcHBlbmQodmFsdWUpOworfQorCitib29sIFNpemVzQ2FsY1BhcnNl
cjo6Y2FsY1RvUmV2ZXJzZVBvbGlzaE5vdGF0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UgcmFuZ2Up
Cit7CisgICAgLy8gVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgc2h1bnRpbmcgeWFyZCBhbGdv
cml0aG0sIHRvIHR1cm4gdGhlIGNhbGMgc3ludGF4IGludG8gYSByZXZlcnNlIHBvbGlzaCBub3Rh
dGlvbi4KKyAgICAvLyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NodW50aW5nLXlhcmRf
YWxnb3JpdGhtCisKKyAgICBWZWN0b3I8Q1NTUGFyc2VyVG9rZW4+IHN0YWNrOworICAgIHdoaWxl
ICghcmFuZ2UuYXRFbmQoKSkgeworICAgICAgICBjb25zdCBDU1NQYXJzZXJUb2tlbiYgdG9rZW4g
PSByYW5nZS5jb25zdW1lKCk7CisgICAgICAgIHN3aXRjaCAodG9rZW4udHlwZSgpKSB7CisgICAg
ICAgIGNhc2UgTnVtYmVyVG9rZW46CisgICAgICAgICAgICBhcHBlbmROdW1iZXIodG9rZW4pOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRGltZW5zaW9uVG9rZW46CisgICAgICAg
ICAgICBpZiAoIUNTU1ByaW1pdGl2ZVZhbHVlOjppc0xlbmd0aCh0b2tlbi51bml0VHlwZSgpKSB8
fCAhYXBwZW5kTGVuZ3RoKHRva2VuKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEZWxpbWl0ZXJUb2tlbjoKKyAgICAgICAg
ICAgIGlmICghaGFuZGxlT3BlcmF0b3Ioc3RhY2ssIHRva2VuKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBGdW5jdGlvblRv
a2VuOgorICAgICAgICAgICAgaWYgKCFlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRva2VuLnZhbHVl
KCksICJjYWxjIikpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAg
Ly8gImNhbGMoIiBpcyB0aGUgc2FtZSBhcyAiKCIKKyAgICAgICAgICAgIEZBTExUSFJPVUdIOwor
ICAgICAgICBjYXNlIExlZnRQYXJlbnRoZXNpc1Rva2VuOgorICAgICAgICAgICAgLy8gSWYgdGhl
IHRva2VuIGlzIGEgbGVmdCBwYXJlbnRoZXNpcywgdGhlbiBwdXNoIGl0IG9udG8gdGhlIHN0YWNr
LgorICAgICAgICAgICAgc3RhY2suYXBwZW5kKHRva2VuKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFJpZ2h0UGFyZW50aGVzaXNUb2tlbjoKKyAgICAgICAgICAgIC8vIElmIHRo
ZSB0b2tlbiBpcyBhIHJpZ2h0IHBhcmVudGhlc2lzOgorICAgICAgICAgICAgLy8gVW50aWwgdGhl
IHRva2VuIGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrIGlzIGEgbGVmdCBwYXJlbnRoZXNpcywgcG9w
IG9wZXJhdG9ycyBvZmYgdGhlIHN0YWNrIG9udG8gdGhlIG91dHB1dCBxdWV1ZS4KKyAgICAgICAg
ICAgIHdoaWxlICghc3RhY2suaXNFbXB0eSgpICYmIHN0YWNrLmxhc3QoKS50eXBlKCkgIT0gTGVm
dFBhcmVudGhlc2lzVG9rZW4gJiYgc3RhY2subGFzdCgpLnR5cGUoKSAhPSBGdW5jdGlvblRva2Vu
KSB7CisgICAgICAgICAgICAgICAgYXBwZW5kT3BlcmF0b3Ioc3RhY2subGFzdCgpKTsKKyAgICAg
ICAgICAgICAgICBzdGFjay5yZW1vdmVMYXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICAvLyBJZiB0aGUgc3RhY2sgcnVucyBvdXQgd2l0aG91dCBmaW5kaW5nIGEgbGVmdCBwYXJlbnRo
ZXNpcywgdGhlbiB0aGVyZSBhcmUgbWlzbWF0Y2hlZCBwYXJlbnRoZXNlcy4KKyAgICAgICAgICAg
IGlmIChzdGFjay5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgLy8gUG9wIHRoZSBsZWZ0IHBhcmVudGhlc2lzIGZyb20gdGhlIHN0YWNrLCBidXQg
bm90IG9udG8gdGhlIG91dHB1dCBxdWV1ZS4KKyAgICAgICAgICAgIHN0YWNrLnJlbW92ZUxhc3Qo
KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdoaXRlc3BhY2VUb2tlbjoKKyAg
ICAgICAgY2FzZSBFT0ZUb2tlbjoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENE
T1Rva2VuOgorICAgICAgICBjYXNlIENEQ1Rva2VuOgorICAgICAgICBjYXNlIEF0S2V5d29yZFRv
a2VuOgorICAgICAgICBjYXNlIEhhc2hUb2tlbjoKKyAgICAgICAgY2FzZSBVcmxUb2tlbjoKKyAg
ICAgICAgY2FzZSBCYWRVcmxUb2tlbjoKKyAgICAgICAgY2FzZSBQZXJjZW50YWdlVG9rZW46Cisg
ICAgICAgIGNhc2UgSW5jbHVkZU1hdGNoVG9rZW46CisgICAgICAgIGNhc2UgRGFzaE1hdGNoVG9r
ZW46CisgICAgICAgIGNhc2UgUHJlZml4TWF0Y2hUb2tlbjoKKyAgICAgICAgY2FzZSBTdWZmaXhN
YXRjaFRva2VuOgorICAgICAgICBjYXNlIFN1YnN0cmluZ01hdGNoVG9rZW46CisgICAgICAgIGNh
c2UgQ29sdW1uVG9rZW46CisgICAgICAgIGNhc2UgVW5pY29kZVJhbmdlVG9rZW46CisgICAgICAg
IGNhc2UgSWRlbnRUb2tlbjoKKyAgICAgICAgY2FzZSBDb21tYVRva2VuOgorICAgICAgICBjYXNl
IENvbG9uVG9rZW46CisgICAgICAgIGNhc2UgU2VtaWNvbG9uVG9rZW46CisgICAgICAgIGNhc2Ug
TGVmdEJyYWNlVG9rZW46CisgICAgICAgIGNhc2UgTGVmdEJyYWNrZXRUb2tlbjoKKyAgICAgICAg
Y2FzZSBSaWdodEJyYWNlVG9rZW46CisgICAgICAgIGNhc2UgUmlnaHRCcmFja2V0VG9rZW46Cisg
ICAgICAgIGNhc2UgU3RyaW5nVG9rZW46CisgICAgICAgIGNhc2UgQmFkU3RyaW5nVG9rZW46Cisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNhc2UgQ29tbWVudFRva2VuOgorICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBXaGVuIHRoZXJlIGFyZSBubyBtb3JlIHRva2Vu
cyB0byByZWFkOgorICAgIC8vIFdoaWxlIHRoZXJlIGFyZSBzdGlsbCBvcGVyYXRvciB0b2tlbnMg
aW4gdGhlIHN0YWNrOgorICAgIHdoaWxlICghc3RhY2suaXNFbXB0eSgpKSB7CisgICAgICAgIC8v
IElmIHRoZSBvcGVyYXRvciB0b2tlbiBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjayBpcyBhIHBhcmVu
dGhlc2lzLCB0aGVuIHRoZXJlIGFyZSBtaXNtYXRjaGVkIHBhcmVudGhlc2VzLgorICAgICAgICBD
U1NQYXJzZXJUb2tlblR5cGUgdHlwZSA9IHN0YWNrLmxhc3QoKS50eXBlKCk7CisgICAgICAgIGlm
ICh0eXBlID09IExlZnRQYXJlbnRoZXNpc1Rva2VuIHx8IHR5cGUgPT0gRnVuY3Rpb25Ub2tlbikK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgLy8gUG9wIHRoZSBvcGVyYXRvciBv
bnRvIHRoZSBvdXRwdXQgcXVldWUuCisgICAgICAgIGFwcGVuZE9wZXJhdG9yKHN0YWNrLmxhc3Qo
KSk7CisgICAgICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3N0YXRpYyBib29sIG9wZXJhdGVPblN0YWNrKFZlY3RvcjxTaXplc0NhbGNWYWx1ZT4m
IHN0YWNrLCBVQ2hhciBvcGVyYXRpb24pCit7CisgICAgaWYgKHN0YWNrLnNpemUoKSA8IDIpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTaXplc0NhbGNWYWx1ZSByaWdodE9wZXJhbmQgPSBz
dGFjay5sYXN0KCk7CisgICAgc3RhY2sucmVtb3ZlTGFzdCgpOworICAgIFNpemVzQ2FsY1ZhbHVl
IGxlZnRPcGVyYW5kID0gc3RhY2subGFzdCgpOworICAgIHN0YWNrLnJlbW92ZUxhc3QoKTsKKyAg
ICBib29sIGlzTGVuZ3RoOworICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CisgICAgY2FzZSAnKyc6
CisgICAgICAgIGlmIChyaWdodE9wZXJhbmQuaXNMZW5ndGggIT0gbGVmdE9wZXJhbmQuaXNMZW5n
dGgpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlzTGVuZ3RoID0gKHJpZ2h0
T3BlcmFuZC5pc0xlbmd0aCAmJiBsZWZ0T3BlcmFuZC5pc0xlbmd0aCk7CisgICAgICAgIHN0YWNr
LmFwcGVuZChTaXplc0NhbGNWYWx1ZShsZWZ0T3BlcmFuZC52YWx1ZSArIHJpZ2h0T3BlcmFuZC52
YWx1ZSwgaXNMZW5ndGgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnLSc6CisgICAgICAg
IGlmIChyaWdodE9wZXJhbmQuaXNMZW5ndGggIT0gbGVmdE9wZXJhbmQuaXNMZW5ndGgpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGlzTGVuZ3RoID0gKHJpZ2h0T3BlcmFuZC5p
c0xlbmd0aCAmJiBsZWZ0T3BlcmFuZC5pc0xlbmd0aCk7CisgICAgICAgIHN0YWNrLmFwcGVuZChT
aXplc0NhbGNWYWx1ZShsZWZ0T3BlcmFuZC52YWx1ZSAtIHJpZ2h0T3BlcmFuZC52YWx1ZSwgaXNM
ZW5ndGgpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnKic6CisgICAgICAgIGlmIChyaWdo
dE9wZXJhbmQuaXNMZW5ndGggJiYgbGVmdE9wZXJhbmQuaXNMZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIGlzTGVuZ3RoID0gKHJpZ2h0T3BlcmFuZC5pc0xlbmd0aCB8
fCBsZWZ0T3BlcmFuZC5pc0xlbmd0aCk7CisgICAgICAgIHN0YWNrLmFwcGVuZChTaXplc0NhbGNW
YWx1ZShsZWZ0T3BlcmFuZC52YWx1ZSAqIHJpZ2h0T3BlcmFuZC52YWx1ZSwgaXNMZW5ndGgpKTsK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAnLyc6CisgICAgICAgIGlmIChyaWdodE9wZXJhbmQu
aXNMZW5ndGggfHwgIXJpZ2h0T3BlcmFuZC52YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICAgICAgc3RhY2suYXBwZW5kKFNpemVzQ2FsY1ZhbHVlKGxlZnRPcGVyYW5kLnZhbHVl
IC8gcmlnaHRPcGVyYW5kLnZhbHVlLCBsZWZ0T3BlcmFuZC5pc0xlbmd0aCkpOworICAgICAgICBi
cmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJl
dHVybiB0cnVlOworfQorCitib29sIFNpemVzQ2FsY1BhcnNlcjo6Y2FsY3VsYXRlKCkKK3sKKyAg
ICBWZWN0b3I8U2l6ZXNDYWxjVmFsdWU+IHN0YWNrOworICAgIGZvciAoY29uc3QgYXV0byYgdmFs
dWUgOiBtX3ZhbHVlTGlzdCkgeworICAgICAgICBpZiAoIXZhbHVlLm9wZXJhdGlvbikKKyAgICAg
ICAgICAgIHN0YWNrLmFwcGVuZCh2YWx1ZSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAg
aWYgKCFvcGVyYXRlT25TdGFjayhzdGFjaywgdmFsdWUub3BlcmF0aW9uKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHN0YWNrLnNpemUo
KSA9PSAxICYmIHN0YWNrLmxhc3QoKS5pc0xlbmd0aCkgeworICAgICAgICBtX3Jlc3VsdCA9IHN0
ZDo6bWF4KGNsYW1wVG88ZmxvYXQ+KHN0YWNrLmxhc3QoKS52YWx1ZSksIChmbG9hdCkwLjApOwor
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL1NpemVz
Q2FsY1BhcnNlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvU2l6
ZXNDYWxjUGFyc2VyLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNl
ci9TaXplc0NhbGNQYXJzZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDgzIEBACisvLyBD
b3B5cmlnaHQgMjAxNCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
Ky8vIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisv
LworLy8gUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisvLyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisvLyBtZXQ6CisvLworLy8gICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorLy8gICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisvLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisvLyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisvLyBkaXN0
cmlidXRpb24uCisvLyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKy8vIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisvLyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorLy8KKy8vIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKy8v
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisvLyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKy8vIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisvLyBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKy8vIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKy8vIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorLy8gREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisvLyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisvLyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKy8vIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyNwcmFnbWEgb25jZQor
CisjaW5jbHVkZSAiQ1NTUGFyc2VyVG9rZW4uaCIKKyNpbmNsdWRlICJDU1NQYXJzZXJUb2tlblJh
bmdlLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgUmVuZGVyU3R5bGU7CitjbGFzcyBSZW5kZXJWaWV3OworCitzdHJ1Y3Qg
U2l6ZXNDYWxjVmFsdWUgeworICAgIGRvdWJsZSB2YWx1ZTsKKyAgICBib29sIGlzTGVuZ3RoOwor
ICAgIFVDaGFyIG9wZXJhdGlvbjsKKworICAgIFNpemVzQ2FsY1ZhbHVlKCkKKyAgICAgICAgOiB2
YWx1ZSgwKQorICAgICAgICAsIGlzTGVuZ3RoKGZhbHNlKQorICAgICAgICAsIG9wZXJhdGlvbigw
KQorICAgIHsKKyAgICB9CisKKyAgICBTaXplc0NhbGNWYWx1ZShkb3VibGUgbnVtZXJpY1ZhbHVl
LCBib29sIGxlbmd0aCkKKyAgICAgICAgOiB2YWx1ZShudW1lcmljVmFsdWUpCisgICAgICAgICwg
aXNMZW5ndGgobGVuZ3RoKQorICAgICAgICAsIG9wZXJhdGlvbigwKQorICAgIHsKKyAgICB9Cit9
OworCitjbGFzcyBTaXplc0NhbGNQYXJzZXIgeworcHVibGljOgorICAgIFNpemVzQ2FsY1BhcnNl
cihDU1NQYXJzZXJUb2tlblJhbmdlLCBjb25zdCBSZW5kZXJTdHlsZSYsIFJlbmRlclZpZXcmKTsK
KworICAgIGZsb2F0IHJlc3VsdCgpIGNvbnN0OworICAgIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNWYWxpZDsgfQorCitwcml2YXRlOgorICAgIGJvb2wgY2FsY1RvUmV2ZXJzZVBv
bGlzaE5vdGF0aW9uKENTU1BhcnNlclRva2VuUmFuZ2UpOworICAgIGJvb2wgY2FsY3VsYXRlKCk7
CisgICAgdm9pZCBhcHBlbmROdW1iZXIoY29uc3QgQ1NTUGFyc2VyVG9rZW4mKTsKKyAgICBib29s
IGFwcGVuZExlbmd0aChjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworICAgIGJvb2wgaGFuZGxlT3Bl
cmF0b3IoVmVjdG9yPENTU1BhcnNlclRva2VuPiYgc3RhY2ssIGNvbnN0IENTU1BhcnNlclRva2Vu
Jik7CisgICAgdm9pZCBhcHBlbmRPcGVyYXRvcihjb25zdCBDU1NQYXJzZXJUb2tlbiYpOworCisg
ICAgVmVjdG9yPFNpemVzQ2FsY1ZhbHVlPiBtX3ZhbHVlTGlzdDsKKyAgICBib29sIG1faXNWYWxp
ZDsKKyAgICBmbG9hdCBtX3Jlc3VsdDsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYgbV9zdHlsZTsK
KyAgICBSZW5kZXJWaWV3JiBtX3ZpZXc7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>
<flag name="review"
          id="311907"
          type_id="1"
          status="+"
          setter="dino"
    />
    <flag name="commit-queue"
          id="311918"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>288607</attachid>
            <date>2016-09-12 13:54:05 -0700</date>
            <delta_ts>2016-09-12 13:54:05 -0700</delta_ts>
            <desc>Archive of layout-test-results from ews122 for ios-simulator-elcapitan-wk2</desc>
            <filename>layout-test-results.zip</filename>
            <type>application/zip</type>
            <size>0</size>
            <attacher name="Build Bot">buildbot</attacher>
            
              <data encoding="base64"></data>

          </attachment>
      

    </bug>

</bugzilla>