<?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>162033</bug_id>
          
          <creation_ts>2016-09-15 14:27:36 -0700</creation_ts>
          <short_desc>[CSS Parser] Get CSSParserFastPaths.cpp compiling</short_desc>
          <delta_ts>2016-09-22 13:36:33 -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>
    
    <cc>jonlee</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1230179</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-15 14:27:36 -0700</bug_when>
    <thetext>[CSS Parser] Get CSSParserFastPaths.cpp compiling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230187</commentid>
    <comment_count>1</comment_count>
      <attachid>289000</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-15 14:33:54 -0700</bug_when>
    <thetext>Created attachment 289000
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230189</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-15 14:34:58 -0700</bug_when>
    <thetext>Attachment 289000 did not pass style-queue:


ERROR: Source/WebCore/css/StyleColor.h:41:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/StyleColor.h:42:  Should be indented on a separate line, with the colon or comma first on that line.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/CSSFunctionValue.cpp:50:  Wrong number of spaces before statement. (expected: 4)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/CSSFunctionValue.cpp:51:  Wrong number of spaces before statement. (expected: 4)  [whitespace/indent] [4]
ERROR: Source/WebCore/css/CSSFunctionValue.h:63:  The parameter name &quot;value&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Source/WebCore/css/CSSFunctionValue.h:69:  When wrapping a line, only indent 4 spaces.  [whitespace/indent] [3]
ERROR: Source/WebCore/css/parser/CSSParserFastPaths.cpp:492:  More than one command on the same line  [whitespace/newline] [4]
ERROR: Source/WebCore/css/parser/CSSParserFastPaths.cpp:551:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
ERROR: Source/WebCore/css/parser/CSSParserFastPaths.cpp:747:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/css/CSSProperty.cpp:161:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserIdioms.cpp:55:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
ERROR: Source/WebCore/css/parser/CSSParserIdioms.h:40:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 12 in 14 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>1230191</commentid>
    <comment_count>3</comment_count>
      <attachid>289001</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-15 14:41:51 -0700</bug_when>
    <thetext>Created attachment 289001
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230193</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-09-15 14:43:52 -0700</bug_when>
    <thetext>Attachment 289001 did not pass style-queue:


ERROR: Source/WebCore/css/parser/CSSParserFastPaths.cpp:551:  Line contains only semicolon. If this should be an empty statement, use { } instead.  [whitespace/semicolon] [5]
Total errors found: 1 in 14 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>1230198</commentid>
    <comment_count>5</comment_count>
      <attachid>289001</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2016-09-15 14:55:08 -0700</bug_when>
    <thetext>Comment on attachment 289001
Patch

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

&gt; Source/WebCore/css/CSSValueKeywords.in:1157
&gt; +paint

Do we support this one yet?

&gt; Source/WebCore/css/parser/CSSParserFastPaths.cpp:179
&gt; -    case CSSPropertyTextDecorationColor:
&gt; +    case CSSPropertyWebkitTextDecorationColor:

Is this because we don&apos;t support the unprefixed form?

&gt; Source/WebCore/css/parser/CSSParserFastPaths.cpp:537
&gt; -        return valueID == CSSValueAuto || valueID == CSSValueSRGB || valueID == CSSValueLinearRGB;
&gt; +        return valueID == CSSValueAuto || valueID == CSSValueSrgb || valueID == CSSValueLinearrgb;

We should add a parameter to CSSValueKeywords.in that allows us to map things to nicer names.

CSSPropertyNames.in has something like this: some-name-with-a-tla [NameForMethods=SomeNameWithATLA]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1230270</commentid>
    <comment_count>6</comment_count>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2016-09-15 17:36:08 -0700</bug_when>
    <thetext>Landed in r206007.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289000</attachid>
            <date>2016-09-15 14:33:54 -0700</date>
            <delta_ts>2016-09-15 14:41:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>55309</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTk5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTA5LTE1ICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBHZXQgQ1NTUGFy
c2VyRmFzdFBhdGhzLmNwcCBjb21waWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IFN0eWxlQ29sb3IuaC8u
Y3BwIGZpbGVzIHRvIHRoZSBwcm9qZWN0eQorCisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6Q1NTRnVuY3Rpb25W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Z1bmN0aW9uVmFsdWU6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpidWlsZFBhcnNlclZhbHVlU3Vic3RpdHV0aW5n
VmFyaWFibGVzKToKKyAgICAgICAgKiBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICBU
d2VhayBDU1NGdW5jdGlvblZhbHVlIHNvIHRoYXQgdGhlIG5hbWUgY2FuIGJlIHJlcHJlc2VudGVk
IGFzIGEga2V5d29yZCBJRCBpbnN0ZWFkIG9mIGEgU3RyaW5nLiBFdmVudHVhbGx5IHdlIGFsc28K
KyAgICAgICAgd2FudCB0byBtYWtlIENTU0Z1bmN0aW9uVmFsdWUgc3ViY2xhc3MgQ1NTVmFsdWVM
aXN0IHJhdGhlciB0aGFuIHJlZmVyZW5pbmcgYSBzZXBhcmF0ZSBDU1NWYWx1ZUxpc3QgYXMgYSBt
ZW1iZXIuIEZvciBub3cKKyAgICAgICAgSSBsZWZ0IHRoYXQgYWxvbmUgdGhvdWdoIGluIG9yZGVy
IHRvIG5vdCBjaGFuZ2UgdG9vIG11Y2ggaW4gdGhlIG9sZCBwYXJzZXIuCisKKyAgICAgICAgKiBj
c3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OmlzRGVz
Y3JpcHRvck9ubHkpOgorICAgICAgICBXaGV0aGVyIG9yIG5vdCBhIHByb3BlcnR5IGlzIG9ubHkg
YSBkZXNjcmlwdG9yLCBlLmcuLCB1c2VkIGluIHZpZXdwb3J0IGFuZCBmb250IGZhY2Ugc3R1ZmYu
CisKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbjoKKyAgICAgICAgQWRkZWQgbmV3IGtleXdvcmRzIGZvciBmdW5jdGlvbnMgdGhh
dCBjYW4gYmUgdXNlZCBhcyB2YWx1ZXMuIFRoZSBuZXcgcGFyc2VyIHVzZXMga2V5d29yZHMgdG8g
cmVwcmVzZW50IGZ1bmN0aW9uIG5hbWVzLgorCisgICAgICAgICogY3NzL1N0eWxlQ29sb3IuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDb2xvcjo6aXNDb2xvcktleXdvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVDb2xvcjo6aXNTeXN0ZW1Db2xvcik6CisgICAgICAgICogY3NzL1N0
eWxlQ29sb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpTdHlsZUNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ29sb3I6OmN1cnJlbnRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjppc0N1cnJlbnRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNvbG9yOjpnZXRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9y
OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIE5ldyBjb2xvciBoZWxwZXIgdGhhdCBjb250YWlu
cyBjb2RlIGZvciBjaGVja2luZyBhbmQgbG9va2luZyB1cCBjb2xvcnMuIFRoaXMgY29kZSBpcyBz
aW1pbGFyIHRvIHNvbWUgY29kZSB3ZSBhbHJlYWR5CisgICAgICAgIGhhZCBpbiB0aGUgb2xkIENT
U1BhcnNlci5jcHAgZmlsZSwgYnV0IHRoaXMgd2F5IGl0IGNhbiBiZSB1c2VkIG91dHNpZGUgdGhl
IHBhcnNlciBhbmQvb3IgaW4gZGlmZmVyZW50IGZpbGVzLgorCisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTaW1wbGVM
ZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0NvbG9yUHJvcGVydHlJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZhc3RQYXJzZUNvbG9ySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
RmFzdFBhdGhzOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQ
YXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzVW5pdmVyc2FsS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUtleXdvcmRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3VtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OnRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlU2ltcGxlVHJhbnNmb3JtTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNpbXBsZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJGYXN0UGF0aHM6Om1heWJlUGFy
c2VWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDoKKyAg
ICAgICAgR2V0IGV2ZXJ5dGhpbmcgY29tcGlsaW5nIGluIHRoaXMgZmlsZS4gS2V5IGNoYW5nZXMg
aW5jbHVkZWQgcmV2ZXJ0aW5nIHRvIG91ciBvbGQgdW5pdCBuYW1lcywgbWFraW5nIENTU0Z1bmN0
aW9uVmFsdWUgY29tcGF0aWJsZSwKKyAgICAgICAgYWRkaW5nIHN1cHBvcnQgZm9yIFN0eWxlQ29s
b3IsIGFkZGluZyBzdXBwb3J0IGZvciBtb2RlIGNoZWNraW5nIG9mIGtleXdvcmRzLCBhbmQgZml4
aW5nIHVwIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb2RlbCBzbyB0aGF0CisgICAgICAgIFJlZlB0
cnMgYXJlIHVzZWQgb24gcmV0dXJucyBmcm9tIHBhcnNpbmcgZnVuY3Rpb25zLgorCisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWx1ZUFsbG93ZWRJbk1vZGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
Lmg6CisgICAgICAgIE5ldyBoZWxwZXIgZnVuY3Rpb24gZm9yIHJlc3RyaWN0aW5nIGtleXdvcmRz
IHRvIGNlcnRhaW4gbW9kZXMgb25seS4gVGhlIC13ZWJraXQtdGV4dCBjb2xvciBxdWlyayBoYXMg
YmVlbiBtb3ZlZCB0byB0aGlzIGZ1bmN0aW9uLgorCiAyMDE2LTA5LTE1ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMyLDYgKzEzMzIsNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKICAg
ICBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcAogICAgIGNzcy9TZWxlY3RvckZpbHRlci5jcHAKKyAg
ICBjc3MvU3R5bGVDb2xvci5jcHAKICAgICBjc3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5j
cHAKICAgICBjc3MvU3R5bGVNZWRpYS5jcHAKICAgICBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzM5LDYgKzMzMzksOCBAQAog
CQk5M0Y5QjdBMDBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI3OUUwQkE2MDMyNjAw
ODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAqLzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAw
ODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rp
b24uaCAqLzsgfTsKIAkJOTNGREFGQ0EwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
REFGQzkwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk0MTgyNzhBMUQ4QjI0NDAw
MDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNw
cCAqLzsgfTsKKwkJOTQxODI3OEIxRDhCMjQ0MDAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0MTgyNzg5MUQ4QjI0
MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmggKi87IH07CiAJCTk0NDRDQkQzMUQ4NjBDOEIwMDcz
QTA3NCAvKiBTaXplc0NhbGNQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTQ0NENCRDAxRDg2MEM3NDAwNzNBMDc0IC8qIFNpemVzQ2FsY1Bh
cnNlci5jcHAgKi87IH07CiAJCTk0NDRDQkQ0MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0NhbGNQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0
NDRDQkNGMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXplc0NhbGNQYXJzZXIuaCAqLzsgfTsKIAkJOTQ0
NENCRDUxRDg2MEM4QjAwNzNBMDc0IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkQyMUQ4NjBDNzQw
MDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgKi87IH07CkBAIC05Mzc3LDggKzkz
NzksOCBAQAogCQk1QzUzODFBRjFEODc5M0UwMDBFMkVCRTYgLyogVVJMU2VhcmNoUGFyYW1zLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVUkxTZWFyY2hQYXJhbXMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzUzODFCMDFEODdENDU3MDBFMkVCRTYgLyogVVJMU2VhcmNo
UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFNlYXJj
aFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNTM4MUIxMUQ4N0Q0
NTcwMEUyRUJFNiAvKiBVUkxTZWFyY2hQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVJMU2VhcmNoUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDNTM4MUIzMUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VSTFNlYXJjaFBhcmFtcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1VSTFNlYXJjaFBhcmFtcy5jcHA7IHBh
dGggPSBKU1VSTFNlYXJjaFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDNTM4MUI0MUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VSTFNlYXJjaFBhcmFtcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1VSTFNlYXJjaFBhcmFtcy5oOyBwYXRoID0gSlNV
UkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1MzgxQjMx
RDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNo
UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFy
YW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEwMUQzODA1MDkwMDBC
NTRGQSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2Nr
ZXRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2Nr
ZXRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkU2NTNGMUQ1
Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNTA3LDYgKzEwNTA5LDggQEAKIAkJOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RB
VEFTZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0RB
VEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3OUYwQkE2
MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkRBRkM5MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckluc2VydEFjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVD
b2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUNvbG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQxODI3ODkxRDhCMjQyMjAwNDky
NzY0IC8qIFN0eWxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5
bGVDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDQ0Q0JDRjFEODYwQzc0
MDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFNpemVzQ2FsY1BhcnNlci5oOyBwYXRoID0gcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDQ0Q0JEMDFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFNpemVzQ2FsY1BhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ0NENCRDExRDg2MEM3NDAwNzNBMDc0
IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFNpemVzQXR0cmlidXRlUGFyc2VyLmg7IHBhdGggPSBwYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTQ4LDYgKzIyNTUyLDgg
QEAKIAkJCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggKi8sCiAJ
CQkJODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICov
LAogCQkJCTgzNUQzNjM2MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1aWxkZXJDdXN0b20uaCAq
LywKKwkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5jcHAgKi8sCisJ
CQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCAqLywKIAkJCQlFNDdB
OTdDRTE2MzA1OUZDMDA1RENEOTkgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgKi8s
CiAJCQkJRTQ3QTk3Q0YxNjMwNTlGQzAwNURDRDk5IC8qIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlz
aXMuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAg
Ki8sCkBAIC0yNTY1Nyw2ICsyNTY2Myw3IEBACiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3
IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFCRjlEQjNDMUQz
OTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUIxMjRE
OEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTQxODI3OEIxRDhCMjQ0MDAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8q
IE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlGODdDRkUxQjI4RjQwRTAwOTc5
QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzk3Myw2ICsy
Nzk4MCw3IEBACiAJCQkJNUM5QTdBNzYxQUEwRjZFRDAwOTU4QUNGIC8qIERGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZBODA3ODQxQjE4Rjk3NzAwRTIxOUJF
IC8qIERGQUNvbWJpbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QTUxN0ZEMUFCOTIyMzgw
MDYzMzVERiAvKiBERkFNaW5pbWl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQxODI3OEEx
RDhCMjQ0MDAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZE
NEU4NDYxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1
bmN0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRnVuY3Rpb25WYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCwzMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIENTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUo
Q1NTUGFyc2VyRnVuY3Rpb24qIGZ1bmN0aW9uKQogICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25DbGFz
cykKLSAgICAsIG1fbmFtZShmdW5jdGlvbi0+bmFtZSkKKyAgICAsIG1fbmFtZURlcHJlY2F0ZWQo
ZnVuY3Rpb24tPm5hbWUpCiAgICAgLCBtX2FyZ3MoZnVuY3Rpb24tPmFyZ3MgPyBSZWZQdHI8Q1NT
VmFsdWVMaXN0PihDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUZyb21QYXJzZXJWYWx1ZUxpc3QoKmZ1bmN0
aW9uLT5hcmdzKSkgOiBudWxscHRyKQogewogfQogCiBDU1NGdW5jdGlvblZhbHVlOjpDU1NGdW5j
dGlvblZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBhcmdzKQog
ICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25DbGFzcykKLSAgICAsIG1fbmFtZShuYW1lKQorICAgICwg
bV9uYW1lRGVwcmVjYXRlZChuYW1lKQogICAgICwgbV9hcmdzKFdURk1vdmUoYXJncykpCiB7CiB9
CiAKK0NTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUoQ1NTVmFsdWVJRCBrZXl3b3Jk
KQorOiBDU1NWYWx1ZShGdW5jdGlvbkNsYXNzKQorLCBtX25hbWUoa2V5d29yZCkKK3sKK30KKyAg
ICAKIFN0cmluZyBDU1NGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NUZXh0KCkgY29uc3QKIHsKICAg
ICBTdHJpbmdCdWlsZGVyIHJlc3VsdDsKLSAgICByZXN1bHQuYXBwZW5kKG1fbmFtZSk7IC8vIElu
Y2x1ZGVzIHRoZSAnKCcKKyAgICBpZiAobV9uYW1lICE9IENTU1ZhbHVlSW52YWxpZCkgeworICAg
ICAgICByZXN1bHQuYXBwZW5kKGdldFZhbHVlTmFtZShtX25hbWUpKTsKKyAgICAgICAgcmVzdWx0
LmFwcGVuZCgnKCcpOworICAgIH0gZWxzZQorICAgICAgICByZXN1bHQuYXBwZW5kKG1fbmFtZURl
cHJlY2F0ZWQpOyAvLyBJbmNsdWRlcyB0aGUgJygnCiAgICAgaWYgKG1fYXJncykKICAgICAgICAg
cmVzdWx0LmFwcGVuZChtX2FyZ3MtPmNzc1RleHQoKSk7CiAgICAgcmVzdWx0LmFwcGVuZCgnKScp
OwpAQCAtNjEsMTIgKzcxLDE5IEBAIGJvb2wgQ1NTRnVuY3Rpb25WYWx1ZTo6ZXF1YWxzKGNvbnN0
IENTU0YKICAgICByZXR1cm4gbV9uYW1lID09IG90aGVyLm1fbmFtZSAmJiBjb21wYXJlQ1NTVmFs
dWVQdHIobV9hcmdzLCBvdGhlci5tX2FyZ3MpOwogfQogCit2b2lkIENTU0Z1bmN0aW9uVmFsdWU6
OmFwcGVuZChSZWY8Q1NTVmFsdWU+JiYgdmFsdWUpCit7CisgICAgaWYgKCFtX2FyZ3MpCisgICAg
ICAgIG1fYXJncyA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKKyAgICBt
X2FyZ3MtPmFwcGVuZChXVEZNb3ZlKHZhbHVlKSk7Cit9CisgICAgCiBib29sIENTU0Z1bmN0aW9u
VmFsdWU6OmJ1aWxkUGFyc2VyVmFsdWVTdWJzdGl0dXRpbmdWYXJpYWJsZXMoQ1NTUGFyc2VyVmFs
dWUqIHJlc3VsdCwgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1ZU1hcCYgY3VzdG9tUHJvcGVydGll
cykgY29uc3QKIHsKICAgICByZXN1bHQtPmlkID0gQ1NTVmFsdWVJbnZhbGlkOwogICAgIHJlc3Vs
dC0+dW5pdCA9IENTU1BhcnNlclZhbHVlOjpGdW5jdGlvbjsKICAgICByZXN1bHQtPmZ1bmN0aW9u
ID0gbmV3IENTU1BhcnNlckZ1bmN0aW9uOwotICAgIHJlc3VsdC0+ZnVuY3Rpb24tPm5hbWUuaW5p
dChtX25hbWUpOworICAgIHJlc3VsdC0+ZnVuY3Rpb24tPm5hbWUuaW5pdChtX25hbWVEZXByZWNh
dGVkKTsKICAgICBib29sIHN1Y2Nlc3MgPSB0cnVlOwogICAgIGlmIChtX2FyZ3MpIHsKICAgICAg
ICAgQ1NTUGFyc2VyVmFsdWVMaXN0KiBhcmdMaXN0ID0gbmV3IENTU1BhcnNlclZhbHVlTGlzdDsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGdW5jdGlvblZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAkocmV2aXNpb24gMjA1OTkw
KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAkod29ya2luZyBjb3B5
KQpAQCAtMjYsNiArMjYsNyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJDU1NWYWx1ZS5o
IgorI2luY2x1ZGUgIkNTU1ZhbHVlS2V5d29yZHMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC0zMyw2ICszNCw3IEBAIGNsYXNzIENTU1ZhbHVlTGlzdDsKIHN0cnVjdCBDU1NQYXJzZXJG
dW5jdGlvbjsKIHN0cnVjdCBDU1NQYXJzZXJWYWx1ZTsKIAorLy8gRklYTUUtTkVXUEFSU0VSOiBU
aGlzIGNhbiBqdXN0ICpiZSogYSBDU1NWYWx1ZUxpc3Qgc3ViY2xhc3MuCiBjbGFzcyBDU1NGdW5j
dGlvblZhbHVlIGZpbmFsIDogcHVibGljIENTU1ZhbHVlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPENTU0Z1bmN0aW9uVmFsdWU+IGNyZWF0ZShDU1NQYXJzZXJGdW5jdGlvbiogZnVuY3Rpb24p
CkBAIC00NSw2ICs0NywxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IENTU0Z1bmN0aW9uVmFsdWUobmFtZSwgV1RGTW92ZShhcmdzKSkpOwogICAgIH0KIAorICAgIHN0
YXRpYyBSZWY8Q1NTRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKENTU1ZhbHVlSUQga2V5d29yZCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0Z1bmN0aW9uVmFsdWUoa2V5d29y
ZCkpOworICAgIH0KKyAgICAKICAgICBTdHJpbmcgY3VzdG9tQ1NTVGV4dCgpIGNvbnN0OwogCiAg
ICAgYm9vbCBlcXVhbHMoY29uc3QgQ1NTRnVuY3Rpb25WYWx1ZSYpIGNvbnN0OwpAQCAtNTIsMTIg
KzU5LDE4IEBAIHB1YmxpYzoKICAgICBDU1NWYWx1ZUxpc3QqIGFyZ3VtZW50cygpIGNvbnN0IHsg
cmV0dXJuIG1fYXJncy5nZXQoKTsgfQogCiAgICAgYm9vbCBidWlsZFBhcnNlclZhbHVlU3Vic3Rp
dHV0aW5nVmFyaWFibGVzKENTU1BhcnNlclZhbHVlKiwgY29uc3QgQ3VzdG9tUHJvcGVydHlWYWx1
ZU1hcCYgY3VzdG9tUHJvcGVydGllcykgY29uc3Q7Ci0gICAgCisKKyAgICB2b2lkIGFwcGVuZChS
ZWY8Q1NTVmFsdWU+JiYgdmFsdWUpOworCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IENTU0Z1bmN0
aW9uVmFsdWUoQ1NTUGFyc2VyRnVuY3Rpb24qKTsKICAgICBDU1NGdW5jdGlvblZhbHVlKGNvbnN0
IFN0cmluZyYsIFJlZjxDU1NWYWx1ZUxpc3Q+JiYpOworICAgIENTU0Z1bmN0aW9uVmFsdWUoQ1NT
VmFsdWVJRCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgIENTU1ZhbHVlSUQgbV9uYW1lIHsg
Q1NTVmFsdWVJbnZhbGlkIH07CiAKLSAgICBTdHJpbmcgbV9uYW1lOworICAgIC8vIEZJWE1FLU5F
V1BBUlNFUjogUmVtb3ZlIHRoZXNlLgorICAgIFN0cmluZyBtX25hbWVEZXByZWNhdGVkOwogICAg
IFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IG1fYXJnczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NT
U1Byb3BlcnR5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCwyMyBAQCBDU1NQcm9w
ZXJ0eUlEIENTU1Byb3BlcnR5OjpyZXNvbHZlRGlyZWN0CiAgICAgfQogfQogCitib29sIENTU1By
b3BlcnR5Ojppc0Rlc2NyaXB0b3JPbmx5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3sKKyAg
ICBzd2l0Y2ggKHByb3BlcnR5SUQpIHsKKyNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9O
KQorICAgICAgICBjYXNlIENTU1Byb3BlcnR5TWluWm9vbToKKyAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU1heFpvb206CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlPcmllbnRhdGlvbjoKKyAgICAg
ICAgY2FzZSBDU1NQcm9wZXJ0eVVzZXJab29tOgorI2VuZGlmCisgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlTcmM6CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2RlUmFuZ2U6CisgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICB9Cit9CisKIGJvb2wgQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0eUlE
KSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkocmV2aXNpb24gMjA1OTkwKQorKysg
U291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYg
Kzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVEaXJlY3Rp
b25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdNb2Rl
KTsKICAgICBzdGF0aWMgYm9vbCBpc0luaGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQpOwog
ICAgIHN0YXRpYyBib29sIGlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKTsK
KyAgICBzdGF0aWMgYm9vbCBpc0Rlc2NyaXB0b3JPbmx5KENTU1Byb3BlcnR5SUQpOwogCiAgICAg
Y29uc3QgU3R5bGVQcm9wZXJ0eU1ldGFkYXRhJiBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
bWV0YWRhdGE7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMuaW4J
KHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdvcmRz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ5LDYgKzExNDksODggQEAgaXNvbGF0ZQogLy8gbm9u
ZQogc2NhbGUtZG93bgogCisvLyBiYWNrZ3JvdW5kLWltYWdlLCBldGMuCitsaW5lYXItZ3JhZGll
bnQKK3JhZGlhbC1ncmFkaWVudAorcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudAorcmVwZWF0aW5n
LXJhZGlhbC1ncmFkaWVudAorcGFpbnQKKy13ZWJraXQtY3Jvc3MtZmFkZQorLXdlYmtpdC1ncmFk
aWVudAorLXdlYmtpdC1saW5lYXItZ3JhZGllbnQKKy13ZWJraXQtcmFkaWFsLWdyYWRpZW50Cist
d2Via2l0LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQKKy13ZWJraXQtcmVwZWF0aW5nLXJhZGlh
bC1ncmFkaWVudAorLXdlYmtpdC1pbWFnZS1zZXQKKworLy8gZGVwcmVjYXRlZCBncmFkaWVudHMK
K2Zyb20KK3RvCitjb2xvci1zdG9wCityYWRpYWwKKworLy8gY29udGVudAorYXR0cgorY291bnRl
cgorY291bnRlcnMKKworLy8gY2xpcAorcmVjdAorCisvLyBzaGFwZXMKK3BvbHlnb24KKworLy8g
QGZvbnQtZmFjZSBzcmMKK2Zvcm1hdAorCisvLyAoLXdlYmtpdC0pZmlsdGVyCisvLyBpbnZlcnQK
K2dyYXlzY2FsZQorc2VwaWEKK3NhdHVyYXRlCitodWUtcm90YXRlCitvcGFjaXR5CiticmlnaHRu
ZXNzCitjb250cmFzdAorYmx1cgorZHJvcC1zaGFkb3cKK3VybAorCisvLyBjb2xvcnMKK3JnYgor
cmdiYQoraHNsCitoc2xhCisKKy8vIHRyYW5zZm9ybQorbWF0cml4CittYXRyaXgzZAorcGVyc3Bl
Y3RpdmUKK3JvdGF0ZQorcm90YXRlWAorcm90YXRlWQorcm90YXRlWgorcm90YXRlM2QKK3NjYWxl
CitzY2FsZVgKK3NjYWxlWQorc2NhbGVaCitzY2FsZTNkCitza2V3Citza2V3WAorc2tld1kKK3Ry
YW5zbGF0ZQordHJhbnNsYXRlWAordHJhbnNsYXRlWQordHJhbnNsYXRlWgordHJhbnNsYXRlM2QK
KworLy8gbW90aW9uIHBhdGgKK3BhdGgKKworY2FsYworLXdlYmtpdC1jYWxjCisKICNpZiBkZWZp
bmVkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJiYgRU5BQkxFX0NTU19JTUFHRV9SRVNP
TFVUSU9OCiBmcm9tLWltYWdlCiBzbmFwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVD
b2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3IuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisg
KiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJT
dHlsZUNvbG9yLmgiCisKKyNpbmNsdWRlICJIYXNoVG9vbHMuaCIKKyNpbmNsdWRlICJSZW5kZXJU
aGVtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yIFN0eWxlQ29sb3I6OmNvbG9y
RnJvbUtleXdvcmQoQ1NTVmFsdWVJRCBrZXl3b3JkKQoreworICAgIGlmIChjb25zdCBjaGFyKiB2
YWx1ZU5hbWUgPSBnZXRWYWx1ZU5hbWUoa2V5d29yZCkpIHsKKyAgICAgICAgaWYgKGNvbnN0IE5h
bWVkQ29sb3IqIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IodmFsdWVOYW1lLCBzdHJsZW4odmFsdWVO
YW1lKSkpCisgICAgICAgICAgICByZXR1cm4gQ29sb3IobmFtZWRDb2xvci0+QVJHQlZhbHVlKTsK
KyAgICB9CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVtQ29s
b3Ioa2V5d29yZCk7Cit9CisKK2Jvb2wgU3R5bGVDb2xvcjo6aXNDb2xvcktleXdvcmQoQ1NTVmFs
dWVJRCBpZCkKK3sKKyAgICByZXR1cm4gKGlkID49IENTU1ZhbHVlQWxwaGEgJiYgaWQgPD0gQ1NT
VmFsdWVXZWJraXRUZXh0KSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnU7Cit9CisKK2Jvb2wgU3R5bGVD
b2xvcjo6aXNTeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGlkKQoreworICAgIHJldHVybiAoaWQgPj0g
Q1NTVmFsdWVBY3RpdmVib3JkZXIgJiYgaWQgPD0gQ1NTVmFsdWVBcHBsZVN5c3RlbVllbGxvdykg
fHwgaWQgPT0gQ1NTVmFsdWVNZW51IHx8IGlkID09IENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5nQ29s
b3I7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29s
b3IuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJDU1NW
YWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUg
eworCitjbGFzcyBTdHlsZUNvbG9yIHsKK3B1YmxpYzoKKyAgICBTdHlsZUNvbG9yKCkgOiBtX2N1
cnJlbnRDb2xvcih0cnVlKSB7IH0KKyAgICBTdHlsZUNvbG9yKENvbG9yIGNvbG9yKSA6IG1fY29s
b3IoY29sb3IpLCBtX2N1cnJlbnRDb2xvcihmYWxzZSkgeyB9CisgICAgc3RhdGljIFN0eWxlQ29s
b3IgY3VycmVudENvbG9yKCkgeyByZXR1cm4gU3R5bGVDb2xvcigpOyB9CisKKyAgICBib29sIGlz
Q3VycmVudENvbG9yKCkgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q29sb3I7IH0KKyAgICBDb2xv
ciBnZXRDb2xvcigpIGNvbnN0IHsgQVNTRVJUKCFpc0N1cnJlbnRDb2xvcigpKTsgcmV0dXJuIG1f
Y29sb3I7IH0KKworICAgIENvbG9yIHJlc29sdmUoQ29sb3IgY3VycmVudENvbG9yKSBjb25zdCB7
IHJldHVybiBtX2N1cnJlbnRDb2xvciA/IGN1cnJlbnRDb2xvciA6IG1fY29sb3I7IH0KKworICAg
IHN0YXRpYyBDb2xvciBjb2xvckZyb21LZXl3b3JkKENTU1ZhbHVlSUQpOworICAgIHN0YXRpYyBi
b29sIGlzQ29sb3JLZXl3b3JkKENTU1ZhbHVlSUQpOworICAgIHN0YXRpYyBib29sIGlzU3lzdGVt
Q29sb3IoQ1NTVmFsdWVJRCk7CisKK3ByaXZhdGU6CisgICAgQ29sb3IgbV9jb2xvcjsKKyAgICBi
b29sIG1fY3VycmVudENvbG9yOworfTsKKworaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBT
dHlsZUNvbG9yJiBhLCBjb25zdCBTdHlsZUNvbG9yJiBiKQoreworICAgIGlmIChhLmlzQ3VycmVu
dENvbG9yKCkgfHwgYi5pc0N1cnJlbnRDb2xvcigpKQorICAgICAgICByZXR1cm4gYS5pc0N1cnJl
bnRDb2xvcigpICYmIGIuaXNDdXJyZW50Q29sb3IoKTsKKyAgICByZXR1cm4gYS5nZXRDb2xvcigp
ID09IGIuZ2V0Q29sb3IoKTsKK30KKworaW5saW5lIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHls
ZUNvbG9yJiBhLCBjb25zdCBTdHlsZUNvbG9yJiBiKQoreworICAgIHJldHVybiAhKGEgPT0gYik7
Cit9CisKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkocmV2aXNpb24gMjA1OTkwKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMCwyMiArMzAsMjEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJDU1NQYXJzZXJGYXN0UGF0aHMuaCIKIAotLy8gRklYTUUtTkVXUEFSU0VSOiAjaW5jbHVk
ZSAiQ1NTQ29sb3JWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0Z1bmN0aW9uVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NJbmhlcml0ZWRWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU0luaXRpYWxWYWx1ZS5oIgog
I2luY2x1ZGUgIkNTU1BhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVl
LmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlQYXJzZXIuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZUxp
c3QuaCIKKyNpbmNsdWRlICJDU1NWYWx1ZVBvb2wuaCIKICNpbmNsdWRlICJIVE1MUGFyc2VySWRp
b21zLmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgotLy8gRklYTUUtTkVX
UEFSU0VSOiAjaW5jbHVkZSAiU3R5bGVDb2xvci5oIgorI2luY2x1ZGUgIlN0eWxlQ29sb3IuaCIK
ICNpbmNsdWRlICJTdHlsZVByb3BlcnR5U2hvcnRoYW5kLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotLyogRklYTUUtTkVXUEFSU0VSOiBUdXJuIG9mZiBmb3Igbm93LgotIAogc3RhdGljIGlu
bGluZSBib29sIGlzU2ltcGxlTGVuZ3RoUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
SWQsIGJvb2wmIGFjY2VwdHNOZWdhdGl2ZU51bWJlcnMpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0
eUlkKSB7CkBAIC0xMjAsNyArMTE5LDcgQEAgc3RhdGljIGlubGluZSBib29sIHBhcnNlU2ltcGxl
TGVuZ3RoKGNvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIHBhcnNl
U2ltcGxlTGVuZ3RoVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcm
IHN0cmluZywgQ1NTUGFyc2VyTW9kZSBjc3NQYXJzZXJNb2RlKQorc3RhdGljIFJlZlB0cjxDU1NW
YWx1ZT4gcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNv
bnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIGNzc1BhcnNlck1vZGUpCiB7CiAgICAg
QVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKICAgICBib29sIGFjY2VwdHNOZWdhdGl2ZU51bWJl
cnMgPSBmYWxzZTsKQEAgLTEzMSw3ICsxMzAsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlU2lt
cGxlTGVuZ3RoVmFsdWUoCiAKICAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3RoKCk7
CiAgICAgZG91YmxlIG51bWJlcjsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVu
aXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXI7CisgICAgQ1NTUHJpbWl0
aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
Q1NTX05VTUJFUjsKIAogICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpIHsKICAgICAgICAgaWYgKCFw
YXJzZVNpbXBsZUxlbmd0aChzdHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoLCB1bml0LCBudW1i
ZXIpKQpAQCAtMTQxLDEyICsxNDAsMTAgQEAgc3RhdGljIENTU1ZhbHVlKiBwYXJzZVNpbXBsZUxl
bmd0aFZhbHVlKAogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYg
KHVuaXQgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyKSB7Ci0gICAgICAg
IGlmIChjc3NQYXJzZXJNb2RlID09IFNWR0F0dHJpYnV0ZU1vZGUpCi0gICAgICAgICAgICB1bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6VXNlclVuaXRzOwotICAgICAgICBlbHNl
IGlmICghbnVtYmVyKQotICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OlBpeGVsczsKLSAgICAgICAgZWxzZQorICAgIGlmICh1bml0ID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVIpIHsKKyAgICAgICAgaWYgKCFudW1iZXIpCisg
ICAgICAgICAgICB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BYOwor
ICAgICAgICBlbHNlIGlmIChjc3NQYXJzZXJNb2RlICE9IFNWR0F0dHJpYnV0ZU1vZGUpCiAgICAg
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CiAKQEAgLTE3OSw3ICsxNzYsNyBAQCBzdGF0
aWMgaW5saW5lIGJvb2wgaXNDb2xvclByb3BlcnR5SUQoQ1NTCiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdlYmtpdFRleHRFbXBoYXNpc0NvbG9yOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RmlsbENvbG9yOgogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0U3Ryb2tlQ29sb3I6Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3I6CisgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uQ29sb3I6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAg
IGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI4NCw3ICsyODEsNyBAQCBzdGF0
aWMgYm9vbCBwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKGNvCiAgICAgaWYgKGN1cnJlbnQgPT0g
ZW5kKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlciAmJiAoKmN1cnJlbnQgPT0gJy4nIHx8ICpjdXJy
ZW50ID09ICclJykpCisgICAgaWYgKGV4cGVjdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5
cGVzOjpDU1NfTlVNQkVSICYmICgqY3VycmVudCA9PSAnLicgfHwgKmN1cnJlbnQgPT0gJyUnKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKCpjdXJyZW50ID09ICcuJykgewpAQCAt
MzAwLDE4ICsyOTcsMTggQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xvckludE9yUGVyY2VudGFnZShj
bwogICAgICAgICBsb2NhbFZhbHVlICs9IHBlcmNlbnRhZ2U7CiAgICAgfQogCi0gICAgaWYgKGV4
cGVjdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpQZXJjZW50YWdlICYmICpjdXJy
ZW50ICE9ICclJykKKyAgICBpZiAoZXhwZWN0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlw
ZXM6OkNTU19QRVJDRU5UQUdFICYmICpjdXJyZW50ICE9ICclJykKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgaWYgKCpjdXJyZW50ID09ICclJykgewotICAgICAgICBleHBlY3QgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpQZXJjZW50YWdlOworICAgICAgICBleHBlY3QgPSBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRTsKICAgICAgICAgbG9j
YWxWYWx1ZSA9IGxvY2FsVmFsdWUgLyAxMDAuMCAqIDI1Ni4wOwogICAgICAgICAvLyBDbGFtcCB2
YWx1ZXMgYXQgMjU1IGZvciBwZXJjZW50YWdlcyBvdmVyIDEwMCUKICAgICAgICAgaWYgKGxvY2Fs
VmFsdWUgPiAyNTUpCiAgICAgICAgICAgICBsb2NhbFZhbHVlID0gMjU1OwogICAgICAgICBjdXJy
ZW50Kys7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZXhwZWN0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6TnVtYmVyOworICAgICAgICBleHBlY3QgPSBDU1NQcmltaXRpdmVWYWx1ZTo6
VW5pdFR5cGVzOjpDU1NfTlVNQkVSOwogICAgIH0KIAogICAgIHdoaWxlIChjdXJyZW50ICE9IGVu
ZCAmJiBpc0hUTUxTcGFjZTxDaGFyYWN0ZXJUeXBlPigqY3VycmVudCkpCkBAIC00MTYsNyArNDEz
LDcgQEAgc3RhdGljIGlubGluZSBib29sIG1pZ2h0QmVSR0IoY29uc3QgQ2hhcgogdGVtcGxhdGUg
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CiBzdGF0aWMgYm9vbCBmYXN0UGFyc2VDb2xvckludGVy
bmFsKFJHQkEzMiYgcmdiLCBjb25zdCBDaGFyYWN0ZXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25l
ZCBsZW5ndGgsIGJvb2wgcXVpcmtzTW9kZSkKIHsKLSAgICBDU1NQcmltaXRpdmVWYWx1ZTo6VW5p
dFR5cGVzIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlVua25vd247Cisg
ICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBleHBlY3QgPSBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpDU1NfVU5LTk9XTjsKIAogICAgIGlmIChsZW5ndGggPj0gNCAmJiBjaGFy
YWN0ZXJzWzBdID09ICcjJykKICAgICAgICAgcmV0dXJuIENvbG9yOjpwYXJzZUhleENvbG9yKGNo
YXJhY3RlcnMgKyAxLCBsZW5ndGggLSAxLCByZ2IpOwpAQCAtNDcxLDcgKzQ2OCw3IEBAIHN0YXRp
YyBib29sIGZhc3RQYXJzZUNvbG9ySW50ZXJuYWwoUkdCQTMKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLUNTU1ZhbHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlQ29sb3IoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkKK1JlZlB0cjxDU1NWYWx1ZT4gQ1NT
UGFyc2VyRmFzdFBhdGhzOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJz
ZXJNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKICAg
ICBDU1NWYWx1ZUlEIHZhbHVlSUQgPSBjc3NWYWx1ZUtleXdvcmRJRChzdHJpbmcpOwpAQCAtNDky
LDcgKzQ4OSw3IEBAIENTU1ZhbHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6OnBhcnNlQ29sb3IKICAg
ICAgICAgcGFyc2VSZXN1bHQgPSBmYXN0UGFyc2VDb2xvckludGVybmFsKGNvbG9yLCBzdHJpbmcu
Y2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5ndGgoKSwgcXVpcmtzTW9kZSk7CiAgICAgaWYgKCFw
YXJzZVJlc3VsdCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7Ci0gICAgcmV0dXJuIENTU0NvbG9y
VmFsdWU6OmNyZWF0ZShjb2xvcik7CisgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9u
KCkuY3JlYXRlQ29sb3JWYWx1ZShjb2xvcik7OwogfQogCiBib29sIENTU1BhcnNlckZhc3RQYXRo
czo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJ
ZCwgQ1NTVmFsdWVJRCB2YWx1ZUlELCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCkBAIC01Mzcs
OSArNTM0LDkgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbnplcm8gfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUV2ZW5vZGQ7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoKICAg
ICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoKLSAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdCIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaW5lYXJSR0I7CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3JnYiB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTGluZWFycmdiOwogICAgIGNhc2UgQ1NTUHJvcGVydHlDb2xvclJlbmRlcmluZzoKLSAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVPcHRpbWl6ZVNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZVF1YWxpdHk7Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlT3B0aW1pemVzcGVlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVxdWFsaXR5Owog
ICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rpb246IC8vIGx0ciB8IHJ0bAogICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUx0ciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUnRsOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgpAQCAtNTQ4LDcgKzU0NSwxMCBAQCBib29sIENTU1Bh
cnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQCiAgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1n
cm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxlLWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtp
dC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3ggfCBub25lCiAgICAgICAgIC8vIGZsZXggfCBpbmxp
bmUtZmxleCB8IC13ZWJraXQtZmxleCB8IC13ZWJraXQtaW5saW5lLWZsZXggfCBncmlkIHwgaW5s
aW5lLWdyaWQKICAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlSW5saW5lICYmIHZh
bHVlSUQgPD0gQ1NTVmFsdWVJbmxpbmVGbGV4KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0
RmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SW5saW5lRmxleCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlTm9uZQotICAgICAgICAgICAgfHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNz
c0dyaWRMYXlvdXRFbmFibGVkKCkgJiYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVHcmlkIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVJbmxpbmVHcmlkKSk7CisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
KyAgICAgICAgICAgIHx8IChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSAmJiAodmFsdWVJRCA9PSBDU1NWYWx1ZUdyaWQgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUlubGluZUdyaWQpKQorI2VuZGlmCisgICAgICAgICAgICA7CiAg
ICAgY2FzZSBDU1NQcm9wZXJ0eURvbWluYW50QmFzZWxpbmU6CiAgICAgICAgIC8vIGF1dG8gfCB1
c2Utc2NyaXB0IHwgbm8tY2hhbmdlIHwgcmVzZXQtc2l6ZSB8IGlkZW9ncmFwaGljIHwKICAgICAg
ICAgLy8gYWxwaGFiZXRpYyB8IGhhbmdpbmcgfCBtYXRoZW1hdGljYWwgfCBjZW50cmFsIHwgbWlk
ZGxlIHwKQEAgLTU2Niw4ICs1NjYsMTAgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFs
aWRLZXl3b3JkUAogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCAo
dmFsdWVJRCA+PSBDU1NWYWx1ZVVsdHJhQ29uZGVuc2VkICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVV
bHRyYUV4cGFuZGVkKTsKICAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6IC8vIGF1
dG8gfCBvcHRpbWl6ZUNvbnRyYXN0IHwgcGl4ZWxhdGVkCiAgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0T3B0aW1pemVDb250
cmFzdCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGl4ZWxhdGVkOworI2lmIEVOQUJMRShDU1NfQ09N
UE9TSVRJTkcpCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUlzb2xhdGlvbjogLy8gYXV0byB8IGlzb2xh
dGUKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVJc29sYXRlOworI2VuZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVBv
c2l0aW9uOiAvLyBpbnNpZGUgfCBvdXRzaWRlCiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlSW5zaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPdXRzaWRlOwogICAgIGNhc2UgQ1NT
UHJvcGVydHlMaXN0U3R5bGVUeXBlOgpAQCAtNTgwLDggKzU4Miw5IEBAIGJvb2wgQ1NTUGFyc2Vy
RmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVGaWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb250YWluIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVDb3ZlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlU2NhbGVEb3duOwogICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lU3R5bGU6IC8vICg8Ym9y
ZGVyLXN0eWxlPiBleGNlcHQgaGlkZGVuKSB8IGF1dG8KICAgICAgICAgcmV0dXJuIHZhbHVlSUQg
PT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8ICh2YWx1ZUlEID49
IENTU1ZhbHVlSW5zZXQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZURvdWJsZSk7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eU92ZXJmbG93QW5jaG9yOgotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUF1dG87CisgICAgLy8gRklYTUUtTkVXUEFSU0VSOiBTdXBwb3J0PworICAgIC8vIGNhc2Ug
Q1NTUHJvcGVydHlPdmVyZmxvd0FuY2hvcjoKKyAgICAvLyAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZVZpc2libGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG87CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93V3JhcDogLy8gbm9ybWFs
IHwgYnJlYWstd29yZAogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkV3JhcDoKICAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFr
V29yZDsKQEAgLTU5NywxNiArNjAwLDE3IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1Zh
bGlkS2V5d29yZFAKICAgICBjYXNlIENTU1Byb3BlcnR5UG9pbnRlckV2ZW50czoKICAgICAgICAg
Ly8gbm9uZSB8IHZpc2libGVQYWludGVkIHwgdmlzaWJsZUZpbGwgfCB2aXNpYmxlU3Ryb2tlIHwg
dmlzaWJsZSB8CiAgICAgICAgIC8vIHBhaW50ZWQgfCBmaWxsIHwgc3Ryb2tlIHwgYXV0byB8IGFs
bCB8IGJvdW5kaW5nLWJveAotICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVZpc2li
bGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCAodmFsdWVJRCA+PSBDU1NWYWx1ZVZpc2libGVQ
YWludGVkICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVCb3VuZGluZ0JveCk7CisgICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8ICh2
YWx1ZUlEID49IENTU1ZhbHVlVmlzaWJsZXBhaW50ZWQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVN0
cm9rZSk7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVBvc2l0aW9uOiAvLyBzdGF0aWMgfCByZWxhdGl2
ZSB8IGFic29sdXRlIHwgZml4ZWQgfCBzdGlja3kKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVTdGF0aWMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlbGF0aXZlIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVBYnNvbHV0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRml4ZWQgfHwgKFJ1bnRp
bWVFbmFibGVkRmVhdHVyZXM6OmNzc1N0aWNreVBvc2l0aW9uRW5hYmxlZCgpICYmIHZhbHVlSUQg
PT0gQ1NTVmFsdWVTdGlja3kpOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0
YXRpYyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVsYXRpdmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUFic29sdXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVGaXhlZCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlV2Via2l0U3RpY2t5OwogICAgIGNhc2UgQ1NTUHJvcGVydHlSZXNpemU6IC8vIG5vbmUgfCBi
b3RoIHwgaG9yaXpvbnRhbCB8IHZlcnRpY2FsIHwgYXV0bwogICAgICAgICByZXR1cm4gdmFsdWVJ
RCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJvdGggfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUhvcml6b250YWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVZlcnRpY2FsIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVBdXRvOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxCZWhhdmlv
cjogLy8gYXV0byB8IHNtb290aAotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6Y3Nzb21TbW9vdGhTY3JvbGxFbmFibGVkKCkpOwotICAgICAgICByZXR1cm4gdmFsdWVJRCA9
PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNtb290aDsKKyAgICAvLyBGSVhN
RS1ORVdQQVJTRVI6IEludmVzdGlnYXRlIHRoaXMgcHJvcGVydHkuCisgICAgLy8gY2FzZSBDU1NQ
cm9wZXJ0eVNjcm9sbEJlaGF2aW9yOiAvLyBhdXRvIHwgc21vb3RoCisgICAgLy8gICAgIEFTU0VS
VChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NvbVNtb290aFNjcm9sbEVuYWJsZWQoKSk7Cisg
ICAgLy8gICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVNtb290aDsKICAgICBjYXNlIENTU1Byb3BlcnR5U2hhcGVSZW5kZXJpbmc6Ci0gICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0
aW1pemVTcGVlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ3Jpc3BFZGdlcyB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlR2VvbWV0cmljUHJlY2lzaW9uOworICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU9wdGltaXplc3BlZWQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUNyaXNwRWRnZXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY3By
ZWNpc2lvbjsKICAgICBjYXNlIENTU1Byb3BlcnR5U3BlYWs6IC8vIG5vbmUgfCBub3JtYWwgfCBz
cGVsbC1vdXQgfCBkaWdpdHMgfCBsaXRlcmFsLXB1bmN0dWF0aW9uIHwgbm8tcHVuY3R1YXRpb24K
ICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwZWxsT3V0IHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVEaWdpdHMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpdGVyYWxQdW5jdHVhdGlvbiB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9QdW5jdHVhdGlvbjsKICAgICBjYXNlIENTU1Byb3BlcnR5
U3Ryb2tlTGluZWpvaW46CkBAIC02MTYsNTAgKzYyMCw1NCBAQCBib29sIENTU1BhcnNlckZhc3RQ
YXRoczo6aXNWYWxpZEtleXdvcmRQCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRhYmxlTGF5b3V0OiAv
LyBhdXRvIHwgZml4ZWQKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVGaXhlZDsKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWdu
OgotICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVXZWJraXRBdXRvICYmIHZhbHVl
SUQgPD0gQ1NTVmFsdWVJbnRlcm5hbENlbnRlcikgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQ7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRBbGln
bkxhc3Q6CisgICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZVdlYmtpdEF1dG8gJiYg
dmFsdWVJRCA8PSBDU1NWYWx1ZVdlYmtpdE1hdGNoUGFyZW50KSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZDsKKyNpZiBFTkFCTEUoQ1NTM19URVhU
KQorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0QWxpZ25MYXN0OgogICAgICAgICAvLyBh
dXRvIHwgc3RhcnQgfCBlbmQgfCBsZWZ0IHwgcmlnaHQgfCBjZW50ZXIgfCBqdXN0aWZ5CiAgICAg
ICAgIHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUxlZnQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1
ZUp1c3RpZnkpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlRW5kIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvOworI2VuZGlmCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVRleHRBbmNob3I6CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3Rh
cnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1pZGRsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW5k
OwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0Q29tYmluZVVwcmlnaHQ6Ci0gICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvblN0eWxlOgorLy8gRklYTUUtTkVXUEFSU0VS
OiBTdXBwb3J0CisvLyAgICBjYXNlIENTU1Byb3BlcnR5VGV4dENvbWJpbmVVcHJpZ2h0OgorLy8g
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQWxsOworICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvblN0eWxlOgog
ICAgICAgICAvLyBzb2xpZCB8IGRvdWJsZSB8IGRvdHRlZCB8IGRhc2hlZCB8IHdhdnkKLSAgICAg
ICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzczNUZXh0RGVjb3JhdGlvbnNFbmFi
bGVkKCkpOwogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVNvbGlkIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVEb3VibGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvdHRlZCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlRGFzaGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXYXZ5OwotICAgIGNh
c2UgQ1NTUHJvcGVydHlUZXh0SnVzdGlmeToKKyNpZiBFTkFCTEUoQ1NTM19URVhUKQorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0SnVzdGlmeToKICAgICAgICAgLy8gYXV0byB8IG5vbmUg
fCBpbnRlci13b3JkIHwgZGlzdHJpYnV0ZQogICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRG
ZWF0dXJlczo6Y3NzM1RleHRFbmFibGVkKCkpOwogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUludGVyV29yZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRGlzdHJpYnV0ZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKLSAgICBjYXNl
IENTU1Byb3BlcnR5VGV4dE9yaWVudGF0aW9uOiAvLyBtaXhlZCB8IHVwcmlnaHQgfCBzaWRld2F5
cyB8IHNpZGV3YXlzLXJpZ2h0CisjZW5kaWYKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4
dE9yaWVudGF0aW9uOiAvLyBtaXhlZCB8IHVwcmlnaHQgfCBzaWRld2F5cyB8IHNpZGV3YXlzLXJp
Z2h0CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTWl4ZWQgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZVVwcmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTaWRld2F5c1JpZ2h0OwotICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0T3JpZW50YXRpb246Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU2lkZXdh
eXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVZlcnRpY2FsUmlnaHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVVwcmlnaHQ7CiAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eVRleHRPdmVyZmxvdzogLy8gY2xpcCB8IGVsbGlwc2lzCiAgICAgICAgIHJl
dHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQ2xpcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxsaXBz
aXM7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRSZW5kZXJpbmc6IC8vIGF1dG8gfCBvcHRpbWl6
ZVNwZWVkIHwgb3B0aW1pemVMZWdpYmlsaXR5IHwgZ2VvbWV0cmljUHJlY2lzaW9uCi0gICAgICAg
IHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0
aW1pemVTcGVlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVMZWdpYmlsaXR5IHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNQcmVjaXNpb247CisgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVsZWdpYmlsaXR5IHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVHZW9tZXRyaWNwcmVjaXNpb247CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRUcmFuc2Zv
cm06IC8vIGNhcGl0YWxpemUgfCB1cHBlcmNhc2UgfCBsb3dlcmNhc2UgfCBub25lCiAgICAgICAg
IHJldHVybiAodmFsdWVJRCA+PSBDU1NWYWx1ZUNhcGl0YWxpemUgJiYgdmFsdWVJRCA8PSBDU1NW
YWx1ZUxvd2VyY2FzZSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmU7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVVuaWNvZGVCaWRpOgogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5v
cm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlRW1iZWQKICAgICAgICAgICAgIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVCaWRpT3ZlcnJpZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdElzb2xh
dGUKICAgICAgICAgICAgIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRJc29sYXRlT3ZlcnJp
ZGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdFBsYWludGV4dAotICAgICAgICAgICAgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUlzb2xhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUlzb2xhdGVP
dmVycmlkZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUGxhaW50ZXh0OworICAgICAgICAgICAgfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUlzb2xhdGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdlYmtpdElz
b2xhdGVPdmVycmlkZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0UGxhaW50ZXh0OwogICAg
IGNhc2UgQ1NTUHJvcGVydHlWZWN0b3JFZmZlY3Q6CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uU2NhbGluZ1N0cm9rZTsKICAg
ICBjYXNlIENTU1Byb3BlcnR5VmlzaWJpbGl0eTogLy8gdmlzaWJsZSB8IGhpZGRlbiB8IGNvbGxh
cHNlCiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlSGlkZGVuIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVDb2xsYXBzZTsKICAgICBj
YXNlIENTU1Byb3BlcnR5V2Via2l0QXBwZWFyYW5jZToKICAgICAgICAgcmV0dXJuICh2YWx1ZUlE
ID49IENTU1ZhbHVlQ2hlY2tib3ggJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVRleHRhcmVhKSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKLSAgICBjYXNlIENTU1Byb3BlcnR5QmFja2ZhY2VWaXNp
YmlsaXR5OgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRCYWNrZmFjZVZpc2liaWxpdHk6CiAg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlSGlkZGVuOworI2lmIEVOQUJMRShDU1NfQ09NUE9TSVRJTkcpCiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eU1peEJsZW5kTW9kZToKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVO
b3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU11bHRpcGx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVTY3JlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU92ZXJsYXkKICAgICAgICAgICAgIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVEYXJrZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUxpZ2h0ZW4gfHwg
dmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9yRG9kZ2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvbG9y
QnVybgogICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUhhcmRMaWdodCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlU29mdExpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEaWZmZXJlbmNl
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFeGNsdXNpb24KICAgICAgICAgICAgIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVIdWUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNhdHVyYXRpb24gfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUNvbG9yIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMdW1pbm9zaXR5OworI2Vu
ZGlmCiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJveEFsaWduOgogICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZVN0cmV0Y2ggfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXJ0IHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNlbnRlciB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlQmFzZWxpbmU7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEJv
eERlY29yYXRpb25CcmVhazoKQEAgLTY4NywxMiArNjk1LDEyIEBAIGJvb2wgQ1NTUGFyc2VyRmFz
dFBhdGhzOjppc1ZhbGlkS2V5d29yZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVSb3cgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJvd1JldmVyc2UgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZUNvbHVtbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uUmV2ZXJzZTsKICAgICBjYXNl
IENTU1Byb3BlcnR5RmxleFdyYXA6CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
Tm93cmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVX
cmFwUmV2ZXJzZTsKLSAgICBjYXNlIENTU1Byb3BlcnR5SHlwaGVuczoKKyAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0SHlwaGVuczoKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVB
dXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW51
YWw7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUp1c3RpZnlDb250ZW50OgogICAgICAgICAvLyBGSVhN
RTogUGVyIENTUyBhbGlnbm1lbnQsIHRoaXMgcHJvcGVydHkgc2hvdWxkIGFjY2VwdCBhbiBvcHRp
b25hbCA8b3ZlcmZsb3ctcG9zaXRpb24+LiBXZSBzaG91bGQgc2hhcmUgdGhpcyBwYXJzaW5nIGNv
ZGUgd2l0aCAnanVzdGlmeS1zZWxmJy4KICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVGbGV4U3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhFbmQgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZUNlbnRlciB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU3BhY2VCZXR3ZWVuIHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVTcGFjZUFyb3VuZDsKLSAgICBjYXNlIENTU1Byb3BlcnR5Rm9udEtlcm5p
bmc6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdEZvbnRLZXJuaW5nOgogICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZTsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Rm9u
dFNtb290aGluZzoKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbnRpYWxpYXNlZCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlU3VicGl4ZWxBbnRpYWxpYXNlZDsKQEAgLTcyMSw3ICs3Mjks
NyBAQCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQCiAgICAgICAgIHJl
dHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlRWxlbWVudDsKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
VXNlck1vZGlmeTogLy8gcmVhZC1vbmx5IHwgcmVhZC13cml0ZQogICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZVJlYWRPbmx5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWFkV3JpdGUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZVBsYWludGV4dE9ubHk7Ci0gICAgY2FzZSBD
U1NQcm9wZXJ0eVVzZXJTZWxlY3Q6IC8vIGF1dG8gfCBub25lIHwgdGV4dCB8IGFsbAorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyU2VsZWN0OiAvLyBhdXRvIHwgbm9uZSB8IHRleHQgfCBh
bGwKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVUZXh0IHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVBbGw7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFdyaXRpbmdNb2RlOgogICAgICAg
ICByZXR1cm4gdmFsdWVJRCA+PSBDU1NWYWx1ZUhvcml6b250YWxUYiAmJiB2YWx1ZUlEIDw9IENT
U1ZhbHVlVmVydGljYWxMcjsKQEAgLTczNCwxNSArNzQyLDI5IEBAIGJvb2wgQ1NTUGFyc2VyRmFz
dFBhdGhzOjppc1ZhbGlkS2V5d29yZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVByZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
UHJlV3JhcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJlTGluZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm93cmFwOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXb3JkQnJlYWs6IC8vIG5vcm1hbCB8IGJy
ZWFrLWFsbCB8IGtlZXAtYWxsIHwgYnJlYWstd29yZCAodGhpcyBpcyBhIGN1c3RvbSBleHRlbnNp
b24pCiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVCcmVha0FsbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlS2VlcEFsbCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOwotICAgIGNhc2UgQ1NTUHJvcGVydHlTY3JvbGxTbmFw
VHlwZTogLy8gbm9uZSB8IG1hbmRhdG9yeSB8IHByb3hpbWl0eQotICAgICAgICBBU1NFUlQoUnVu
dGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU2Nyb2xsU25hcFBvaW50c0VuYWJsZWQoKSk7Ci0gICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
TWFuZGF0b3J5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcm94aW1pdHk7CisjaWYgRU5BQkxFKENT
U19TQ1JPTExfU05BUCkKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0U2Nyb2xsU25hcFR5cGU6
IC8vIG5vbmUgfCBtYW5kYXRvcnkgfCBwcm94aW1pdHkKKyAgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWFuZGF0b3J5IHx8IHZhbHVl
SUQgPT0gQ1NTVmFsdWVQcm94aW1pdHk7CisjZW5kaWYKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQorICAgIGNhc2UgQ1NTUHJvcGVydHlUb3VjaEFjdGlvbjogLy8gYXV0byB8IG1hbmlwdWxhdGlv
bgorICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU1hbmlwdWxhdGlvbjsKKyNlbmRpZgorI2lmIEVOQUJMRShDU1NfVFJBSUxJTkdfV09S
RCkKKyAgICBjYXNlIENTU1Byb3BlcnR5QXBwbGVUcmFpbGluZ1dvcmQ6IC8vIGF1dG8gfCAtYXBw
bGUtcGFydGlhbGx5LWJhbGFuY2VkCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVl
QXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0UGFydGlhbGx5QmFsYW5jZWQ7CisjZW5k
aWYKKyNpZiBFTkFCTEUoQVBQTEVfUEFZKQorICAgIGNhc2UgQ1NTUHJvcGVydHlBcHBsZVBheUJ1
dHRvblN0eWxlOiAvLyB3aGl0ZSB8IHdoaXRlLW91dGxpbmUgfCBibGFjaworICAgICAgICByZXR1
cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVdoaXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXaGl0ZU91
dGxpbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJsYWNrOworICAgIGNhc2UgQ1NTUHJvcGVydHlB
cHBsZVBheUJ1dHRvblR5cGU6IC8vIHBsYWluIHwgYnV5IHwgc2V0LXVwIHwgaW4tc3RvcmUKKyAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVQbGFpbiB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlQnV5IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTZXRVcCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
SW5TdG9yZTsKKyNlbmRpZgogICAgIGRlZmF1bHQ6CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogfQotKi8KIAogYm9vbCBDU1NQYXJz
ZXJGYXN0UGF0aHM6OmlzS2V5d29yZFByb3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlk
KQogewpAQCAtOTQxLDE1ICs5NjMsMjIgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzS2V5
d29yZFByb3BlcgogICAgIH0KIH0KIAotLyogRklYTUUtTkVXUEFSU0VSOiBUdXJuIG9mZiBmb3Ig
bm93Lgorc3RhdGljIGJvb2wgaXNVbml2ZXJzYWxLZXl3b3JkKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQoreworICAgIC8vIFRoZXNlIGtleXdvcmRzIGNhbiBiZSB1c2VkIGZvciBhbGwgcHJvcGVydGll
cy4KKyAgICByZXR1cm4gZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5p
dGlhbCIpCisgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5o
ZXJpdCIpCisgICAgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAidW5z
ZXQiKQorICAgIHx8IGVxdWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInJldmVy
dCIpOworfQogCi1zdGF0aWMgQ1NTVmFsdWUqIHBhcnNlS2V5d29yZFZhbHVlKENTU1Byb3BlcnR5
SUQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2Vy
TW9kZSkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlS2V5d29yZFZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgcGFy
c2VyTW9kZSkKIHsKICAgICBBU1NFUlQoIXN0cmluZy5pc0VtcHR5KCkpOwogCiAgICAgaWYgKCFD
U1NQYXJzZXJGYXN0UGF0aHM6OmlzS2V5d29yZFByb3BlcnR5SUQocHJvcGVydHlJZCkpIHsKICAg
ICAgICAgLy8gQWxsIHByb3BlcnRpZXMgYWNjZXB0IHRoZSB2YWx1ZXMgb2YgImluaXRpYWwiIGFu
ZCAiaW5oZXJpdCIuCi0gICAgICAgIGlmICghZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcs
ICJpbml0aWFsIikgJiYgIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5oZXJpdCIp
KQorICAgICAgICBpZiAoIWlzVW5pdmVyc2FsS2V5d29yZChzdHJpbmcpKQogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAKICAgICAgICAgLy8gUGFyc2UgaW5pdGlhbC9pbmhlcml0IHNob3J0
aGFuZHMgdXNpbmcgdGhlIENTU1Byb3BlcnR5UGFyc2VyLgpAQCAtOTU3LDcgKzk4Niw3IEBAIHN0
YXRpYyBDU1NWYWx1ZSogcGFyc2VLZXl3b3JkVmFsdWUoQ1NTUHIKICAgICAgICAgICAgIHJldHVy
biBudWxscHRyOwogCiAgICAgICAgIC8vIERlc2NyaXB0b3JzIGRvIG5vdCBzdXBwb3J0IGNzcyB3
aWRlIGtleXdvcmRzLgotICAgICAgICBpZiAoQ1NTUHJvcGVydHlNZXRhZGF0YTo6aXNEZXNjcmlw
dG9yT25seShwcm9wZXJ0eUlkKSkKKyAgICAgICAgaWYgKENTU1Byb3BlcnR5Ojppc0Rlc2NyaXB0
b3JPbmx5KHByb3BlcnR5SWQpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQog
CkBAIC05NjcsOSArOTk2LDE0IEBAIHN0YXRpYyBDU1NWYWx1ZSogcGFyc2VLZXl3b3JkVmFsdWUo
Q1NTUHIKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBpZiAodmFsdWVJRCA9PSBDU1NW
YWx1ZUluaGVyaXQpCi0gICAgICAgIHJldHVybiBDU1NJbmhlcml0ZWRWYWx1ZTo6Y3JlYXRlKCk7
CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUluaGVyaXRl
ZFZhbHVlKCk7CiAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbml0aWFsKQotICAgICAgICBy
ZXR1cm4gQ1NTSW5pdGlhbFZhbHVlOjpjcmVhdGUoKTsKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVl
UG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlRXhwbGljaXRJbml0aWFsVmFsdWUoKTsKKyAgICBpZiAo
dmFsdWVJRCA9PSBDU1NWYWx1ZVVuc2V0KQorICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpz
aW5nbGV0b24oKS5jcmVhdGVVbnNldFZhbHVlKCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFs
dWVSZXZlcnQpCisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZVJldmVydFZhbHVlKCk7CisgICAgCiAgICAgaWYgKENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxp
ZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKHByb3BlcnR5SWQsIHZhbHVlSUQsIHBhcnNlck1vZGUp
KQogICAgICAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZUlkZW50aWZpZXIodmFs
dWVJRCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC05ODAsMTYgKzEwMTQsMTYgQEAgc3RhdGlj
IGJvb2wgcGFyc2VUcmFuc2Zvcm1UcmFuc2xhdGVBcmd1bQogewogICAgIHdoaWxlIChleHBlY3Rl
ZENvdW50KSB7CiAgICAgICAgIHNpemVfdCBkZWxpbWl0ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQg
LSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/ICcpJyA6ICcsJyk7Ci0gICAgICAgIGlmIChkZWxp
bWl0ZXIgPT0ga05vdEZvdW5kKQorICAgICAgICBpZiAoZGVsaW1pdGVyID09IG5vdEZvdW5kKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB1bnNpZ25lZCBhcmd1bWVudExlbmd0
aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihkZWxpbWl0ZXIpOwotICAgICAgICBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpO
dW1iZXI7CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVI7CiAgICAgICAgIGRvdWJsZSBudW1i
ZXI7CiAgICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgocG9zLCBhcmd1bWVudExlbmd0aCwg
dW5pdCwgbnVtYmVyKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgaWYgKHVu
aXQgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6UGl4ZWxzICYmIChudW1iZXIgfHwg
dW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1iZXIpKQorICAgICAgICBp
ZiAodW5pdCAhPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFggJiYgKG51bWJl
ciB8fCB1bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVIpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5k
KCpDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6UGl4ZWxzKSk7CisgICAgICAgIHRyYW5zZm9ybVZhbHVlLT5hcHBlbmQoQ1NTUHJp
bWl0aXZlVmFsdWU6OmNyZWF0ZShudW1iZXIsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6
OkNTU19QWCkpOwogICAgICAgICBwb3MgKz0gYXJndW1lbnRMZW5ndGggKyAxOwogICAgICAgICAt
LWV4cGVjdGVkQ291bnQ7CiAgICAgfQpAQCAtMTAwMSwxNCArMTAzNSwxNCBAQCBzdGF0aWMgYm9v
bCBwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50CiB7CiAgICAgd2hpbGUgKGV4cGVjdGVkQ291
bnQpIHsKICAgICAgICAgc2l6ZV90IGRlbGltaXRlciA9IFdURjo6ZmluZChwb3MsIGVuZCAtIHBv
cywgZXhwZWN0ZWRDb3VudCA9PSAxID8gJyknIDogJywnKTsKLSAgICAgICAgaWYgKGRlbGltaXRl
ciA9PSBrTm90Rm91bmQpCisgICAgICAgIGlmIChkZWxpbWl0ZXIgPT0gbm90Rm91bmQpCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50TGVuZ3RoID0g
c3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGRlbGltaXRlcik7CiAgICAgICAgIGJvb2wgb2s7CiAgICAg
ICAgIGRvdWJsZSBudW1iZXIgPSBjaGFyYWN0ZXJzVG9Eb3VibGUocG9zLCBhcmd1bWVudExlbmd0
aCwgJm9rKTsKICAgICAgICAgaWYgKCFvaykKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShu
dW1iZXIsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcikpOworICAgICAgICB0
cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCBD
U1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTlVNQkVSKSk7CiAgICAgICAgIHBvcyAr
PSBhcmd1bWVudExlbmd0aCArIDE7CiAgICAgICAgIC0tZXhwZWN0ZWRDb3VudDsKICAgICB9CkBA
IC0xMDE4LDcgKzEwNTIsNyBAQCBzdGF0aWMgYm9vbCBwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3Vt
ZW50CiBzdGF0aWMgY29uc3QgaW50IGtTaG9ydGVzdFZhbGlkVHJhbnNmb3JtU3RyaW5nTGVuZ3Ro
ID0gMTI7CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyVHlwZT4KLXN0YXRpYyBDU1NGdW5jdGlv
blZhbHVlKiBwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlw
ZSogZW5kKQorc3RhdGljIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVlPiBwYXJzZVNpbXBsZVRyYW5z
Zm9ybVZhbHVlKENoYXJUeXBlKiYgcG9zLCBDaGFyVHlwZSogZW5kKQogewogICAgIGlmIChlbmQg
LSBwb3MgPCBrU2hvcnRlc3RWYWxpZFRyYW5zZm9ybVN0cmluZ0xlbmd0aCkKICAgICAgICAgcmV0
dXJuIG51bGxwdHI7CkBAIC0xMDM5LDExICsxMDczLDExIEBAIHN0YXRpYyBDU1NGdW5jdGlvblZh
bHVlKiBwYXJzZVNpbXBsZVRyYW4KICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRTdGFydCA9IDEx
OwogICAgICAgICBDaGFyVHlwZSBjOSA9IHRvQVNDSUlMb3dlcihwb3NbOV0pOwogICAgICAgICBp
ZiAoYzkgPT0gJ3gnICYmIHBvc1sxMF0gPT0gJygnKSB7Ci0gICAgICAgICAgICB0cmFuc2Zvcm1U
eXBlID0gQ1NTVmFsdWVUcmFuc2xhdGVYOworICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENT
U1ZhbHVlVHJhbnNsYXRleDsKICAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAneScgJiYgcG9zWzEw
XSA9PSAnKCcpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0
ZVk7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGV5OwogICAg
ICAgICB9IGVsc2UgaWYgKGM5ID09ICd6JyAmJiBwb3NbMTBdID09ICcoJykgewotICAgICAgICAg
ICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlWjsKKyAgICAgICAgICAgIHRyYW5z
Zm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZXo7CiAgICAgICAgIH0gZWxzZSBpZiAoYzkgPT0g
JygnKSB7CiAgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGU7CiAg
ICAgICAgICAgICBleHBlY3RlZEFyZ3VtZW50Q291bnQgPSAyOwpAQCAtMTA1Niw4ICsxMDkwLDgg
QEAgc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIHBhcnNlU2ltcGxlVHJhbgogICAgICAgICAgICAg
cmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KICAgICAgICAgcG9zICs9IGFyZ3VtZW50U3RhcnQ7
Ci0gICAgICAgIENTU0Z1bmN0aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25W
YWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybVR5cGUpOwotICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3Jt
VHJhbnNsYXRlQXJndW1lbnRzKHBvcywgZW5kLCBleHBlY3RlZEFyZ3VtZW50Q291bnQsIHRyYW5z
Zm9ybVZhbHVlKSkKKyAgICAgICAgUmVmUHRyPENTU0Z1bmN0aW9uVmFsdWU+IHRyYW5zZm9ybVZh
bHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKHRyYW5zZm9ybVR5cGUpOworICAgICAgICBp
ZiAoIXBhcnNlVHJhbnNmb3JtVHJhbnNsYXRlQXJndW1lbnRzKHBvcywgZW5kLCBleHBlY3RlZEFy
Z3VtZW50Q291bnQsIHRyYW5zZm9ybVZhbHVlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBu
dWxscHRyOwogICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CiAgICAgfQpAQCAtMTA3NCw4
ICsxMTA4LDggQEAgc3RhdGljIENTU0Z1bmN0aW9uVmFsdWUqIHBhcnNlU2ltcGxlVHJhbgogCiAg
ICAgaWYgKGlzTWF0cml4M2QpIHsKICAgICAgICAgcG9zICs9IDk7Ci0gICAgICAgIENTU0Z1bmN0
aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1Zh
bHVlTWF0cml4M2QpOwotICAgICAgICBpZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRz
KHBvcywgZW5kLCAxNiwgdHJhbnNmb3JtVmFsdWUpKQorICAgICAgICBSZWZQdHI8Q1NTRnVuY3Rp
b25WYWx1ZT4gdHJhbnNmb3JtVmFsdWUgPSBDU1NGdW5jdGlvblZhbHVlOjpjcmVhdGUoQ1NTVmFs
dWVNYXRyaXgzZCk7CisgICAgICAgIGlmICghcGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudHMo
cG9zLCBlbmQsIDE2LCB0cmFuc2Zvcm1WYWx1ZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybVZhbHVlOwogICAgIH0KQEAgLTEwOTEs
OCArMTEyNSw4IEBAIHN0YXRpYyBDU1NGdW5jdGlvblZhbHVlKiBwYXJzZVNpbXBsZVRyYW4KIAog
ICAgIGlmIChpc1NjYWxlM2QpIHsKICAgICAgICAgcG9zICs9IDg7Ci0gICAgICAgIENTU0Z1bmN0
aW9uVmFsdWUqIHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1Zh
bHVlU2NhbGUzZCk7Ci0gICAgICAgIGlmICghcGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudHMo
cG9zLCBlbmQsIDMsIHRyYW5zZm9ybVZhbHVlKSkKKyAgICAgICAgUmVmUHRyPENTU0Z1bmN0aW9u
VmFsdWU+IHRyYW5zZm9ybVZhbHVlID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVl
U2NhbGUzZCk7CisgICAgICAgIGlmICghcGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudHMocG9z
LCBlbmQsIDMsIHRyYW5zZm9ybVZhbHVlLmdldCgpKSkKICAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgICAgICByZXR1cm4gdHJhbnNmb3JtVmFsdWU7CiAgICAgfQpAQCAtMTEzOSw3ICsx
MTczLDcgQEAgc3RhdGljIGJvb2wgdHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBhdAogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHNpemVfdCBhcmd1bWVudHNF
bmQgPSBXVEY6OmZpbmQoY2hhcnMsIGxlbmd0aCwgJyknLCBpKTsKLSAgICAgICAgaWYgKGFyZ3Vt
ZW50c0VuZCA9PSBrTm90Rm91bmQpCisgICAgICAgIGlmIChhcmd1bWVudHNFbmQgPT0gbm90Rm91
bmQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIC8vIEFkdmFuY2UgdG8gdGhl
IGVuZCBvZiB0aGUgYXJndW1lbnRzLgogICAgICAgICBpID0gYXJndW1lbnRzRW5kICsgMTsKQEAg
LTExNDgsMTkgKzExODIsMTkgQEAgc3RhdGljIGJvb2wgdHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFz
dFBhdAogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ2hhclR5cGU+Ci1zdGF0aWMgQ1NTVmFsdWVM
aXN0KiBwYXJzZVNpbXBsZVRyYW5zZm9ybUxpc3QoY29uc3QgQ2hhclR5cGUqIGNoYXJzLCB1bnNp
Z25lZCBsZW5ndGgpCitzdGF0aWMgUmVmUHRyPENTU1ZhbHVlTGlzdD4gcGFyc2VTaW1wbGVUcmFu
c2Zvcm1MaXN0KGNvbnN0IENoYXJUeXBlKiBjaGFycywgdW5zaWduZWQgbGVuZ3RoKQogewogICAg
IGlmICghdHJhbnNmb3JtQ2FuTGlrZWx5VXNlRmFzdFBhdGgoY2hhcnMsIGxlbmd0aCkpCiAgICAg
ICAgIHJldHVybiBudWxscHRyOwogICAgIGNvbnN0IENoYXJUeXBlKiYgcG9zID0gY2hhcnM7CiAg
ICAgY29uc3QgQ2hhclR5cGUqIGVuZCA9IGNoYXJzICsgbGVuZ3RoOwotICAgIENTU1ZhbHVlTGlz
dCogdHJhbnNmb3JtTGlzdCA9IG51bGxwdHI7CisgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gdHJh
bnNmb3JtTGlzdDsKICAgICB3aGlsZSAocG9zIDwgZW5kKSB7CiAgICAgICAgIHdoaWxlIChwb3Mg
PCBlbmQgJiYgaXNDU1NTcGFjZSgqcG9zKSkKICAgICAgICAgICAgICsrcG9zOwogICAgICAgICBp
ZiAocG9zID49IGVuZCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBDU1NGdW5jdGlvblZh
bHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IHBhcnNlU2ltcGxlVHJhbnNmb3JtVmFsdWUocG9zLCBlbmQp
OworICAgICAgICBSZWZQdHI8Q1NTRnVuY3Rpb25WYWx1ZT4gdHJhbnNmb3JtVmFsdWUgPSBwYXJz
ZVNpbXBsZVRyYW5zZm9ybVZhbHVlKHBvcywgZW5kKTsKICAgICAgICAgaWYgKCF0cmFuc2Zvcm1W
YWx1ZSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAgICBpZiAoIXRyYW5zZm9y
bUxpc3QpCkBAIC0xMTcwLDcgKzEyMDQsNyBAQCBzdGF0aWMgQ1NTVmFsdWVMaXN0KiBwYXJzZVNp
bXBsZVRyYW5zZm9yCiAgICAgcmV0dXJuIHRyYW5zZm9ybUxpc3Q7CiB9CiAKLXN0YXRpYyBDU1NW
YWx1ZSogcGFyc2VTaW1wbGVUcmFuc2Zvcm0oQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlELCBjb25z
dCBTdHJpbmcmIHN0cmluZykKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU2ltcGxlVHJh
bnNmb3JtKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7
CiAgICAgQVNTRVJUKCFzdHJpbmcuaXNFbXB0eSgpKTsKIApAQCAtMTE4MSwxOCArMTIxNSwyMCBA
QCBzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNmb3JtKENTCiAgICAgcmV0dXJuIHBh
cnNlU2ltcGxlVHJhbnNmb3JtTGlzdChzdHJpbmcuY2hhcmFjdGVyczE2KCksIHN0cmluZy5sZW5n
dGgoKSk7CiB9CiAKLUNTU1ZhbHVlKiBDU1NQYXJzZXJGYXN0UGF0aHM6Om1heWJlUGFyc2VWYWx1
ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJz
ZXJNb2RlIHBhcnNlck1vZGUpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlckZhc3RQYXRoczo6
bWF5YmVQYXJzZVZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBz
dHJpbmcsIENTU1BhcnNlck1vZGUgcGFyc2VyTW9kZSkKIHsKLSAgICBpZiAoQ1NTVmFsdWUqIGxl
bmd0aCA9IHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUocHJvcGVydHlJRCwgc3RyaW5nLCBwYXJzZXJN
b2RlKSkKLSAgICAgICAgcmV0dXJuIGxlbmd0aDsKKyAgICBSZWZQdHI8Q1NTVmFsdWU+IHJlc3Vs
dCA9IHBhcnNlU2ltcGxlTGVuZ3RoVmFsdWUocHJvcGVydHlJRCwgc3RyaW5nLCBwYXJzZXJNb2Rl
KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIGlmIChpc0Nv
bG9yUHJvcGVydHlJRChwcm9wZXJ0eUlEKSkKICAgICAgICAgcmV0dXJuIHBhcnNlQ29sb3Ioc3Ry
aW5nLCBwYXJzZXJNb2RlKTsKLSAgICBpZiAoQ1NTVmFsdWUqIGtleXdvcmQgPSBwYXJzZUtleXdv
cmRWYWx1ZShwcm9wZXJ0eUlELCBzdHJpbmcsIHBhcnNlck1vZGUpKQotICAgICAgICByZXR1cm4g
a2V5d29yZDsKLSAgICBpZiAoQ1NTVmFsdWUqIHRyYW5zZm9ybSA9IHBhcnNlU2ltcGxlVHJhbnNm
b3JtKHByb3BlcnR5SUQsIHN0cmluZykpCi0gICAgICAgIHJldHVybiB0cmFuc2Zvcm07CisgICAg
cmVzdWx0ID0gcGFyc2VLZXl3b3JkVmFsdWUocHJvcGVydHlJRCwgc3RyaW5nLCBwYXJzZXJNb2Rl
KTsKKyAgICBpZiAocmVzdWx0KQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIHJlc3VsdCA9
IHBhcnNlU2ltcGxlVHJhbnNmb3JtKHByb3BlcnR5SUQsIHN0cmluZyk7CisgICAgaWYgKHJlc3Vs
dCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotICAg
ICAqLwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5oCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3Vy
Y2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZhc3RQYXRocy5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MywxMyArNDMsMTMgQEAgY2xhc3MgQ1NTUGFyc2VyRmFzdFBhdGhzIHsKIHB1YmxpYzoK
ICAgICAvLyBQYXJzZXMgc2ltcGxlIHZhbHVlcyBsaWtlICcxMHB4JyBvciAnZ3JlZW4nLCBidXQg
bWFrZXMgbm8gZ3VhcmFudGVlcwogICAgIC8vIGFib3V0IGhhbmRsaW5nIGFueSBwcm9wZXJ0eSBj
b21wbGV0ZWx5LgotICAgIHN0YXRpYyBDU1NWYWx1ZSogbWF5YmVQYXJzZVZhbHVlKENTU1Byb3Bl
cnR5SUQsIGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOworICAgIHN0YXRpYyBSZWZQdHI8
Q1NTVmFsdWU+IG1heWJlUGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBD
U1NQYXJzZXJNb2RlKTsKIAogICAgIC8vIFByb3BlcnRpZXMgaGFuZGxlZCBoZXJlIHNob3VsZG4n
dCBiZSBleHBsaWNpdGx5IGhhbmRsZWQgaW4gQ1NTUHJvcGVydHlQYXJzZXIKICAgICBzdGF0aWMg
Ym9vbCBpc0tleXdvcmRQcm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQpOwogICAgIHN0YXRpYyBib29s
IGlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1ZShDU1NQcm9wZXJ0eUlELCBDU1NWYWx1ZUlE
LCBDU1NQYXJzZXJNb2RlKTsKIAotICAgIHN0YXRpYyBDU1NWYWx1ZSogcGFyc2VDb2xvcihjb25z
dCBTdHJpbmcmLCBDU1NQYXJzZXJNb2RlKTsKKyAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBw
YXJzZUNvbG9yKGNvbnN0IFN0cmluZyYsIENTU1BhcnNlck1vZGUpOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJ
ZGlvbXMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFy
c2VySWRpb21zLmNwcAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3Bh
cnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBA
CiAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMuaCIKKyNp
bmNsdWRlICJDU1NWYWx1ZUtleXdvcmRzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
NDgsNCArNDksMTYgQEAgdm9pZCBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoU3RyaQog
ICAgICAgICBXZWJDb3JlOjpjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoY29uc3RfY2Fz
dDxVQ2hhcio+KHN0cmluZ1ZpZXcuY2hhcmFjdGVyczE2KCkpLCBzdHJpbmdWaWV3Lmxlbmd0aCgp
KTsKIH0KIAorYm9vbCBpc1ZhbHVlQWxsb3dlZEluTW9kZSh1bnNpZ25lZCBzaG9ydCBpZCwgQ1NT
UGFyc2VyTW9kZSBtb2RlKQoreworICAgIHN3aXRjaCAoaWQpIHsKKyAgICAgICAgY2FzZSBDU1NW
YWx1ZUludGVybmFsVmFyaWFibGVWYWx1ZToKKyAgICAgICAgICAgIHJldHVybiBpc1VBU2hlZXRC
ZWhhdmlvcihtb2RlKTsKKyAgICAgICAgY2FzZSBDU1NWYWx1ZVdlYmtpdEZvY3VzUmluZ0NvbG9y
OgorICAgICAgICAgICAgcmV0dXJuIGlzVUFTaGVldEJlaGF2aW9yKG1vZGUpIHx8IGlzUXVpcmtz
TW9kZUJlaGF2aW9yKG1vZGUpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgJKHJldmlzaW9uIDIwNTk5MCkK
KysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMyLDExICszMiwxMiBAQAogI2lmbmRlZiBDU1NQYXJzZXJJZGlvbXNfaAogI2Rl
ZmluZSBDU1NQYXJzZXJJZGlvbXNfaAogCisjaW5jbHVkZSAiQ1NTUGFyc2VyTW9kZS5oIgogI2lu
Y2x1ZGUgPHd0Zi9BU0NJSUNUeXBlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5o
PgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7Ci0KKyAgIAogLy8gU3BhY2UgY2hhcmFjdGVycyBhcyBk
ZWZpbmVkIGJ5IHRoZSBDU1Mgc3BlY2lmaWNhdGlvbi4KIC8vIGh0dHA6Ly93d3cudzMub3JnL1RS
L2NzczMtc3ludGF4LyN3aGl0ZXNwYWNlCiBpbmxpbmUgYm9vbCBpc0NTU1NwYWNlKFVDaGFyIGMp
CkBAIC02MCw2ICs2MSw4IEBAIGJvb2wgaXNOYW1lQ29kZVBvaW50KENoYXJhY3RlclR5cGUgYykK
IAogdm9pZCBjb252ZXJ0VG9BU0NJSUxvd2VyY2FzZUluUGxhY2UoU3RyaW5nVmlldyYpOwogCiti
b29sIGlzVmFsdWVBbGxvd2VkSW5Nb2RlKHVuc2lnbmVkIHNob3J0LCBDU1NQYXJzZXJNb2RlKTsK
KyAgICAKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>289001</attachid>
            <date>2016-09-15 14:41:51 -0700</date>
            <delta_ts>2016-09-15 14:55:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>54978</size>
            <attacher name="Dave Hyatt">hyatt</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwNTk5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDczIEBACisyMDE2LTA5LTE1ICBEYXZlIEh5
YXR0ICA8aHlhdHRAYXBwbGUuY29tPgorCisgICAgICAgIFtDU1MgUGFyc2VyXSBHZXQgQ1NTUGFy
c2VyRmFzdFBhdGhzLmNwcCBjb21waWxpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2MjAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGQgbmV3IFN0eWxlQ29sb3IuaC8u
Y3BwIGZpbGVzIHRvIHRoZSBwcm9qZWN0eQorCisgICAgICAgICogY3NzL0NTU0Z1bmN0aW9uVmFs
dWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRnVuY3Rpb25WYWx1ZTo6Q1NTRnVuY3Rpb25W
YWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpjdXN0b21DU1NUZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0Z1bmN0aW9uVmFsdWU6OmFwcGVuZCk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGdW5jdGlvblZhbHVlOjpidWlsZFBhcnNlclZhbHVlU3Vic3RpdHV0aW5n
VmFyaWFibGVzKToKKyAgICAgICAgKiBjc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oOgorICAgICAgICBU
d2VhayBDU1NGdW5jdGlvblZhbHVlIHNvIHRoYXQgdGhlIG5hbWUgY2FuIGJlIHJlcHJlc2VudGVk
IGFzIGEga2V5d29yZCBJRCBpbnN0ZWFkIG9mIGEgU3RyaW5nLiBFdmVudHVhbGx5IHdlIGFsc28K
KyAgICAgICAgd2FudCB0byBtYWtlIENTU0Z1bmN0aW9uVmFsdWUgc3ViY2xhc3MgQ1NTVmFsdWVM
aXN0IHJhdGhlciB0aGFuIHJlZmVyZW5pbmcgYSBzZXBhcmF0ZSBDU1NWYWx1ZUxpc3QgYXMgYSBt
ZW1iZXIuIEZvciBub3cKKyAgICAgICAgSSBsZWZ0IHRoYXQgYWxvbmUgdGhvdWdoIGluIG9yZGVy
IHRvIG5vdCBjaGFuZ2UgdG9vIG11Y2ggaW4gdGhlIG9sZCBwYXJzZXIuCisKKyAgICAgICAgKiBj
c3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVydHk6OmlzRGVz
Y3JpcHRvck9ubHkpOgorICAgICAgICBXaGV0aGVyIG9yIG5vdCBhIHByb3BlcnR5IGlzIG9ubHkg
YSBkZXNjcmlwdG9yLCBlLmcuLCB1c2VkIGluIHZpZXdwb3J0IGFuZCBmb250IGZhY2Ugc3R1ZmYu
CisKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuaDoKKyAgICAgICAgKiBjc3MvQ1NTVmFsdWVL
ZXl3b3Jkcy5pbjoKKyAgICAgICAgQWRkZWQgbmV3IGtleXdvcmRzIGZvciBmdW5jdGlvbnMgdGhh
dCBjYW4gYmUgdXNlZCBhcyB2YWx1ZXMuIFRoZSBuZXcgcGFyc2VyIHVzZXMga2V5d29yZHMgdG8g
cmVwcmVzZW50IGZ1bmN0aW9uIG5hbWVzLgorCisgICAgICAgICogY3NzL1N0eWxlQ29sb3IuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ29sb3I6OmNvbG9yRnJvbUtleXdvcmQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVDb2xvcjo6aXNDb2xvcktleXdvcmQpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVDb2xvcjo6aXNTeXN0ZW1Db2xvcik6CisgICAgICAgICogY3NzL1N0
eWxlQ29sb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjpTdHlsZUNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlQ29sb3I6OmN1cnJlbnRDb2xvcik6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZUNvbG9yOjppc0N1cnJlbnRDb2xvcik6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZUNvbG9yOjpnZXRDb2xvcik6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZUNvbG9y
OjpyZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2Vi
Q29yZTo6b3BlcmF0b3IhPSk6CisgICAgICAgIE5ldyBjb2xvciBoZWxwZXIgdGhhdCBjb250YWlu
cyBjb2RlIGZvciBjaGVja2luZyBhbmQgbG9va2luZyB1cCBjb2xvcnMuIFRoaXMgY29kZSBpcyBz
aW1pbGFyIHRvIHNvbWUgY29kZSB3ZSBhbHJlYWR5CisgICAgICAgIGhhZCBpbiB0aGUgb2xkIENT
U1BhcnNlci5jcHAgZmlsZSwgYnV0IHRoaXMgd2F5IGl0IGNhbiBiZSB1c2VkIG91dHNpZGUgdGhl
IHBhcnNlciBhbmQvb3IgaW4gZGlmZmVyZW50IGZpbGVzLgorCisgICAgICAgICogY3NzL3BhcnNl
ci9DU1NQYXJzZXJGYXN0UGF0aHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VTaW1wbGVM
ZW5ndGhWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlOjppc0NvbG9yUHJvcGVydHlJRCk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZUNvbG9ySW50T3JQZXJjZW50YWdlKToKKyAgICAgICAgKFdlYkNv
cmU6OmZhc3RQYXJzZUNvbG9ySW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2Vy
RmFzdFBhdGhzOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1BhcnNlckZhc3RQ
YXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzVW5pdmVyc2FsS2V5d29yZCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUtleXdvcmRWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3VtZW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyk6CisgICAg
ICAgIChXZWJDb3JlOjpwYXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlKToKKyAgICAgICAgKFdlYkNv
cmU6OnRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlU2ltcGxlVHJhbnNmb3JtTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZVNpbXBsZVRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXJGYXN0UGF0aHM6Om1heWJlUGFy
c2VWYWx1ZSk6CisgICAgICAgICogY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0UGF0aHMuaDoKKyAg
ICAgICAgR2V0IGV2ZXJ5dGhpbmcgY29tcGlsaW5nIGluIHRoaXMgZmlsZS4gS2V5IGNoYW5nZXMg
aW5jbHVkZWQgcmV2ZXJ0aW5nIHRvIG91ciBvbGQgdW5pdCBuYW1lcywgbWFraW5nIENTU0Z1bmN0
aW9uVmFsdWUgY29tcGF0aWJsZSwKKyAgICAgICAgYWRkaW5nIHN1cHBvcnQgZm9yIFN0eWxlQ29s
b3IsIGFkZGluZyBzdXBwb3J0IGZvciBtb2RlIGNoZWNraW5nIG9mIGtleXdvcmRzLCBhbmQgZml4
aW5nIHVwIHRoZSBtZW1vcnkgbWFuYWdlbWVudCBtb2RlbCBzbyB0aGF0CisgICAgICAgIFJlZlB0
cnMgYXJlIHVzZWQgb24gcmV0dXJucyBmcm9tIHBhcnNpbmcgZnVuY3Rpb25zLgorCisgICAgICAg
ICogY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNW
YWx1ZUFsbG93ZWRJbk1vZGUpOgorICAgICAgICAqIGNzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21z
Lmg6CisgICAgICAgIE5ldyBoZWxwZXIgZnVuY3Rpb24gZm9yIHJlc3RyaWN0aW5nIGtleXdvcmRz
IHRvIGNlcnRhaW4gbW9kZXMgb25seS4gVGhlIC13ZWJraXQtdGV4dCBjb2xvciBxdWlyayBoYXMg
YmVlbiBtb3ZlZCB0byB0aGlzIGZ1bmN0aW9uLgorCiAyMDE2LTA5LTE1ICBBbmRlcnMgQ2FybHNz
b24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGJ1aWxkLgpJbmRleDogU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMzMyLDYgKzEzMzIsNyBAQCBzZXQoV2ViQ29y
ZV9TT1VSQ0VTCiAgICAgY3NzL1NWR0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKICAg
ICBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcAogICAgIGNzcy9TZWxlY3RvckZpbHRlci5jcHAKKyAg
ICBjc3MvU3R5bGVDb2xvci5jcHAKICAgICBjc3MvU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5j
cHAKICAgICBjc3MvU3R5bGVNZWRpYS5jcHAKICAgICBjc3MvU3R5bGVQcm9wZXJ0aWVzLmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMzM5LDYgKzMzMzksOCBAQAog
CQk5M0Y5QjdBMDBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOUI3OUUwQkE2MDMyNjAw
ODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCAqLzsgfTsKIAkJOTNGOUI3QTEwQkE2MDMyNjAw
ODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rp
b24uaCAqLzsgfTsKIAkJOTNGREFGQ0EwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFj
dGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNG
REFGQzkwQjExMzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTk0MTgyNzhBMUQ4QjI0NDAw
MDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDk0MTgyNzg4MUQ4QjI0MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmNw
cCAqLzsgfTsKKwkJOTQxODI3OEIxRDhCMjQ0MDAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0MTgyNzg5MUQ4QjI0
MjIwMDQ5Mjc2NCAvKiBTdHlsZUNvbG9yLmggKi87IH07CiAJCTk0NDRDQkQzMUQ4NjBDOEIwMDcz
QTA3NCAvKiBTaXplc0NhbGNQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTQ0NENCRDAxRDg2MEM3NDAwNzNBMDc0IC8qIFNpemVzQ2FsY1Bh
cnNlci5jcHAgKi87IH07CiAJCTk0NDRDQkQ0MUQ4NjBDOEIwMDczQTA3NCAvKiBTaXplc0NhbGNQ
YXJzZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0
NDRDQkNGMUQ4NjBDNzQwMDczQTA3NCAvKiBTaXplc0NhbGNQYXJzZXIuaCAqLzsgfTsKIAkJOTQ0
NENCRDUxRDg2MEM4QjAwNzNBMDc0IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk0NDRDQkQyMUQ4NjBDNzQw
MDczQTA3NCAvKiBTaXplc0F0dHJpYnV0ZVBhcnNlci5jcHAgKi87IH07CkBAIC05Mzc3LDggKzkz
NzksOCBAQAogCQk1QzUzODFBRjFEODc5M0UwMDBFMkVCRTYgLyogVVJMU2VhcmNoUGFyYW1zLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBVUkxTZWFyY2hQYXJhbXMuaWRsOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzUzODFCMDFEODdENDU3MDBFMkVCRTYgLyogVVJMU2VhcmNo
UGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFVSTFNlYXJj
aFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNTM4MUIxMUQ4N0Q0
NTcwMEUyRUJFNiAvKiBVUkxTZWFyY2hQYXJhbXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVVJMU2VhcmNoUGFyYW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDNTM4MUIzMUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VSTFNlYXJjaFBhcmFtcy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBKU1VSTFNlYXJjaFBhcmFtcy5jcHA7IHBh
dGggPSBKU1VSTFNlYXJjaFBhcmFtcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CTVDNTM4MUI0MUQ4N0UwODEwMEUyRUJFNiAvKiBKU1VSTFNlYXJjaFBhcmFtcy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBKU1VSTFNlYXJjaFBhcmFtcy5oOyBwYXRoID0gSlNV
UkxTZWFyY2hQYXJhbXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM1MzgxQjMx
RDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNoUGFyYW1zLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFyYW1zLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNUM1MzgxQjQxRDg3RTA4MTAwRTJFQkU2IC8qIEpTVVJMU2VhcmNo
UGFyYW1zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTVVJMU2VhcmNoUGFy
YW1zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEwMUQzODA1MDkwMDBC
NTRGQSAvKiBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBUaHJlYWRhYmxlV2ViU29ja2V0Q2hhbm5lbC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNjg4QUEyMUQzODEyNkYwMDBCNTRGQSAvKiBTb2Nr
ZXRQcm92aWRlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTb2Nr
ZXRQcm92aWRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkU2NTNGMUQ1
Q0VEQzkwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTEwNTA3LDYgKzEwNTA5LDggQEAKIAkJOTNGOUI3OUUwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RB
VEFTZWN0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTQ0RB
VEFTZWN0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGOUI3OUYwQkE2
MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTQ0RBVEFTZWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzRkRBRkM5MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEVkaXRvckluc2VydEFjdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVD
b2xvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTdHlsZUNvbG9y
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTQxODI3ODkxRDhCMjQyMjAwNDky
NzY0IC8qIFN0eWxlQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3R5
bGVDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDQ0Q0JDRjFEODYwQzc0
MDA3M0EwNzQgLyogU2l6ZXNDYWxjUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IFNpemVzQ2FsY1BhcnNlci5oOyBwYXRoID0gcGFyc2VyL1NpemVzQ2FsY1BhcnNlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDQ0Q0JEMDFEODYwQzc0MDA3M0EwNzQg
LyogU2l6ZXNDYWxjUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IFNpemVzQ2FsY1BhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvU2l6ZXNDYWxjUGFyc2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ0NENCRDExRDg2MEM3NDAwNzNBMDc0
IC8qIFNpemVzQXR0cmlidXRlUGFyc2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IFNpemVzQXR0cmlidXRlUGFyc2VyLmg7IHBhdGggPSBwYXJzZXIvU2l6ZXNBdHRyaWJ1dGVQ
YXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIyNTQ4LDYgKzIyNTUyLDgg
QEAKIAkJCQk4Mzg2QTk2QzE5RjYxQjJFMDBFMUVDNEEgLyogU3R5bGVCdWlsZGVyLmggKi8sCiAJ
CQkJODNCOTY4NzkxOUY4QUI4MzAwNEVGN0FGIC8qIFN0eWxlQnVpbGRlckNvbnZlcnRlci5oICov
LAogCQkJCTgzNUQzNjM2MTlGRjYxOTMwMDRDOTNBQiAvKiBTdHlsZUJ1aWxkZXJDdXN0b20uaCAq
LywKKwkJCQk5NDE4Mjc4ODFEOEIyNDIyMDA0OTI3NjQgLyogU3R5bGVDb2xvci5jcHAgKi8sCisJ
CQkJOTQxODI3ODkxRDhCMjQyMjAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCAqLywKIAkJCQlFNDdB
OTdDRTE2MzA1OUZDMDA1RENEOTkgLyogU3R5bGVJbnZhbGlkYXRpb25BbmFseXNpcy5jcHAgKi8s
CiAJCQkJRTQ3QTk3Q0YxNjMwNTlGQzAwNURDRDk5IC8qIFN0eWxlSW52YWxpZGF0aW9uQW5hbHlz
aXMuaCAqLywKIAkJCQkwRkY1MDI2RTEwMkJBOTY2MDA2NkYzOUEgLyogU3R5bGVNZWRpYS5jcHAg
Ki8sCkBAIC0yNTY1Nyw2ICsyNTY2Myw3IEBACiAJCQkJQ0VFRkNEN0ExOURCMzFGNzAwMzg3NkQ3
IC8qIE1lZGlhUmVzb3VyY2VMb2FkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFCRjlEQjNDMUQz
OTczQUQwMDI2QUVCNyAvKiBNZWRpYVNhbXBsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUIxMjRE
OEQxRDM4MEI3MDAwRUNERkIwIC8qIE1lZGlhU2FtcGxlQVZGT2JqQy5oIGluIEhlYWRlcnMgKi8s
CisJCQkJOTQxODI3OEIxRDhCMjQ0MDAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUNEQkVBRUFEMTlEOTJCNkMwMEJFQkE4OCAvKiBNZWRpYVNlbGVjdGlvbkdyb3Vw
QVZGT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzkwMjdGNDIxQjFEMEFEMjAwQkZCRkVGIC8q
IE1lZGlhU2Vzc2lvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzlGODdDRkUxQjI4RjQwRTAwOTc5
QjgzIC8qIE1lZGlhU2Vzc2lvbkV2ZW50cy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNzk3Myw2ICsy
Nzk4MCw3IEBACiAJCQkJNUM5QTdBNzYxQUEwRjZFRDAwOTU4QUNGIC8qIERGQUJ5dGVjb2RlSW50
ZXJwcmV0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZBODA3ODQxQjE4Rjk3NzAwRTIxOUJF
IC8qIERGQUNvbWJpbmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTI2QTUxN0ZEMUFCOTIyMzgw
MDYzMzVERiAvKiBERkFNaW5pbWl6ZXIuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJOTQxODI3OEEx
RDhCMjQ0MDAwNDkyNzY0IC8qIFN0eWxlQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMjZE
NEU4NDYxQjQyNTM5RDAwRTAzM0EyIC8qIERGQU5vZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
Q0QzN0IzOTgxNUMxQjk3MTAwNkRDODk4IC8qIERpYWdub3N0aWNMb2dnaW5nS2V5cy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlDRUNBREZDNjE1Mzc3OEZGMDBFMzcwNjggLyogRGljdGF0aW9uQWx0
ZXJuYXRpdmUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
RnVuY3Rpb25WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1
bmN0aW9uVmFsdWUuY3BwCShyZXZpc2lvbiAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTRnVuY3Rpb25WYWx1ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM0LDIyICszNCwzMiBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIENTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUo
Q1NTUGFyc2VyRnVuY3Rpb24qIGZ1bmN0aW9uKQogICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25DbGFz
cykKLSAgICAsIG1fbmFtZShmdW5jdGlvbi0+bmFtZSkKKyAgICAsIG1fbmFtZURlcHJlY2F0ZWQo
ZnVuY3Rpb24tPm5hbWUpCiAgICAgLCBtX2FyZ3MoZnVuY3Rpb24tPmFyZ3MgPyBSZWZQdHI8Q1NT
VmFsdWVMaXN0PihDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUZyb21QYXJzZXJWYWx1ZUxpc3QoKmZ1bmN0
aW9uLT5hcmdzKSkgOiBudWxscHRyKQogewogfQogCiBDU1NGdW5jdGlvblZhbHVlOjpDU1NGdW5j
dGlvblZhbHVlKGNvbnN0IFN0cmluZyYgbmFtZSwgUmVmPENTU1ZhbHVlTGlzdD4mJiBhcmdzKQog
ICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25DbGFzcykKLSAgICAsIG1fbmFtZShuYW1lKQorICAgICwg
bV9uYW1lRGVwcmVjYXRlZChuYW1lKQogICAgICwgbV9hcmdzKFdURk1vdmUoYXJncykpCiB7CiB9
CiAKK0NTU0Z1bmN0aW9uVmFsdWU6OkNTU0Z1bmN0aW9uVmFsdWUoQ1NTVmFsdWVJRCBrZXl3b3Jk
KQorICAgIDogQ1NTVmFsdWUoRnVuY3Rpb25DbGFzcykKKyAgICAsIG1fbmFtZShrZXl3b3JkKQor
eworfQorICAgIAogU3RyaW5nIENTU0Z1bmN0aW9uVmFsdWU6OmN1c3RvbUNTU1RleHQoKSBjb25z
dAogewogICAgIFN0cmluZ0J1aWxkZXIgcmVzdWx0OwotICAgIHJlc3VsdC5hcHBlbmQobV9uYW1l
KTsgLy8gSW5jbHVkZXMgdGhlICcoJworICAgIGlmIChtX25hbWUgIT0gQ1NTVmFsdWVJbnZhbGlk
KSB7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoZ2V0VmFsdWVOYW1lKG1fbmFtZSkpOworICAgICAg
ICByZXN1bHQuYXBwZW5kKCcoJyk7CisgICAgfSBlbHNlCisgICAgICAgIHJlc3VsdC5hcHBlbmQo
bV9uYW1lRGVwcmVjYXRlZCk7IC8vIEluY2x1ZGVzIHRoZSAnKCcKICAgICBpZiAobV9hcmdzKQog
ICAgICAgICByZXN1bHQuYXBwZW5kKG1fYXJncy0+Y3NzVGV4dCgpKTsKICAgICByZXN1bHQuYXBw
ZW5kKCcpJyk7CkBAIC02MSwxMiArNzEsMTkgQEAgYm9vbCBDU1NGdW5jdGlvblZhbHVlOjplcXVh
bHMoY29uc3QgQ1NTRgogICAgIHJldHVybiBtX25hbWUgPT0gb3RoZXIubV9uYW1lICYmIGNvbXBh
cmVDU1NWYWx1ZVB0cihtX2FyZ3MsIG90aGVyLm1fYXJncyk7CiB9CiAKK3ZvaWQgQ1NTRnVuY3Rp
b25WYWx1ZTo6YXBwZW5kKFJlZjxDU1NWYWx1ZT4mJiB2YWx1ZSkKK3sKKyAgICBpZiAoIW1fYXJn
cykKKyAgICAgICAgbV9hcmdzID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRlZCgp
OworICAgIG1fYXJncy0+YXBwZW5kKFdURk1vdmUodmFsdWUpKTsKK30KKyAgICAKIGJvb2wgQ1NT
RnVuY3Rpb25WYWx1ZTo6YnVpbGRQYXJzZXJWYWx1ZVN1YnN0aXR1dGluZ1ZhcmlhYmxlcyhDU1NQ
YXJzZXJWYWx1ZSogcmVzdWx0LCBjb25zdCBDdXN0b21Qcm9wZXJ0eVZhbHVlTWFwJiBjdXN0b21Q
cm9wZXJ0aWVzKSBjb25zdAogewogICAgIHJlc3VsdC0+aWQgPSBDU1NWYWx1ZUludmFsaWQ7CiAg
ICAgcmVzdWx0LT51bml0ID0gQ1NTUGFyc2VyVmFsdWU6OkZ1bmN0aW9uOwogICAgIHJlc3VsdC0+
ZnVuY3Rpb24gPSBuZXcgQ1NTUGFyc2VyRnVuY3Rpb247Ci0gICAgcmVzdWx0LT5mdW5jdGlvbi0+
bmFtZS5pbml0KG1fbmFtZSk7CisgICAgcmVzdWx0LT5mdW5jdGlvbi0+bmFtZS5pbml0KG1fbmFt
ZURlcHJlY2F0ZWQpOwogICAgIGJvb2wgc3VjY2VzcyA9IHRydWU7CiAgICAgaWYgKG1fYXJncykg
ewogICAgICAgICBDU1NQYXJzZXJWYWx1ZUxpc3QqIGFyZ0xpc3QgPSBuZXcgQ1NTUGFyc2VyVmFs
dWVMaXN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Z1bmN0aW9uVmFsdWUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCShyZXZpc2lv
biAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRnVuY3Rpb25WYWx1ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNiw2ICsyNiw3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkNT
U1ZhbHVlLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTMzLDYgKzM0LDcgQEAgY2xhc3MgQ1NTVmFsdWVMaXN0Owogc3RydWN0IENT
U1BhcnNlckZ1bmN0aW9uOwogc3RydWN0IENTU1BhcnNlclZhbHVlOwogCisvLyBGSVhNRS1ORVdQ
QVJTRVI6IFRoaXMgY2FuIGp1c3QgKmJlKiBhIENTU1ZhbHVlTGlzdCBzdWJjbGFzcy4KIGNsYXNz
IENTU0Z1bmN0aW9uVmFsdWUgZmluYWwgOiBwdWJsaWMgQ1NTVmFsdWUgewogcHVibGljOgogICAg
IHN0YXRpYyBSZWY8Q1NTRnVuY3Rpb25WYWx1ZT4gY3JlYXRlKENTU1BhcnNlckZ1bmN0aW9uKiBm
dW5jdGlvbikKQEAgLTQ1LDYgKzQ3LDExIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQ1NTRnVuY3Rpb25WYWx1ZShuYW1lLCBXVEZNb3ZlKGFyZ3MpKSk7CiAgICAgfQog
CisgICAgc3RhdGljIFJlZjxDU1NGdW5jdGlvblZhbHVlPiBjcmVhdGUoQ1NTVmFsdWVJRCBrZXl3
b3JkKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRnVuY3Rpb25WYWx1
ZShrZXl3b3JkKSk7CisgICAgfQorICAgIAogICAgIFN0cmluZyBjdXN0b21DU1NUZXh0KCkgY29u
c3Q7CiAKICAgICBib29sIGVxdWFscyhjb25zdCBDU1NGdW5jdGlvblZhbHVlJikgY29uc3Q7CkBA
IC01MiwxMiArNTksMTggQEAgcHVibGljOgogICAgIENTU1ZhbHVlTGlzdCogYXJndW1lbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9hcmdzLmdldCgpOyB9CiAKICAgICBib29sIGJ1aWxkUGFyc2VyVmFs
dWVTdWJzdGl0dXRpbmdWYXJpYWJsZXMoQ1NTUGFyc2VyVmFsdWUqLCBjb25zdCBDdXN0b21Qcm9w
ZXJ0eVZhbHVlTWFwJiBjdXN0b21Qcm9wZXJ0aWVzKSBjb25zdDsKLSAgICAKKworICAgIHZvaWQg
YXBwZW5kKFJlZjxDU1NWYWx1ZT4mJik7CisKIHByaXZhdGU6CiAgICAgZXhwbGljaXQgQ1NTRnVu
Y3Rpb25WYWx1ZShDU1NQYXJzZXJGdW5jdGlvbiopOwogICAgIENTU0Z1bmN0aW9uVmFsdWUoY29u
c3QgU3RyaW5nJiwgUmVmPENTU1ZhbHVlTGlzdD4mJik7CisgICAgQ1NTRnVuY3Rpb25WYWx1ZShD
U1NWYWx1ZUlEKTsKKworICAgIENTU1ZhbHVlSUQgbV9uYW1lIHsgQ1NTVmFsdWVJbnZhbGlkIH07
CiAKLSAgICBTdHJpbmcgbV9uYW1lOworICAgIC8vIEZJWE1FLU5FV1BBUlNFUjogUmVtb3ZlIHRo
ZXNlLgorICAgIFN0cmluZyBtX25hbWVEZXByZWNhdGVkOwogICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IG1fYXJnczsKIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkocmV2
aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTU0LDYgKzE1NCwyMyBAQCBDU1NQcm9wZXJ0eUlEIENTU1Byb3BlcnR5
OjpyZXNvbHZlRGlyZWN0CiAgICAgfQogfQogCitib29sIENTU1Byb3BlcnR5Ojppc0Rlc2NyaXB0
b3JPbmx5KENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCkKK3sKKyAgICBzd2l0Y2ggKHByb3BlcnR5
SUQpIHsKKyNpZiBFTkFCTEUoQ1NTX0RFVklDRV9BREFQVEFUSU9OKQorICAgIGNhc2UgQ1NTUHJv
cGVydHlNaW5ab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhab29tOgorICAgIGNhc2UgQ1NT
UHJvcGVydHlPcmllbnRhdGlvbjoKKyAgICBjYXNlIENTU1Byb3BlcnR5VXNlclpvb206CisjZW5k
aWYKKyAgICBjYXNlIENTU1Byb3BlcnR5U3JjOgorICAgIGNhc2UgQ1NTUHJvcGVydHlVbmljb2Rl
UmFuZ2U6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICB9Cit9CisKIGJvb2wgQ1NTUHJvcGVydHk6OmlzRGlyZWN0aW9uQXdhcmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7CiAgICAgc3dpdGNoIChwcm9wZXJ0
eUlEKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuaAkocmV2aXNpb24gMjA1OTkwKQor
KysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5
LDYgKzc5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBDU1NQcm9wZXJ0eUlEIHJlc29sdmVEaXJl
Y3Rpb25Bd2FyZVByb3BlcnR5KENTU1Byb3BlcnR5SUQsIFRleHREaXJlY3Rpb24sIFdyaXRpbmdN
b2RlKTsKICAgICBzdGF0aWMgYm9vbCBpc0luaGVyaXRlZFByb3BlcnR5KENTU1Byb3BlcnR5SUQp
OwogICAgIHN0YXRpYyBib29sIGlzRGlyZWN0aW9uQXdhcmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUlE
KTsKKyAgICBzdGF0aWMgYm9vbCBpc0Rlc2NyaXB0b3JPbmx5KENTU1Byb3BlcnR5SUQpOwogCiAg
ICAgY29uc3QgU3R5bGVQcm9wZXJ0eU1ldGFkYXRhJiBtZXRhZGF0YSgpIGNvbnN0IHsgcmV0dXJu
IG1fbWV0YWRhdGE7IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29y
ZHMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1ZhbHVlS2V5d29yZHMu
aW4JKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NWYWx1ZUtleXdv
cmRzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQ5LDYgKzExNDksODggQEAgaXNvbGF0ZQogLy8g
bm9uZQogc2NhbGUtZG93bgogCisvLyBiYWNrZ3JvdW5kLWltYWdlLCBldGMuCitsaW5lYXItZ3Jh
ZGllbnQKK3JhZGlhbC1ncmFkaWVudAorcmVwZWF0aW5nLWxpbmVhci1ncmFkaWVudAorcmVwZWF0
aW5nLXJhZGlhbC1ncmFkaWVudAorcGFpbnQKKy13ZWJraXQtY3Jvc3MtZmFkZQorLXdlYmtpdC1n
cmFkaWVudAorLXdlYmtpdC1saW5lYXItZ3JhZGllbnQKKy13ZWJraXQtcmFkaWFsLWdyYWRpZW50
Cistd2Via2l0LXJlcGVhdGluZy1saW5lYXItZ3JhZGllbnQKKy13ZWJraXQtcmVwZWF0aW5nLXJh
ZGlhbC1ncmFkaWVudAorLXdlYmtpdC1pbWFnZS1zZXQKKworLy8gZGVwcmVjYXRlZCBncmFkaWVu
dHMKK2Zyb20KK3RvCitjb2xvci1zdG9wCityYWRpYWwKKworLy8gY29udGVudAorYXR0cgorY291
bnRlcgorY291bnRlcnMKKworLy8gY2xpcAorcmVjdAorCisvLyBzaGFwZXMKK3BvbHlnb24KKwor
Ly8gQGZvbnQtZmFjZSBzcmMKK2Zvcm1hdAorCisvLyAoLXdlYmtpdC0pZmlsdGVyCisvLyBpbnZl
cnQKK2dyYXlzY2FsZQorc2VwaWEKK3NhdHVyYXRlCitodWUtcm90YXRlCitvcGFjaXR5Citicmln
aHRuZXNzCitjb250cmFzdAorYmx1cgorZHJvcC1zaGFkb3cKK3VybAorCisvLyBjb2xvcnMKK3Jn
YgorcmdiYQoraHNsCitoc2xhCisKKy8vIHRyYW5zZm9ybQorbWF0cml4CittYXRyaXgzZAorcGVy
c3BlY3RpdmUKK3JvdGF0ZQorcm90YXRlWAorcm90YXRlWQorcm90YXRlWgorcm90YXRlM2QKK3Nj
YWxlCitzY2FsZVgKK3NjYWxlWQorc2NhbGVaCitzY2FsZTNkCitza2V3Citza2V3WAorc2tld1kK
K3RyYW5zbGF0ZQordHJhbnNsYXRlWAordHJhbnNsYXRlWQordHJhbnNsYXRlWgordHJhbnNsYXRl
M2QKKworLy8gbW90aW9uIHBhdGgKK3BhdGgKKworY2FsYworLXdlYmtpdC1jYWxjCisKICNpZiBk
ZWZpbmVkKEVOQUJMRV9DU1NfSU1BR0VfUkVTT0xVVElPTikgJiYgRU5BQkxFX0NTU19JTUFHRV9S
RVNPTFVUSU9OCiBmcm9tLWltYWdlCiBzbmFwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5
bGVDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlQ29sb3Iu
Y3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZUNvbG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE1
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJTdHlsZUNvbG9yLmgiCisKKyNpbmNsdWRlICJIYXNoVG9vbHMuaCIKKyNpbmNsdWRlICJSZW5k
ZXJUaGVtZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0NvbG9yIFN0eWxlQ29sb3I6OmNv
bG9yRnJvbUtleXdvcmQoQ1NTVmFsdWVJRCBrZXl3b3JkKQoreworICAgIGlmIChjb25zdCBjaGFy
KiB2YWx1ZU5hbWUgPSBnZXRWYWx1ZU5hbWUoa2V5d29yZCkpIHsKKyAgICAgICAgaWYgKGNvbnN0
IE5hbWVkQ29sb3IqIG5hbWVkQ29sb3IgPSBmaW5kQ29sb3IodmFsdWVOYW1lLCBzdHJsZW4odmFs
dWVOYW1lKSkpCisgICAgICAgICAgICByZXR1cm4gQ29sb3IobmFtZWRDb2xvci0+QVJHQlZhbHVl
KTsKKyAgICB9CisgICAgcmV0dXJuIFJlbmRlclRoZW1lOjpkZWZhdWx0VGhlbWUoKS0+c3lzdGVt
Q29sb3Ioa2V5d29yZCk7Cit9CisKK2Jvb2wgU3R5bGVDb2xvcjo6aXNDb2xvcktleXdvcmQoQ1NT
VmFsdWVJRCBpZCkKK3sKKyAgICByZXR1cm4gKGlkID49IENTU1ZhbHVlQWxwaGEgJiYgaWQgPD0g
Q1NTVmFsdWVXZWJraXRUZXh0KSB8fCBpZCA9PSBDU1NWYWx1ZU1lbnU7Cit9CisKK2Jvb2wgU3R5
bGVDb2xvcjo6aXNTeXN0ZW1Db2xvcihDU1NWYWx1ZUlEIGlkKQoreworICAgIHJldHVybiAoaWQg
Pj0gQ1NTVmFsdWVBY3RpdmVib3JkZXIgJiYgaWQgPD0gQ1NTVmFsdWVBcHBsZVN5c3RlbVllbGxv
dykgfHwgaWQgPT0gQ1NTVmFsdWVNZW51IHx8IGlkID09IENTU1ZhbHVlV2Via2l0Rm9jdXNSaW5n
Q29sb3I7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L2Nzcy9TdHlsZUNvbG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
Q29sb3IuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVDb2xvci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTMgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAq
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAq
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJD
U1NWYWx1ZUtleXdvcmRzLmgiCisjaW5jbHVkZSAiQ29sb3IuaCIKKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCitjbGFzcyBTdHlsZUNvbG9yIHsKK3B1YmxpYzoKKyAgICBTdHlsZUNvbG9yKCkKKyAg
ICAgICAgOiBtX2N1cnJlbnRDb2xvcih0cnVlKSB7IH0KKyAgICBTdHlsZUNvbG9yKENvbG9yIGNv
bG9yKQorICAgICAgICA6IG1fY29sb3IoY29sb3IpCisgICAgICAgICwgbV9jdXJyZW50Q29sb3Io
ZmFsc2UpIHsgfQorICAgIHN0YXRpYyBTdHlsZUNvbG9yIGN1cnJlbnRDb2xvcigpIHsgcmV0dXJu
IFN0eWxlQ29sb3IoKTsgfQorCisgICAgYm9vbCBpc0N1cnJlbnRDb2xvcigpIGNvbnN0IHsgcmV0
dXJuIG1fY3VycmVudENvbG9yOyB9CisgICAgQ29sb3IgZ2V0Q29sb3IoKSBjb25zdCB7IEFTU0VS
VCghaXNDdXJyZW50Q29sb3IoKSk7IHJldHVybiBtX2NvbG9yOyB9CisKKyAgICBDb2xvciByZXNv
bHZlKENvbG9yIGN1cnJlbnRDb2xvcikgY29uc3QgeyByZXR1cm4gbV9jdXJyZW50Q29sb3IgPyBj
dXJyZW50Q29sb3IgOiBtX2NvbG9yOyB9CisKKyAgICBzdGF0aWMgQ29sb3IgY29sb3JGcm9tS2V5
d29yZChDU1NWYWx1ZUlEKTsKKyAgICBzdGF0aWMgYm9vbCBpc0NvbG9yS2V5d29yZChDU1NWYWx1
ZUlEKTsKKyAgICBzdGF0aWMgYm9vbCBpc1N5c3RlbUNvbG9yKENTU1ZhbHVlSUQpOworCitwcml2
YXRlOgorICAgIENvbG9yIG1fY29sb3I7CisgICAgYm9vbCBtX2N1cnJlbnRDb2xvcjsKK307CisK
K2lubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVDb2xvciYgYSwgY29uc3QgU3R5bGVD
b2xvciYgYikKK3sKKyAgICBpZiAoYS5pc0N1cnJlbnRDb2xvcigpIHx8IGIuaXNDdXJyZW50Q29s
b3IoKSkKKyAgICAgICAgcmV0dXJuIGEuaXNDdXJyZW50Q29sb3IoKSAmJiBiLmlzQ3VycmVudENv
bG9yKCk7CisgICAgcmV0dXJuIGEuZ2V0Q29sb3IoKSA9PSBiLmdldENvbG9yKCk7Cit9CisKK2lu
bGluZSBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVDb2xvciYgYSwgY29uc3QgU3R5bGVDb2xv
ciYgYikKK3sKKyAgICByZXR1cm4gIShhID09IGIpOworfQorCisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhz
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlckZh
c3RQYXRocy5jcHAJKHJldmlzaW9uIDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJz
ZXIvQ1NTUGFyc2VyRmFzdFBhdGhzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsMjIgKzMwLDIx
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiQ1NTUGFyc2VyRmFzdFBhdGhzLmgi
CiAKLS8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIkNTU0NvbG9yVmFsdWUuaCIKICNpbmNs
dWRlICJDU1NGdW5jdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiQ1NTSW5oZXJpdGVkVmFsdWUuaCIK
ICNpbmNsdWRlICJDU1NJbml0aWFsVmFsdWUuaCIKICNpbmNsdWRlICJDU1NQYXJzZXJJZGlvbXMu
aCIKICNpbmNsdWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogI2luY2x1ZGUgIkNTU1Byb3BlcnR5
UGFyc2VyLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVMaXN0LmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVQ
b29sLmgiCiAjaW5jbHVkZSAiSFRNTFBhcnNlcklkaW9tcy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVF
bmFibGVkRmVhdHVyZXMuaCIKLS8vIEZJWE1FLU5FV1BBUlNFUjogI2luY2x1ZGUgIlN0eWxlQ29s
b3IuaCIKKyNpbmNsdWRlICJTdHlsZUNvbG9yLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNo
b3J0aGFuZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLS8qIEZJWE1FLU5FV1BBUlNFUjog
VHVybiBvZmYgZm9yIG5vdy4KLSAKIHN0YXRpYyBpbmxpbmUgYm9vbCBpc1NpbXBsZUxlbmd0aFBy
b3BlcnR5SUQoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBib29sJiBhY2NlcHRzTmVnYXRpdmVO
dW1iZXJzKQogewogICAgIHN3aXRjaCAocHJvcGVydHlJZCkgewpAQCAtMTIwLDcgKzExOSw3IEBA
IHN0YXRpYyBpbmxpbmUgYm9vbCBwYXJzZVNpbXBsZUxlbmd0aChjb24KICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIENTU1ZhbHVlKiBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKENTU1Byb3Bl
cnR5SUQgcHJvcGVydHlJZCwgY29uc3QgU3RyaW5nJiBzdHJpbmcsIENTU1BhcnNlck1vZGUgY3Nz
UGFyc2VyTW9kZSkKK3N0YXRpYyBSZWZQdHI8Q1NTVmFsdWU+IHBhcnNlU2ltcGxlTGVuZ3RoVmFs
dWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eUlkLCBjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFy
c2VyTW9kZSBjc3NQYXJzZXJNb2RlKQogewogICAgIEFTU0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7
CiAgICAgYm9vbCBhY2NlcHRzTmVnYXRpdmVOdW1iZXJzID0gZmFsc2U7CkBAIC0xMzEsNyArMTMw
LDcgQEAgc3RhdGljIENTU1ZhbHVlKiBwYXJzZVNpbXBsZUxlbmd0aFZhbHVlKAogCiAgICAgdW5z
aWduZWQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aCgpOwogICAgIGRvdWJsZSBudW1iZXI7Ci0gICAg
Q1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVu
aXRUeXBlczo6TnVtYmVyOworICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMgdW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19OVU1CRVI7CiAKICAgICBpZiAoc3Ry
aW5nLmlzOEJpdCgpKSB7CiAgICAgICAgIGlmICghcGFyc2VTaW1wbGVMZW5ndGgoc3RyaW5nLmNo
YXJhY3RlcnM4KCksIGxlbmd0aCwgdW5pdCwgbnVtYmVyKSkKQEAgLTE0MSwxMiArMTQwLDEwIEBA
IHN0YXRpYyBDU1NWYWx1ZSogcGFyc2VTaW1wbGVMZW5ndGhWYWx1ZSgKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIH0KIAotICAgIGlmICh1bml0ID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6Ok51bWJlcikgewotICAgICAgICBpZiAoY3NzUGFyc2VyTW9kZSA9PSBTVkdB
dHRyaWJ1dGVNb2RlKQotICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXM6OlVzZXJVbml0czsKLSAgICAgICAgZWxzZSBpZiAoIW51bWJlcikKLSAgICAgICAgICAg
IHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpQaXhlbHM7Ci0gICAgICAgIGVs
c2UKKyAgICBpZiAodW5pdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTlVN
QkVSKSB7CisgICAgICAgIGlmICghbnVtYmVyKQorICAgICAgICAgICAgdW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpVbml0VHlwZXM6OkNTU19QWDsKKyAgICAgICAgZWxzZSBpZiAoY3NzUGFyc2Vy
TW9kZSAhPSBTVkdBdHRyaWJ1dGVNb2RlKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAg
ICAgfQogCkBAIC0xNzksNyArMTc2LDcgQEAgc3RhdGljIGlubGluZSBib29sIGlzQ29sb3JQcm9w
ZXJ0eUlEKENTUwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RW1waGFzaXNDb2xvcjoK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEZpbGxDb2xvcjoKICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0VGV4dFN0cm9rZUNvbG9yOgotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0RGVj
b3JhdGlvbkNvbG9yOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbkNv
bG9yOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBkZWZhdWx0OgogICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0yODQsNyArMjgxLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VDb2xvckludE9yUGVy
Y2VudGFnZShjbwogICAgIGlmIChjdXJyZW50ID09IGVuZCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgaWYgKGV4cGVjdCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpOdW1i
ZXIgJiYgKCpjdXJyZW50ID09ICcuJyB8fCAqY3VycmVudCA9PSAnJScpKQorICAgIGlmIChleHBl
Y3QgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUiAmJiAoKmN1cnJl
bnQgPT0gJy4nIHx8ICpjdXJyZW50ID09ICclJykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGlmICgqY3VycmVudCA9PSAnLicpIHsKQEAgLTMwMCwxOCArMjk3LDE4IEBAIHN0YXRpYyBi
b29sIHBhcnNlQ29sb3JJbnRPclBlcmNlbnRhZ2UoY28KICAgICAgICAgbG9jYWxWYWx1ZSArPSBw
ZXJjZW50YWdlOwogICAgIH0KIAotICAgIGlmIChleHBlY3QgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OlVuaXRUeXBlczo6UGVyY2VudGFnZSAmJiAqY3VycmVudCAhPSAnJScpCisgICAgaWYgKGV4cGVj
dCA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUEVSQ0VOVEFHRSAmJiAqY3Vy
cmVudCAhPSAnJScpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICgqY3VycmVudCA9
PSAnJScpIHsKLSAgICAgICAgZXhwZWN0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6
UGVyY2VudGFnZTsKKyAgICAgICAgZXhwZWN0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBl
czo6Q1NTX1BFUkNFTlRBR0U7CiAgICAgICAgIGxvY2FsVmFsdWUgPSBsb2NhbFZhbHVlIC8gMTAw
LjAgKiAyNTYuMDsKICAgICAgICAgLy8gQ2xhbXAgdmFsdWVzIGF0IDI1NSBmb3IgcGVyY2VudGFn
ZXMgb3ZlciAxMDAlCiAgICAgICAgIGlmIChsb2NhbFZhbHVlID4gMjU1KQogICAgICAgICAgICAg
bG9jYWxWYWx1ZSA9IDI1NTsKICAgICAgICAgY3VycmVudCsrOwogICAgIH0gZWxzZSB7Ci0gICAg
ICAgIGV4cGVjdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6Ok51bWJlcjsKKyAgICAg
ICAgZXhwZWN0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX05VTUJFUjsKICAg
ICB9CiAKICAgICB3aGlsZSAoY3VycmVudCAhPSBlbmQgJiYgaXNIVE1MU3BhY2U8Q2hhcmFjdGVy
VHlwZT4oKmN1cnJlbnQpKQpAQCAtNDE2LDcgKzQxMyw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBt
aWdodEJlUkdCKGNvbnN0IENoYXIKIHRlbXBsYXRlIDx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgog
c3RhdGljIGJvb2wgZmFzdFBhcnNlQ29sb3JJbnRlcm5hbChSR0JBMzImIHJnYiwgY29uc3QgQ2hh
cmFjdGVyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoLCBib29sIHF1aXJrc01vZGUp
CiB7Ci0gICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyBleHBlY3QgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpVbmtub3duOworICAgIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0
VHlwZXMgZXhwZWN0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6Q1NTX1VOS05PV047
CiAKICAgICBpZiAobGVuZ3RoID49IDQgJiYgY2hhcmFjdGVyc1swXSA9PSAnIycpCiAgICAgICAg
IHJldHVybiBDb2xvcjo6cGFyc2VIZXhDb2xvcihjaGFyYWN0ZXJzICsgMSwgbGVuZ3RoIC0gMSwg
cmdiKTsKQEAgLTQ3MSw3ICs0NjgsNyBAQCBzdGF0aWMgYm9vbCBmYXN0UGFyc2VDb2xvckludGVy
bmFsKFJHQkEzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1DU1NWYWx1ZSogQ1NTUGFyc2VyRmFz
dFBhdGhzOjpwYXJzZUNvbG9yKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBh
cnNlck1vZGUpCitSZWZQdHI8Q1NTVmFsdWU+IENTU1BhcnNlckZhc3RQYXRoczo6cGFyc2VDb2xv
cihjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBwYXJzZXJNb2RlKQogewogICAg
IEFTU0VSVCghc3RyaW5nLmlzRW1wdHkoKSk7CiAgICAgQ1NTVmFsdWVJRCB2YWx1ZUlEID0gY3Nz
VmFsdWVLZXl3b3JkSUQoc3RyaW5nKTsKQEAgLTQ5Miw3ICs0ODksNyBAQCBDU1NWYWx1ZSogQ1NT
UGFyc2VyRmFzdFBhdGhzOjpwYXJzZUNvbG9yCiAgICAgICAgIHBhcnNlUmVzdWx0ID0gZmFzdFBh
cnNlQ29sb3JJbnRlcm5hbChjb2xvciwgc3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVu
Z3RoKCksIHF1aXJrc01vZGUpOwogICAgIGlmICghcGFyc2VSZXN1bHQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBDU1NDb2xvclZhbHVlOjpjcmVhdGUoY29sb3IpOworICAg
IHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZUNvbG9yVmFsdWUoY29sb3Ip
OwogfQogCiBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQcm9wZXJ0eUFu
ZFZhbHVlKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCwgQ1NTVmFsdWVJRCB2YWx1ZUlELCBDU1NQ
YXJzZXJNb2RlIHBhcnNlck1vZGUpCkBAIC01MzcsOSArNTM0LDkgQEAgYm9vbCBDU1NQYXJzZXJG
YXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZU5vbnplcm8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUV2ZW5vZGQ7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eUNvbG9ySW50ZXJwb2xhdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5Q29sb3JJbnRl
cnBvbGF0aW9uRmlsdGVyczoKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTUkdCIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVMaW5lYXJS
R0I7CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU3JnYiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTGluZWFycmdiOwogICAgIGNhc2Ug
Q1NTUHJvcGVydHlDb2xvclJlbmRlcmluZzoKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NT
VmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZVNwZWVkIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVPcHRpbWl6ZVF1YWxpdHk7CisgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENT
U1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlT3B0aW1pemVzcGVlZCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlT3B0aW1pemVxdWFsaXR5OwogICAgIGNhc2UgQ1NTUHJvcGVydHlEaXJlY3Rp
b246IC8vIGx0ciB8IHJ0bAogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUx0ciB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlUnRsOwogICAgIGNhc2UgQ1NTUHJvcGVydHlEaXNwbGF5OgpA
QCAtNTQ4LDcgKzU0NSwxMCBAQCBib29sIENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdv
cmRQCiAgICAgICAgIC8vIHRhYmxlLWNvbHVtbi1ncm91cCB8IHRhYmxlLWNvbHVtbiB8IHRhYmxl
LWNlbGwgfCB0YWJsZS1jYXB0aW9uIHwgLXdlYmtpdC1ib3ggfCAtd2Via2l0LWlubGluZS1ib3gg
fCBub25lCiAgICAgICAgIC8vIGZsZXggfCBpbmxpbmUtZmxleCB8IC13ZWJraXQtZmxleCB8IC13
ZWJraXQtaW5saW5lLWZsZXggfCBncmlkIHwgaW5saW5lLWdyaWQKICAgICAgICAgcmV0dXJuICh2
YWx1ZUlEID49IENTU1ZhbHVlSW5saW5lICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVJbmxpbmVGbGV4
KSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0RmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
V2Via2l0SW5saW5lRmxleCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZQotICAgICAgICAgICAg
fHwgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc0dyaWRMYXlvdXRFbmFibGVkKCkgJiYgKHZh
bHVlSUQgPT0gQ1NTVmFsdWVHcmlkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmxpbmVHcmlkKSk7
CisjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkKKyAgICAgICAgICAgIHx8IChSdW50aW1lRW5h
YmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygpLmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSAm
JiAodmFsdWVJRCA9PSBDU1NWYWx1ZUdyaWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUlubGluZUdy
aWQpKQorI2VuZGlmCisgICAgICAgIDsKICAgICBjYXNlIENTU1Byb3BlcnR5RG9taW5hbnRCYXNl
bGluZToKICAgICAgICAgLy8gYXV0byB8IHVzZS1zY3JpcHQgfCBuby1jaGFuZ2UgfCByZXNldC1z
aXplIHwgaWRlb2dyYXBoaWMgfAogICAgICAgICAvLyBhbHBoYWJldGljIHwgaGFuZ2luZyB8IG1h
dGhlbWF0aWNhbCB8IGNlbnRyYWwgfCBtaWRkbGUgfApAQCAtNTY2LDggKzU2NiwxMCBAQCBib29s
IENTU1BhcnNlckZhc3RQYXRoczo6aXNWYWxpZEtleXdvcmRQCiAgICAgICAgIHJldHVybiB2YWx1
ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8ICh2YWx1ZUlEID49IENTU1ZhbHVlVWx0cmFDb25kZW5z
ZWQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZVVsdHJhRXhwYW5kZWQpOwogICAgIGNhc2UgQ1NTUHJv
cGVydHlJbWFnZVJlbmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplQ29udHJhc3QgfCBwaXhlbGF0
ZWQKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQaXhl
bGF0ZWQ7CisjaWYgRU5BQkxFKENTU19DT01QT1NJVElORykKICAgICBjYXNlIENTU1Byb3BlcnR5
SXNvbGF0aW9uOiAvLyBhdXRvIHwgaXNvbGF0ZQogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUlzb2xhdGU7CisjZW5kaWYKICAgICBj
YXNlIENTU1Byb3BlcnR5TGlzdFN0eWxlUG9zaXRpb246IC8vIGluc2lkZSB8IG91dHNpZGUKICAg
ICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVJbnNpZGUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZU91dHNpZGU7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eUxpc3RTdHlsZVR5cGU6CkBAIC01ODAs
OCArNTgyLDkgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAg
ICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZpbGwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUNvbnRhaW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUNvdmVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTY2FsZURvd247CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmVTdHlsZTogLy8gKDxib3JkZXItc3R5bGU+IGV4Y2VwdCBoaWRkZW4pIHwgYXV0
bwogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZU5vbmUgfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVJbnNldCAmJiB2YWx1ZUlEIDw9IENT
U1ZhbHVlRG91YmxlKTsKLSAgICBjYXNlIENTU1Byb3BlcnR5T3ZlcmZsb3dBbmNob3I6Ci0gICAg
ICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKKyAgICAvLyBGSVhNRS1ORVdQQVJT
RVI6IFN1cHBvcnQ/CisgICAgLy8gY2FzZSBDU1NQcm9wZXJ0eU92ZXJmbG93QW5jaG9yOgorICAg
IC8vICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQXV0bzsKICAgICBjYXNlIENTU1Byb3Bl
cnR5T3ZlcmZsb3dXcmFwOiAvLyBub3JtYWwgfCBicmVhay13b3JkCiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eVdvcmRXcmFwOgogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQnJlYWtXb3JkOwpAQCAtNTk3LDE2ICs2MDAsMTcgQEAgYm9v
bCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAgIGNhc2UgQ1NTUHJvcGVy
dHlQb2ludGVyRXZlbnRzOgogICAgICAgICAvLyBub25lIHwgdmlzaWJsZVBhaW50ZWQgfCB2aXNp
YmxlRmlsbCB8IHZpc2libGVTdHJva2UgfCB2aXNpYmxlIHwKICAgICAgICAgLy8gcGFpbnRlZCB8
IGZpbGwgfCBzdHJva2UgfCBhdXRvIHwgYWxsIHwgYm91bmRpbmctYm94Ci0gICAgICAgIHJldHVy
biB2YWx1ZUlEID09IENTU1ZhbHVlVmlzaWJsZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8ICh2
YWx1ZUlEID49IENTU1ZhbHVlVmlzaWJsZVBhaW50ZWQgJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUJv
dW5kaW5nQm94KTsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVWaXNpYmxlIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbGwgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgKHZhbHVlSUQgPj0gQ1NTVmFsdWVWaXNpYmxlcGFpbnRl
ZCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlU3Ryb2tlKTsKICAgICBjYXNlIENTU1Byb3BlcnR5UG9z
aXRpb246IC8vIHN0YXRpYyB8IHJlbGF0aXZlIHwgYWJzb2x1dGUgfCBmaXhlZCB8IHN0aWNreQot
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVN0YXRpYyB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlUmVsYXRpdmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFic29sdXRlIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVGaXhlZCB8fCAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6Y3NzU3RpY2t5UG9z
aXRpb25FbmFibGVkKCkgJiYgdmFsdWVJRCA9PSBDU1NWYWx1ZVN0aWNreSk7CisgICAgICAgIHJl
dHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3RhdGljIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVSZWxh
dGl2ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQWJzb2x1dGUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZUZpeGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVXZWJraXRTdGlja3k7CiAgICAgY2FzZSBDU1NQ
cm9wZXJ0eVJlc2l6ZTogLy8gbm9uZSB8IGJvdGggfCBob3Jpem9udGFsIHwgdmVydGljYWwgfCBh
dXRvCiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9uZSB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlQm90aCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSG9yaXpvbnRhbCB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlVmVydGljYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG87Ci0gICAgY2Fz
ZSBDU1NQcm9wZXJ0eVNjcm9sbEJlaGF2aW9yOiAvLyBhdXRvIHwgc21vb3RoCi0gICAgICAgIEFT
U0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NvbVNtb290aFNjcm9sbEVuYWJsZWQoKSk7
Ci0gICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlU21vb3RoOworICAgIC8vIEZJWE1FLU5FV1BBUlNFUjogSW52ZXN0aWdhdGUgdGhpcyBw
cm9wZXJ0eS4KKyAgICAvLyBjYXNlIENTU1Byb3BlcnR5U2Nyb2xsQmVoYXZpb3I6IC8vIGF1dG8g
fCBzbW9vdGgKKyAgICAvLyAgICAgQVNTRVJUKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmNzc29t
U21vb3RoU2Nyb2xsRW5hYmxlZCgpKTsKKyAgICAvLyAgIHJldHVybiB2YWx1ZUlEID09IENTU1Zh
bHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU21vb3RoOwogICAgIGNhc2UgQ1NTUHJvcGVy
dHlTaGFwZVJlbmRlcmluZzoKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZVNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVDcmlzcEVkZ2VzIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVHZW9tZXRyaWNQcmVjaXNpb247Cisg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlT3B0aW1pemVzcGVlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ3Jpc3BFZGdlcyB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlR2VvbWV0cmljcHJlY2lzaW9uOwogICAgIGNhc2UgQ1NTUHJvcGVydHlT
cGVhazogLy8gbm9uZSB8IG5vcm1hbCB8IHNwZWxsLW91dCB8IGRpZ2l0cyB8IGxpdGVyYWwtcHVu
Y3R1YXRpb24gfCBuby1wdW5jdHVhdGlvbgogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NW
YWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlU3BlbGxPdXQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURpZ2l0cyB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTGl0ZXJhbFB1bmN0dWF0aW9uIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb1B1bmN0dWF0
aW9uOwogICAgIGNhc2UgQ1NTUHJvcGVydHlTdHJva2VMaW5lam9pbjoKQEAgLTYxNiw1MCArNjIw
LDU0IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc1ZhbGlkS2V5d29yZFAKICAgICBjYXNl
IENTU1Byb3BlcnR5VGFibGVMYXlvdXQ6IC8vIGF1dG8gfCBmaXhlZAogICAgICAgICByZXR1cm4g
dmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUZpeGVkOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlUZXh0QWxpZ246Ci0gICAgICAgIHJldHVybiAodmFsdWVJRCA+PSBD
U1NWYWx1ZVdlYmtpdEF1dG8gJiYgdmFsdWVJRCA8PSBDU1NWYWx1ZUludGVybmFsQ2VudGVyKSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZDsKLSAg
ICBjYXNlIENTU1Byb3BlcnR5VGV4dEFsaWduTGFzdDoKKyAgICAgICAgcmV0dXJuICh2YWx1ZUlE
ID49IENTU1ZhbHVlV2Via2l0QXV0byAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlV2Via2l0TWF0Y2hQ
YXJlbnQpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
RW5kOworI2lmIEVOQUJMRShDU1MzX1RFWFQpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHRBbGlnbkxhc3Q6CiAgICAgICAgIC8vIGF1dG8gfCBzdGFydCB8IGVuZCB8IGxlZnQgfCByaWdo
dCB8IGNlbnRlciB8IGp1c3RpZnkKICAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVl
TGVmdCAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlSnVzdGlmeSkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1
ZVN0YXJ0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUF1
dG87CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dEFuY2hvcjoKICAgICAgICAgcmV0
dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVTdGFydCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTWlkZGxl
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbmQ7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRDb21i
aW5lVXByaWdodDoKLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZh
bHVlSUQgPT0gQ1NTVmFsdWVBbGw7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
U3R5bGU6CisvLyBGSVhNRS1ORVdQQVJTRVI6IFN1cHBvcnQKKy8vICAgIGNhc2UgQ1NTUHJvcGVy
dHlUZXh0Q29tYmluZVVwcmlnaHQ6CisvLyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBbGw7CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uU3R5bGU6CiAgICAgICAgIC8vIHNvbGlkIHwgZG91YmxlIHwgZG90
dGVkIHwgZGFzaGVkIHwgd2F2eQotICAgICAgICBBU1NFUlQoUnVudGltZUVuYWJsZWRGZWF0dXJl
czo6Y3NzM1RleHREZWNvcmF0aW9uc0VuYWJsZWQoKSk7CiAgICAgICAgIHJldHVybiB2YWx1ZUlE
ID09IENTU1ZhbHVlU29saWQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURvdWJsZSB8fCB2YWx1ZUlE
ID09IENTU1ZhbHVlRG90dGVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVEYXNoZWQgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZVdhdnk7Ci0gICAgY2FzZSBDU1NQcm9wZXJ0eVRleHRKdXN0aWZ5OgorI2lm
IEVOQUJMRShDU1MzX1RFWFQpCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRKdXN0aWZ5
OgogICAgICAgICAvLyBhdXRvIHwgbm9uZSB8IGludGVyLXdvcmQgfCBkaXN0cmlidXRlCiAgICAg
ICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3MzVGV4dEVuYWJsZWQoKSk7CiAg
ICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlSW50ZXJXb3JkIHx8IHZhbHVlSUQgPT0g
Q1NTVmFsdWVEaXN0cmlidXRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVOb25lOwotICAgIGNhc2UgQ1NTUHJvcGVydHlUZXh0T3JpZW50YXRpb246IC8v
IG1peGVkIHwgdXByaWdodCB8IHNpZGV3YXlzIHwgc2lkZXdheXMtcmlnaHQKKyNlbmRpZgorICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0T3JpZW50YXRpb246IC8vIG1peGVkIHwgdXByaWdo
dCB8IHNpZGV3YXlzIHwgc2lkZXdheXMtcmlnaHQKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVNaXhlZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVXByaWdodCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlU2lkZXdheXMgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNpZGV3YXlzUmlnaHQ7Ci0g
ICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFRleHRPcmllbnRhdGlvbjoKLSAgICAgICAgcmV0dXJu
IHZhbHVlSUQgPT0gQ1NTVmFsdWVTaWRld2F5cyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlU2lkZXdh
eXNSaWdodCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlVmVydGljYWxSaWdodCB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlVXByaWdodDsKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dE92ZXJmbG93OiAvLyBj
bGlwIHwgZWxsaXBzaXMKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVDbGlwIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbGxpcHNpczsKICAgICBjYXNlIENTU1Byb3BlcnR5VGV4dFJl
bmRlcmluZzogLy8gYXV0byB8IG9wdGltaXplU3BlZWQgfCBvcHRpbWl6ZUxlZ2liaWxpdHkgfCBn
ZW9tZXRyaWNQcmVjaXNpb24KLSAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRv
IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZVNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVPcHRpbWl6ZUxlZ2liaWxpdHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY1ByZWNp
c2lvbjsKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVPcHRpbWl6ZXNwZWVkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVPcHRpbWl6ZWxl
Z2liaWxpdHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUdlb21ldHJpY3ByZWNpc2lvbjsKICAgICBj
YXNlIENTU1Byb3BlcnR5VGV4dFRyYW5zZm9ybTogLy8gY2FwaXRhbGl6ZSB8IHVwcGVyY2FzZSB8
IGxvd2VyY2FzZSB8IG5vbmUKICAgICAgICAgcmV0dXJuICh2YWx1ZUlEID49IENTU1ZhbHVlQ2Fw
aXRhbGl6ZSAmJiB2YWx1ZUlEIDw9IENTU1ZhbHVlTG93ZXJjYXNlKSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlTm9uZTsKICAgICBjYXNlIENTU1Byb3BlcnR5VW5pY29kZUJpZGk6CiAgICAgICAgIHJl
dHVybiB2YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbWJl
ZAogICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJpZGlPdmVycmlkZSB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlV2Via2l0SXNvbGF0ZQogICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBD
U1NWYWx1ZVdlYmtpdElzb2xhdGVPdmVycmlkZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0
UGxhaW50ZXh0Ci0gICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0ZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0ZU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQ
bGFpbnRleHQ7CisgICAgICAgICAgICB8fCB2YWx1ZUlEID09IENTU1ZhbHVlSXNvbGF0ZSB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlV2Via2l0SXNvbGF0ZU92ZXJyaWRlIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVXZWJraXRQbGFpbnRleHQ7CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVZlY3RvckVmZmVjdDoK
ICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVOb25TY2FsaW5nU3Ryb2tlOwogICAgIGNhc2UgQ1NTUHJvcGVydHlWaXNpYmlsaXR5OiAv
LyB2aXNpYmxlIHwgaGlkZGVuIHwgY29sbGFwc2UKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW4gfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUNvbGxhcHNlOwogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRBcHBlYXJhbmNl
OgogICAgICAgICByZXR1cm4gKHZhbHVlSUQgPj0gQ1NTVmFsdWVDaGVja2JveCAmJiB2YWx1ZUlE
IDw9IENTU1ZhbHVlVGV4dGFyZWEpIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOwotICAgIGNh
c2UgQ1NTUHJvcGVydHlCYWNrZmFjZVZpc2liaWxpdHk6CisgICAgY2FzZSBDU1NQcm9wZXJ0eVdl
YmtpdEJhY2tmYWNlVmlzaWJpbGl0eToKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFs
dWVWaXNpYmxlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVIaWRkZW47CisjaWYgRU5BQkxFKENTU19D
T01QT1NJVElORykKICAgICBjYXNlIENTU1Byb3BlcnR5TWl4QmxlbmRNb2RlOgogICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlTXVs
dGlwbHkgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNjcmVlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
T3ZlcmxheQogICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZURhcmtlbiB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlTGlnaHRlbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sb3JEb2RnZSB8
fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sb3JCdXJuCiAgICAgICAgICAgICB8fCB2YWx1ZUlEID09
IENTU1ZhbHVlSGFyZExpZ2h0IHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTb2Z0TGlnaHQgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZURpZmZlcmVuY2UgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUV4Y2x1c2lv
bgogICAgICAgICAgICAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUh1ZSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlU2F0dXJhdGlvbiB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sb3IgfHwgdmFsdWVJRCA9
PSBDU1NWYWx1ZUx1bWlub3NpdHk7CisjZW5kaWYKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Qm94QWxpZ246CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlU3RyZXRjaCB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlU3RhcnQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUVuZCB8fCB2YWx1
ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCYXNlbGluZTsKICAg
ICBjYXNlIENTU1Byb3BlcnR5V2Via2l0Qm94RGVjb3JhdGlvbkJyZWFrOgpAQCAtNjg3LDEyICs2
OTUsMTIgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZVJvdyB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUm93
UmV2ZXJzZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ29sdW1uIHx8IHZhbHVlSUQgPT0gQ1NTVmFs
dWVDb2x1bW5SZXZlcnNlOwogICAgIGNhc2UgQ1NTUHJvcGVydHlGbGV4V3JhcDoKICAgICAgICAg
cmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3dyYXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdy
YXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVdyYXBSZXZlcnNlOwotICAgIGNhc2UgQ1NTUHJvcGVy
dHlIeXBoZW5zOgorICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRIeXBoZW5zOgogICAgICAgICBy
ZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUg
fHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU1hbnVhbDsKICAgICBjYXNlIENTU1Byb3BlcnR5SnVzdGlm
eUNvbnRlbnQ6CiAgICAgICAgIC8vIEZJWE1FOiBQZXIgQ1NTIGFsaWdubWVudCwgdGhpcyBwcm9w
ZXJ0eSBzaG91bGQgYWNjZXB0IGFuIG9wdGlvbmFsIDxvdmVyZmxvdy1wb3NpdGlvbj4uIFdlIHNo
b3VsZCBzaGFyZSB0aGlzIHBhcnNpbmcgY29kZSB3aXRoICdqdXN0aWZ5LXNlbGYnLgogICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUZsZXhTdGFydCB8fCB2YWx1ZUlEID09IENTU1Zh
bHVlRmxleEVuZCB8fCB2YWx1ZUlEID09IENTU1ZhbHVlQ2VudGVyIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVTcGFjZUJldHdlZW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZVNwYWNlQXJvdW5kOwotICAg
IGNhc2UgQ1NTUHJvcGVydHlGb250S2VybmluZzoKKyAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0
Rm9udEtlcm5pbmc6CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlQXV0byB8fCB2
YWx1ZUlEID09IENTU1ZhbHVlTm9ybWFsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lOwogICAg
IGNhc2UgQ1NTUHJvcGVydHlXZWJraXRGb250U21vb3RoaW5nOgogICAgICAgICByZXR1cm4gdmFs
dWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJ
RCA9PSBDU1NWYWx1ZUFudGlhbGlhc2VkIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVTdWJwaXhlbEFu
dGlhbGlhc2VkOwpAQCAtNzIxLDcgKzcyOSw3IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjpp
c1ZhbGlkS2V5d29yZFAKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVBdXRvIHx8
IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb25lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVFbGVtZW50Owog
ICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRVc2VyTW9kaWZ5OiAvLyByZWFkLW9ubHkgfCByZWFk
LXdyaXRlCiAgICAgICAgIHJldHVybiB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZE9ubHkgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZVJlYWRXcml0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUmVhZFdyaXRl
UGxhaW50ZXh0T25seTsKLSAgICBjYXNlIENTU1Byb3BlcnR5VXNlclNlbGVjdDogLy8gYXV0byB8
IG5vbmUgfCB0ZXh0IHwgYWxsCisgICAgY2FzZSBDU1NQcm9wZXJ0eVdlYmtpdFVzZXJTZWxlY3Q6
IC8vIGF1dG8gfCBub25lIHwgdGV4dCB8IGFsbAogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBD
U1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVRleHQgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUFsbDsKICAgICBjYXNlIENTU1Byb3BlcnR5
V2Via2l0V3JpdGluZ01vZGU6CiAgICAgICAgIHJldHVybiB2YWx1ZUlEID49IENTU1ZhbHVlSG9y
aXpvbnRhbFRiICYmIHZhbHVlSUQgPD0gQ1NTVmFsdWVWZXJ0aWNhbExyOwpAQCAtNzM0LDE1ICs3
NDIsMjkgQEAgYm9vbCBDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUAogICAgICAg
ICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vcm1hbCB8fCB2YWx1ZUlEID09IENTU1ZhbHVl
UHJlIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQcmVXcmFwIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVQ
cmVMaW5lIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVOb3dyYXA7CiAgICAgY2FzZSBDU1NQcm9wZXJ0
eVdvcmRCcmVhazogLy8gbm9ybWFsIHwgYnJlYWstYWxsIHwga2VlcC1hbGwgfCBicmVhay13b3Jk
ICh0aGlzIGlzIGEgY3VzdG9tIGV4dGVuc2lvbikKICAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0g
Q1NTVmFsdWVOb3JtYWwgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJyZWFrQWxsIHx8IHZhbHVlSUQg
PT0gQ1NTVmFsdWVLZWVwQWxsIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVCcmVha1dvcmQ7Ci0gICAg
Y2FzZSBDU1NQcm9wZXJ0eVNjcm9sbFNuYXBUeXBlOiAvLyBub25lIHwgbWFuZGF0b3J5IHwgcHJv
eGltaXR5Ci0gICAgICAgIEFTU0VSVChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpjc3NTY3JvbGxT
bmFwUG9pbnRzRW5hYmxlZCgpKTsKKyNpZiBFTkFCTEUoQ1NTX1NDUk9MTF9TTkFQKQorICAgIGNh
c2UgQ1NTUHJvcGVydHlXZWJraXRTY3JvbGxTbmFwVHlwZTogLy8gbm9uZSB8IG1hbmRhdG9yeSB8
IHByb3hpbWl0eQogICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZU5vbmUgfHwgdmFs
dWVJRCA9PSBDU1NWYWx1ZU1hbmRhdG9yeSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlUHJveGltaXR5
OworI2VuZGlmCisjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKKyAgICBjYXNlIENTU1Byb3BlcnR5
VG91Y2hBY3Rpb246IC8vIGF1dG8gfCBtYW5pcHVsYXRpb24KKyAgICAgICAgcmV0dXJuIHZhbHVl
SUQgPT0gQ1NTVmFsdWVBdXRvIHx8IHZhbHVlSUQgPT0gQ1NTVmFsdWVNYW5pcHVsYXRpb247Cisj
ZW5kaWYKKyNpZiBFTkFCTEUoQ1NTX1RSQUlMSU5HX1dPUkQpCisgICAgY2FzZSBDU1NQcm9wZXJ0
eUFwcGxlVHJhaWxpbmdXb3JkOiAvLyBhdXRvIHwgLWFwcGxlLXBhcnRpYWxseS1iYWxhbmNlZAor
ICAgICAgICByZXR1cm4gdmFsdWVJRCA9PSBDU1NWYWx1ZUF1dG8gfHwgdmFsdWVJRCA9PSBDU1NW
YWx1ZVdlYmtpdFBhcnRpYWxseUJhbGFuY2VkOworI2VuZGlmCisjaWYgRU5BQkxFKEFQUExFX1BB
WSkKKyAgICBjYXNlIENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25TdHlsZTogLy8gd2hpdGUgfCB3
aGl0ZS1vdXRsaW5lIHwgYmxhY2sKKyAgICAgICAgcmV0dXJuIHZhbHVlSUQgPT0gQ1NTVmFsdWVX
aGl0ZSB8fCB2YWx1ZUlEID09IENTU1ZhbHVlV2hpdGVPdXRsaW5lIHx8IHZhbHVlSUQgPT0gQ1NT
VmFsdWVCbGFjazsKKyAgICBjYXNlIENTU1Byb3BlcnR5QXBwbGVQYXlCdXR0b25UeXBlOiAvLyBw
bGFpbiB8IGJ1eSB8IHNldC11cCB8IGluLXN0b3JlCisgICAgICAgIHJldHVybiB2YWx1ZUlEID09
IENTU1ZhbHVlUGxhaW4gfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUJ1eSB8fCB2YWx1ZUlEID09IENT
U1ZhbHVlU2V0VXAgfHwgdmFsdWVJRCA9PSBDU1NWYWx1ZUluU3RvcmU7CisjZW5kaWYKICAgICBk
ZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIH0KLSovCiAKIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQ
cm9wZXJ0eUlEKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJZCkKIHsKQEAgLTk0MSwxNSArOTYzLDIy
IEBAIGJvb2wgQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tleXdvcmRQcm9wZXIKICAgICB9CiB9CiAK
LS8qIEZJWE1FLU5FV1BBUlNFUjogVHVybiBvZmYgZm9yIG5vdy4KK3N0YXRpYyBib29sIGlzVW5p
dmVyc2FsS2V5d29yZChjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICAvLyBUaGVzZSBrZXl3
b3JkcyBjYW4gYmUgdXNlZCBmb3IgYWxsIHByb3BlcnRpZXMuCisgICAgcmV0dXJuIGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImluaXRpYWwiKQorICAgIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImluaGVyaXQiKQorICAgIHx8IGVxdWFsTGV0
dGVyc0lnbm9yaW5nQVNDSUlDYXNlKHN0cmluZywgInVuc2V0IikKKyAgICB8fCBlcXVhbExldHRl
cnNJZ25vcmluZ0FTQ0lJQ2FzZShzdHJpbmcsICJyZXZlcnQiKTsKK30KIAotc3RhdGljIENTU1Zh
bHVlKiBwYXJzZUtleXdvcmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0IFN0
cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCitzdGF0aWMgUmVmUHRyPENT
U1ZhbHVlPiBwYXJzZUtleXdvcmRWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SWQsIGNvbnN0
IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBhcnNlck1vZGUpCiB7CiAgICAgQVNTRVJU
KCFzdHJpbmcuaXNFbXB0eSgpKTsKIAogICAgIGlmICghQ1NTUGFyc2VyRmFzdFBhdGhzOjppc0tl
eXdvcmRQcm9wZXJ0eUlEKHByb3BlcnR5SWQpKSB7CiAgICAgICAgIC8vIEFsbCBwcm9wZXJ0aWVz
IGFjY2VwdCB0aGUgdmFsdWVzIG9mICJpbml0aWFsIiBhbmQgImluaGVyaXQiLgotICAgICAgICBp
ZiAoIWVxdWFsSWdub3JpbmdBU0NJSUNhc2Uoc3RyaW5nLCAiaW5pdGlhbCIpICYmICFlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHN0cmluZywgImluaGVyaXQiKSkKKyAgICAgICAgaWYgKCFpc1VuaXZl
cnNhbEtleXdvcmQoc3RyaW5nKSkKICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAg
ICAgIC8vIFBhcnNlIGluaXRpYWwvaW5oZXJpdCBzaG9ydGhhbmRzIHVzaW5nIHRoZSBDU1NQcm9w
ZXJ0eVBhcnNlci4KQEAgLTk1Nyw3ICs5ODYsNyBAQCBzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlS2V5
d29yZFZhbHVlKENTU1ByCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgICAgICAv
LyBEZXNjcmlwdG9ycyBkbyBub3Qgc3VwcG9ydCBjc3Mgd2lkZSBrZXl3b3Jkcy4KLSAgICAgICAg
aWYgKENTU1Byb3BlcnR5TWV0YWRhdGE6OmlzRGVzY3JpcHRvck9ubHkocHJvcGVydHlJZCkpCisg
ICAgICAgIGlmIChDU1NQcm9wZXJ0eTo6aXNEZXNjcmlwdG9yT25seShwcm9wZXJ0eUlkKSkKICAg
ICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIApAQCAtOTY3LDkgKzk5NiwxNCBAQCBz
dGF0aWMgQ1NTVmFsdWUqIHBhcnNlS2V5d29yZFZhbHVlKENTU1ByCiAgICAgICAgIHJldHVybiBu
dWxscHRyOwogCiAgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVJbmhlcml0KQotICAgICAgICBy
ZXR1cm4gQ1NTSW5oZXJpdGVkVmFsdWU6OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVJbmhlcml0ZWRWYWx1ZSgpOwogICAgIGlmICh2YWx1
ZUlEID09IENTU1ZhbHVlSW5pdGlhbCkKLSAgICAgICAgcmV0dXJuIENTU0luaXRpYWxWYWx1ZTo6
Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0
ZUV4cGxpY2l0SW5pdGlhbFZhbHVlKCk7CisgICAgaWYgKHZhbHVlSUQgPT0gQ1NTVmFsdWVVbnNl
dCkKKyAgICAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVW5zZXRW
YWx1ZSgpOworICAgIGlmICh2YWx1ZUlEID09IENTU1ZhbHVlUmV2ZXJ0KQorICAgICAgICByZXR1
cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVSZXZlcnRWYWx1ZSgpOworICAgIAog
ICAgIGlmIChDU1NQYXJzZXJGYXN0UGF0aHM6OmlzVmFsaWRLZXl3b3JkUHJvcGVydHlBbmRWYWx1
ZShwcm9wZXJ0eUlkLCB2YWx1ZUlELCBwYXJzZXJNb2RlKSkKICAgICAgICAgcmV0dXJuIENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGVJZGVudGlmaWVyKHZhbHVlSUQpOwogICAgIHJldHVybiBudWxs
cHRyOwpAQCAtOTgwLDE2ICsxMDE0LDE2IEBAIHN0YXRpYyBib29sIHBhcnNlVHJhbnNmb3JtVHJh
bnNsYXRlQXJndW0KIHsKICAgICB3aGlsZSAoZXhwZWN0ZWRDb3VudCkgewogICAgICAgICBzaXpl
X3QgZGVsaW1pdGVyID0gV1RGOjpmaW5kKHBvcywgZW5kIC0gcG9zLCBleHBlY3RlZENvdW50ID09
IDEgPyAnKScgOiAnLCcpOwotICAgICAgICBpZiAoZGVsaW1pdGVyID09IGtOb3RGb3VuZCkKKyAg
ICAgICAgaWYgKGRlbGltaXRlciA9PSBub3RGb3VuZCkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgdW5zaWduZWQgYXJndW1lbnRMZW5ndGggPSBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oZGVsaW1pdGVyKTsKLSAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlcyB1bml0
ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRUeXBlczo6TnVtYmVyOworICAgICAgICBDU1NQcmlt
aXRpdmVWYWx1ZTo6VW5pdFR5cGVzIHVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVz
OjpDU1NfTlVNQkVSOwogICAgICAgICBkb3VibGUgbnVtYmVyOwogICAgICAgICBpZiAoIXBhcnNl
U2ltcGxlTGVuZ3RoKHBvcywgYXJndW1lbnRMZW5ndGgsIHVuaXQsIG51bWJlcikpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmICh1bml0ICE9IENTU1ByaW1pdGl2ZVZhbHVl
OjpVbml0VHlwZXM6OlBpeGVscyAmJiAobnVtYmVyIHx8IHVuaXQgIT0gQ1NTUHJpbWl0aXZlVmFs
dWU6OlVuaXRUeXBlczo6TnVtYmVyKSkKKyAgICAgICAgaWYgKHVuaXQgIT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OlVuaXRUeXBlczo6Q1NTX1BYICYmIChudW1iZXIgfHwgdW5pdCAhPSBDU1NQcmltaXRp
dmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfTlVNQkVSKSkKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZCgqQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShudW1iZXIsIENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXM6OlBpeGVscykpOworICAg
ICAgICB0cmFuc2Zvcm1WYWx1ZS0+YXBwZW5kKENTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVt
YmVyLCBDU1NQcmltaXRpdmVWYWx1ZTo6VW5pdFR5cGVzOjpDU1NfUFgpKTsKICAgICAgICAgcG9z
ICs9IGFyZ3VtZW50TGVuZ3RoICsgMTsKICAgICAgICAgLS1leHBlY3RlZENvdW50OwogICAgIH0K
QEAgLTEwMDEsMTQgKzEwMzUsMTQgQEAgc3RhdGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1OdW1iZXJB
cmd1bWVudAogewogICAgIHdoaWxlIChleHBlY3RlZENvdW50KSB7CiAgICAgICAgIHNpemVfdCBk
ZWxpbWl0ZXIgPSBXVEY6OmZpbmQocG9zLCBlbmQgLSBwb3MsIGV4cGVjdGVkQ291bnQgPT0gMSA/
ICcpJyA6ICcsJyk7Ci0gICAgICAgIGlmIChkZWxpbWl0ZXIgPT0ga05vdEZvdW5kKQorICAgICAg
ICBpZiAoZGVsaW1pdGVyID09IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgICAgICB1bnNpZ25lZCBhcmd1bWVudExlbmd0aCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihk
ZWxpbWl0ZXIpOwogICAgICAgICBib29sIG9rOwogICAgICAgICBkb3VibGUgbnVtYmVyID0gY2hh
cmFjdGVyc1RvRG91YmxlKHBvcywgYXJndW1lbnRMZW5ndGgsICZvayk7CiAgICAgICAgIGlmICgh
b2spCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIHRyYW5zZm9ybVZhbHVlLT5h
cHBlbmQoKkNTU1ByaW1pdGl2ZVZhbHVlOjpjcmVhdGUobnVtYmVyLCBDU1NQcmltaXRpdmVWYWx1
ZTo6VW5pdFR5cGVzOjpOdW1iZXIpKTsKKyAgICAgICAgdHJhbnNmb3JtVmFsdWUtPmFwcGVuZChD
U1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKG51bWJlciwgQ1NTUHJpbWl0aXZlVmFsdWU6OlVuaXRU
eXBlczo6Q1NTX05VTUJFUikpOwogICAgICAgICBwb3MgKz0gYXJndW1lbnRMZW5ndGggKyAxOwog
ICAgICAgICAtLWV4cGVjdGVkQ291bnQ7CiAgICAgfQpAQCAtMTAxOCw3ICsxMDUyLDcgQEAgc3Rh
dGljIGJvb2wgcGFyc2VUcmFuc2Zvcm1OdW1iZXJBcmd1bWVudAogc3RhdGljIGNvbnN0IGludCBr
U2hvcnRlc3RWYWxpZFRyYW5zZm9ybVN0cmluZ0xlbmd0aCA9IDEyOwogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ2hhclR5cGU+Ci1zdGF0aWMgQ1NTRnVuY3Rpb25WYWx1ZSogcGFyc2VTaW1wbGVUcmFu
c2Zvcm1WYWx1ZShDaGFyVHlwZSomIHBvcywgQ2hhclR5cGUqIGVuZCkKK3N0YXRpYyBSZWZQdHI8
Q1NTRnVuY3Rpb25WYWx1ZT4gcGFyc2VTaW1wbGVUcmFuc2Zvcm1WYWx1ZShDaGFyVHlwZSomIHBv
cywgQ2hhclR5cGUqIGVuZCkKIHsKICAgICBpZiAoZW5kIC0gcG9zIDwga1Nob3J0ZXN0VmFsaWRU
cmFuc2Zvcm1TdHJpbmdMZW5ndGgpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMTAzOSwx
MSArMTA3MywxMSBAQCBzdGF0aWMgQ1NTRnVuY3Rpb25WYWx1ZSogcGFyc2VTaW1wbGVUcmFuCiAg
ICAgICAgIHVuc2lnbmVkIGFyZ3VtZW50U3RhcnQgPSAxMTsKICAgICAgICAgQ2hhclR5cGUgYzkg
PSB0b0FTQ0lJTG93ZXIocG9zWzldKTsKICAgICAgICAgaWYgKGM5ID09ICd4JyAmJiBwb3NbMTBd
ID09ICcoJykgewotICAgICAgICAgICAgdHJhbnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRl
WDsKKyAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NWYWx1ZVRyYW5zbGF0ZXg7CiAgICAg
ICAgIH0gZWxzZSBpZiAoYzkgPT0gJ3knICYmIHBvc1sxMF0gPT0gJygnKSB7Ci0gICAgICAgICAg
ICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFuc2xhdGVZOworICAgICAgICAgICAgdHJhbnNm
b3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRleTsKICAgICAgICAgfSBlbHNlIGlmIChjOSA9PSAn
eicgJiYgcG9zWzEwXSA9PSAnKCcpIHsKLSAgICAgICAgICAgIHRyYW5zZm9ybVR5cGUgPSBDU1NW
YWx1ZVRyYW5zbGF0ZVo7CisgICAgICAgICAgICB0cmFuc2Zvcm1UeXBlID0gQ1NTVmFsdWVUcmFu
c2xhdGV6OwogICAgICAgICB9IGVsc2UgaWYgKGM5ID09ICcoJykgewogICAgICAgICAgICAgdHJh
bnNmb3JtVHlwZSA9IENTU1ZhbHVlVHJhbnNsYXRlOwogICAgICAgICAgICAgZXhwZWN0ZWRBcmd1
bWVudENvdW50ID0gMjsKQEAgLTEwNTYsOCArMTA5MCw4IEBAIHN0YXRpYyBDU1NGdW5jdGlvblZh
bHVlKiBwYXJzZVNpbXBsZVRyYW4KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICB9CiAgICAgICAgIHBvcyArPSBhcmd1bWVudFN0YXJ0OwotICAgICAgICBDU1NGdW5jdGlvblZh
bHVlKiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZSh0cmFuc2Zvcm1U
eXBlKTsKLSAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybVRyYW5zbGF0ZUFyZ3VtZW50cyhwb3Ms
IGVuZCwgZXhwZWN0ZWRBcmd1bWVudENvdW50LCB0cmFuc2Zvcm1WYWx1ZSkpCisgICAgICAgIFJl
ZlB0cjxDU1NGdW5jdGlvblZhbHVlPiB0cmFuc2Zvcm1WYWx1ZSA9IENTU0Z1bmN0aW9uVmFsdWU6
OmNyZWF0ZSh0cmFuc2Zvcm1UeXBlKTsKKyAgICAgICAgaWYgKCFwYXJzZVRyYW5zZm9ybVRyYW5z
bGF0ZUFyZ3VtZW50cyhwb3MsIGVuZCwgZXhwZWN0ZWRBcmd1bWVudENvdW50LCB0cmFuc2Zvcm1W
YWx1ZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJu
IHRyYW5zZm9ybVZhbHVlOwogICAgIH0KQEAgLTEwNzQsOCArMTEwOCw4IEBAIHN0YXRpYyBDU1NG
dW5jdGlvblZhbHVlKiBwYXJzZVNpbXBsZVRyYW4KIAogICAgIGlmIChpc01hdHJpeDNkKSB7CiAg
ICAgICAgIHBvcyArPSA5OwotICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1
ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZU1hdHJpeDNkKTsKLSAgICAgICAg
aWYgKCFwYXJzZVRyYW5zZm9ybU51bWJlckFyZ3VtZW50cyhwb3MsIGVuZCwgMTYsIHRyYW5zZm9y
bVZhbHVlKSkKKyAgICAgICAgUmVmUHRyPENTU0Z1bmN0aW9uVmFsdWU+IHRyYW5zZm9ybVZhbHVl
ID0gQ1NTRnVuY3Rpb25WYWx1ZTo6Y3JlYXRlKENTU1ZhbHVlTWF0cml4M2QpOworICAgICAgICBp
ZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKHBvcywgZW5kLCAxNiwgdHJhbnNmb3Jt
VmFsdWUuZ2V0KCkpKQogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIHJldHVy
biB0cmFuc2Zvcm1WYWx1ZTsKICAgICB9CkBAIC0xMDkxLDggKzExMjUsOCBAQCBzdGF0aWMgQ1NT
RnVuY3Rpb25WYWx1ZSogcGFyc2VTaW1wbGVUcmFuCiAKICAgICBpZiAoaXNTY2FsZTNkKSB7CiAg
ICAgICAgIHBvcyArPSA4OwotICAgICAgICBDU1NGdW5jdGlvblZhbHVlKiB0cmFuc2Zvcm1WYWx1
ZSA9IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVNjYWxlM2QpOwotICAgICAgICBp
ZiAoIXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKHBvcywgZW5kLCAzLCB0cmFuc2Zvcm1W
YWx1ZSkpCisgICAgICAgIFJlZlB0cjxDU1NGdW5jdGlvblZhbHVlPiB0cmFuc2Zvcm1WYWx1ZSA9
IENTU0Z1bmN0aW9uVmFsdWU6OmNyZWF0ZShDU1NWYWx1ZVNjYWxlM2QpOworICAgICAgICBpZiAo
IXBhcnNlVHJhbnNmb3JtTnVtYmVyQXJndW1lbnRzKHBvcywgZW5kLCAzLCB0cmFuc2Zvcm1WYWx1
ZS5nZXQoKSkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgcmV0dXJuIHRy
YW5zZm9ybVZhbHVlOwogICAgIH0KQEAgLTExMzksNyArMTE3Myw3IEBAIHN0YXRpYyBib29sIHRy
YW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXQKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICAgICAgfQogICAgICAgICBzaXplX3QgYXJndW1lbnRzRW5kID0gV1RGOjpmaW5kKGNoYXJzLCBs
ZW5ndGgsICcpJywgaSk7Ci0gICAgICAgIGlmIChhcmd1bWVudHNFbmQgPT0ga05vdEZvdW5kKQor
ICAgICAgICBpZiAoYXJndW1lbnRzRW5kID09IG5vdEZvdW5kKQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICAvLyBBZHZhbmNlIHRvIHRoZSBlbmQgb2YgdGhlIGFyZ3VtZW50cy4K
ICAgICAgICAgaSA9IGFyZ3VtZW50c0VuZCArIDE7CkBAIC0xMTQ4LDE5ICsxMTgyLDE5IEBAIHN0
YXRpYyBib29sIHRyYW5zZm9ybUNhbkxpa2VseVVzZUZhc3RQYXQKIH0KIAogdGVtcGxhdGUgPHR5
cGVuYW1lIENoYXJUeXBlPgotc3RhdGljIENTU1ZhbHVlTGlzdCogcGFyc2VTaW1wbGVUcmFuc2Zv
cm1MaXN0KGNvbnN0IENoYXJUeXBlKiBjaGFycywgdW5zaWduZWQgbGVuZ3RoKQorc3RhdGljIFJl
ZlB0cjxDU1NWYWx1ZUxpc3Q+IHBhcnNlU2ltcGxlVHJhbnNmb3JtTGlzdChjb25zdCBDaGFyVHlw
ZSogY2hhcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKICAgICBpZiAoIXRyYW5zZm9ybUNhbkxpa2Vs
eVVzZUZhc3RQYXRoKGNoYXJzLCBsZW5ndGgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAg
ICBjb25zdCBDaGFyVHlwZSomIHBvcyA9IGNoYXJzOwogICAgIGNvbnN0IENoYXJUeXBlKiBlbmQg
PSBjaGFycyArIGxlbmd0aDsKLSAgICBDU1NWYWx1ZUxpc3QqIHRyYW5zZm9ybUxpc3QgPSBudWxs
cHRyOworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IHRyYW5zZm9ybUxpc3Q7CiAgICAgd2hpbGUg
KHBvcyA8IGVuZCkgewogICAgICAgICB3aGlsZSAocG9zIDwgZW5kICYmIGlzQ1NTU3BhY2UoKnBv
cykpCiAgICAgICAgICAgICArK3BvczsKICAgICAgICAgaWYgKHBvcyA+PSBlbmQpCiAgICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgQ1NTRnVuY3Rpb25WYWx1ZSogdHJhbnNmb3JtVmFsdWUgPSBw
YXJzZVNpbXBsZVRyYW5zZm9ybVZhbHVlKHBvcywgZW5kKTsKKyAgICAgICAgUmVmUHRyPENTU0Z1
bmN0aW9uVmFsdWU+IHRyYW5zZm9ybVZhbHVlID0gcGFyc2VTaW1wbGVUcmFuc2Zvcm1WYWx1ZShw
b3MsIGVuZCk7CiAgICAgICAgIGlmICghdHJhbnNmb3JtVmFsdWUpCiAgICAgICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAgICAgaWYgKCF0cmFuc2Zvcm1MaXN0KQpAQCAtMTE3MCw3ICsxMjA0
LDcgQEAgc3RhdGljIENTU1ZhbHVlTGlzdCogcGFyc2VTaW1wbGVUcmFuc2ZvcgogICAgIHJldHVy
biB0cmFuc2Zvcm1MaXN0OwogfQogCi1zdGF0aWMgQ1NTVmFsdWUqIHBhcnNlU2ltcGxlVHJhbnNm
b3JtKENTU1Byb3BlcnR5SUQgcHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiBzdHJpbmcpCitzdGF0
aWMgUmVmUHRyPENTU1ZhbHVlPiBwYXJzZVNpbXBsZVRyYW5zZm9ybShDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewogICAgIEFTU0VSVCghc3RyaW5nLmlz
RW1wdHkoKSk7CiAKQEAgLTExODEsMTggKzEyMTUsMjAgQEAgc3RhdGljIENTU1ZhbHVlKiBwYXJz
ZVNpbXBsZVRyYW5zZm9ybShDUwogICAgIHJldHVybiBwYXJzZVNpbXBsZVRyYW5zZm9ybUxpc3Qo
c3RyaW5nLmNoYXJhY3RlcnMxNigpLCBzdHJpbmcubGVuZ3RoKCkpOwogfQogCi1DU1NWYWx1ZSog
Q1NTUGFyc2VyRmFzdFBhdGhzOjptYXliZVBhcnNlVmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eUlELCBjb25zdCBTdHJpbmcmIHN0cmluZywgQ1NTUGFyc2VyTW9kZSBwYXJzZXJNb2RlKQorUmVm
UHRyPENTU1ZhbHVlPiBDU1NQYXJzZXJGYXN0UGF0aHM6Om1heWJlUGFyc2VWYWx1ZShDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5SUQsIGNvbnN0IFN0cmluZyYgc3RyaW5nLCBDU1NQYXJzZXJNb2RlIHBh
cnNlck1vZGUpCiB7Ci0gICAgaWYgKENTU1ZhbHVlKiBsZW5ndGggPSBwYXJzZVNpbXBsZUxlbmd0
aFZhbHVlKHByb3BlcnR5SUQsIHN0cmluZywgcGFyc2VyTW9kZSkpCi0gICAgICAgIHJldHVybiBs
ZW5ndGg7CisgICAgUmVmUHRyPENTU1ZhbHVlPiByZXN1bHQgPSBwYXJzZVNpbXBsZUxlbmd0aFZh
bHVlKHByb3BlcnR5SUQsIHN0cmluZywgcGFyc2VyTW9kZSk7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICBpZiAoaXNDb2xvclByb3BlcnR5SUQocHJvcGVydHlJ
RCkpCiAgICAgICAgIHJldHVybiBwYXJzZUNvbG9yKHN0cmluZywgcGFyc2VyTW9kZSk7Ci0gICAg
aWYgKENTU1ZhbHVlKiBrZXl3b3JkID0gcGFyc2VLZXl3b3JkVmFsdWUocHJvcGVydHlJRCwgc3Ry
aW5nLCBwYXJzZXJNb2RlKSkKLSAgICAgICAgcmV0dXJuIGtleXdvcmQ7Ci0gICAgaWYgKENTU1Zh
bHVlKiB0cmFuc2Zvcm0gPSBwYXJzZVNpbXBsZVRyYW5zZm9ybShwcm9wZXJ0eUlELCBzdHJpbmcp
KQotICAgICAgICByZXR1cm4gdHJhbnNmb3JtOworICAgIHJlc3VsdCA9IHBhcnNlS2V5d29yZFZh
bHVlKHByb3BlcnR5SUQsIHN0cmluZywgcGFyc2VyTW9kZSk7CisgICAgaWYgKHJlc3VsdCkKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICByZXN1bHQgPSBwYXJzZVNpbXBsZVRyYW5zZm9ybShw
cm9wZXJ0eUlELCBzdHJpbmcpOworICAgIGlmIChyZXN1bHQpCisgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLSAgICAgKi8KIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VyRmFzdFBhdGhz
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJGYXN0
UGF0aHMuaAkocmV2aXNpb24gMjA1OTkwKQorKysgU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9D
U1NQYXJzZXJGYXN0UGF0aHMuaAkod29ya2luZyBjb3B5KQpAQCAtNDMsMTMgKzQzLDEzIEBAIGNs
YXNzIENTU1BhcnNlckZhc3RQYXRocyB7CiBwdWJsaWM6CiAgICAgLy8gUGFyc2VzIHNpbXBsZSB2
YWx1ZXMgbGlrZSAnMTBweCcgb3IgJ2dyZWVuJywgYnV0IG1ha2VzIG5vIGd1YXJhbnRlZXMKICAg
ICAvLyBhYm91dCBoYW5kbGluZyBhbnkgcHJvcGVydHkgY29tcGxldGVseS4KLSAgICBzdGF0aWMg
Q1NTVmFsdWUqIG1heWJlUGFyc2VWYWx1ZShDU1NQcm9wZXJ0eUlELCBjb25zdCBTdHJpbmcmLCBD
U1NQYXJzZXJNb2RlKTsKKyAgICBzdGF0aWMgUmVmUHRyPENTU1ZhbHVlPiBtYXliZVBhcnNlVmFs
dWUoQ1NTUHJvcGVydHlJRCwgY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9kZSk7CiAKICAgICAv
LyBQcm9wZXJ0aWVzIGhhbmRsZWQgaGVyZSBzaG91bGRuJ3QgYmUgZXhwbGljaXRseSBoYW5kbGVk
IGluIENTU1Byb3BlcnR5UGFyc2VyCiAgICAgc3RhdGljIGJvb2wgaXNLZXl3b3JkUHJvcGVydHlJ
RChDU1NQcm9wZXJ0eUlEKTsKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkS2V5d29yZFByb3BlcnR5
QW5kVmFsdWUoQ1NTUHJvcGVydHlJRCwgQ1NTVmFsdWVJRCwgQ1NTUGFyc2VyTW9kZSk7CiAKLSAg
ICBzdGF0aWMgQ1NTVmFsdWUqIHBhcnNlQ29sb3IoY29uc3QgU3RyaW5nJiwgQ1NTUGFyc2VyTW9k
ZSk7CisgICAgc3RhdGljIFJlZlB0cjxDU1NWYWx1ZT4gcGFyc2VDb2xvcihjb25zdCBTdHJpbmcm
LCBDU1NQYXJzZXJNb2RlKTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5jcHAJKHJldmlzaW9u
IDIwNTk5MCkKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUGFyc2VySWRpb21zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiY29uZmlnLmgi
CiAjaW5jbHVkZSAiQ1NTUGFyc2VySWRpb21zLmgiCisjaW5jbHVkZSAiQ1NTVmFsdWVLZXl3b3Jk
cy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ4LDQgKzQ5LDE2IEBAIHZvaWQgY29u
dmVydFRvQVNDSUlMb3dlcmNhc2VJblBsYWNlKFN0cmkKICAgICAgICAgV2ViQ29yZTo6Y29udmVy
dFRvQVNDSUlMb3dlcmNhc2VJblBsYWNlKGNvbnN0X2Nhc3Q8VUNoYXIqPihzdHJpbmdWaWV3LmNo
YXJhY3RlcnMxNigpKSwgc3RyaW5nVmlldy5sZW5ndGgoKSk7CiB9CiAKK2Jvb2wgaXNWYWx1ZUFs
bG93ZWRJbk1vZGUodW5zaWduZWQgc2hvcnQgaWQsIENTU1BhcnNlck1vZGUgbW9kZSkKK3sKKyAg
ICBzd2l0Y2ggKGlkKSB7CisgICAgY2FzZSBDU1NWYWx1ZUludGVybmFsVmFyaWFibGVWYWx1ZToK
KyAgICAgICAgcmV0dXJuIGlzVUFTaGVldEJlaGF2aW9yKG1vZGUpOworICAgIGNhc2UgQ1NTVmFs
dWVXZWJraXRGb2N1c1JpbmdDb2xvcjoKKyAgICAgICAgcmV0dXJuIGlzVUFTaGVldEJlaGF2aW9y
KG1vZGUpIHx8IGlzUXVpcmtzTW9kZUJlaGF2aW9yKG1vZGUpOworICAgIGRlZmF1bHQ6CisgICAg
ICAgIHJldHVybiB0cnVlOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRl
eDogU291cmNlL1dlYkNvcmUvY3NzL3BhcnNlci9DU1NQYXJzZXJJZGlvbXMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oCShyZXZpc2lv
biAyMDU5OTApCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAjaWZuZGVmIENTU1BhcnNlcklkaW9t
c19oCiAjZGVmaW5lIENTU1BhcnNlcklkaW9tc19oCiAKKyNpbmNsdWRlICJDU1NQYXJzZXJNb2Rl
LmgiCiAjaW5jbHVkZSA8d3RmL0FTQ0lJQ1R5cGUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg+CiAKQEAgLTYwLDYgKzYxLDggQEAgYm9vbCBpc05hbWVDb2RlUG9pbnQoQ2hhcmFj
dGVyVHlwZSBjKQogCiB2b2lkIGNvbnZlcnRUb0FTQ0lJTG93ZXJjYXNlSW5QbGFjZShTdHJpbmdW
aWV3Jik7CiAKK2Jvb2wgaXNWYWx1ZUFsbG93ZWRJbk1vZGUodW5zaWduZWQgc2hvcnQsIENTU1Bh
cnNlck1vZGUpOworICAgIAogfQogCiAjZW5kaWYK
</data>
<flag name="review"
          id="312258"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
      

    </bug>

</bugzilla>