<?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>164622</bug_id>
          
          <creation_ts>2016-11-10 15:34:05 -0800</creation_ts>
          <short_desc>[SVG] Start moving special casing of SVG out of the bindings - SVGPreserveAspectRatio</short_desc>
          <delta_ts>2016-11-13 18:49:47 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>164704</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1250010</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-10 15:34:05 -0800</bug_when>
    <thetext>[SVG] Start moving special casing of SVG out of the bindings - SVGPreserveAspectRatio</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250029</commentid>
    <comment_count>1</comment_count>
      <attachid>294431</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-10 16:01:58 -0800</bug_when>
    <thetext>Created attachment 294431
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250031</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 16:03:55 -0800</bug_when>
    <thetext>Attachment 294431 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp:119:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:45:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:49:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:50:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:51:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 15 in 25 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>1250128</commentid>
    <comment_count>3</comment_count>
      <attachid>294464</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-11-10 20:02:53 -0800</bug_when>
    <thetext>Created attachment 294464
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250129</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 20:04:48 -0800</bug_when>
    <thetext>Attachment 294464 did not pass style-queue:


ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp:119:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:35:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:36:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:37:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:38:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:39:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:40:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:41:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:42:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:43:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:44:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:45:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:49:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:50:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
ERROR: Source/WebCore/svg/SVGPreserveAspectRatioValue.h:51:  enum members should use InterCaps with an initial capital letter or initial &apos;k&apos; for C-style enums.  [readability/enum_casing] [4]
Total errors found: 15 in 26 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>1250147</commentid>
    <comment_count>5</comment_count>
      <attachid>294464</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-10 21:05:37 -0800</bug_when>
    <thetext>Comment on attachment 294464
Patch

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

Some comments on moved code.

&gt; Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp:188
&gt; +    case SVGPreserveAspectRatio::SVG_MEETORSLICE_UNKNOWN:

No need to repeat the class name here since this is inside a member function of that class. Same for all the other cases below.

&gt; Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp:273
&gt; +AffineTransform SVGPreserveAspectRatio::getCTM(float logicalX, float logicalY, float logicalWidth, float logicalHeight, float physicalWidth, float physicalHeight) const

Strange that this passes all the arguments as separate floats rather than FloatSize and FloatRect.

&gt; Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp:291
&gt; +    double extendedLogicalX = logicalX;
&gt; +    double extendedLogicalY = logicalY;
&gt; +    double extendedLogicalWidth = logicalWidth;
&gt; +    double extendedLogicalHeight = logicalHeight;
&gt; +    double extendedPhysicalWidth = physicalWidth;
&gt; +    double extendedPhysicalHeight = physicalHeight;
&gt; +    double logicalRatio = extendedLogicalWidth / extendedLogicalHeight;
&gt; +    double physicalRatio = extendedPhysicalWidth / extendedPhysicalHeight;

A bit peculiar to mix float and double like this.

&gt; Source/WebCore/svg/SVGPreserveAspectRatioValue.cpp:330
&gt; +        alignType = &quot;none&quot;;

ASCIILiteral?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250176</commentid>
    <comment_count>6</comment_count>
      <attachid>294464</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 22:32:50 -0800</bug_when>
    <thetext>Comment on attachment 294464
Patch

Clearing flags on attachment: 294464

Committed r208581: &lt;http://trac.webkit.org/changeset/208581&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250177</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 22:32:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294431</attachid>
            <date>2016-11-10 16:01:58 -0800</date>
            <delta_ts>2016-11-10 20:02:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164622-20161110155746.patch</filename>
            <type>text/plain</type>
            <size>88609</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE2LTExLTEwICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NWR10gU3RhcnQgbW92aW5nIHNwZWNp
YWwgY2FzaW5nIG9mIFNWRyBvdXQgb2YgdGhlIGJpbmRpbmdzIC0gU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
NjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFy
dCAyIG9mIG1vdmluZyBzcGVjaWFsIGNhc2luZyBvZiBTVkcgb3V0IG9mIHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29tcGls
ZVRpbWVDaGVja0ZvckVudW1zSWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgIEFsbG93IHNwZWNpZnlpbmcgYSBkaWZmZXJlbnQg
c2NvcGUgZm9yIHRoZSBjb25zdGFudHMgdG8gYmUgZGVjbGFyZWQgaW4uCisgICAgICAgIFRoaXMg
YWxsb3dzIHVzIHRvIGhhdmUgb25seSBvbmUgY29weSBvZiB0aGUgY29uc3RhbnRzIGluIHRoZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBvZiBTVkdBbmdsZS9TVkdBbmdsZVZhbHVlIGFuZCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5oOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgI2luY2x1ZGUuCisKKyAg
ICAgICAgKiBzdmcvU1ZHQW5nbGUuaDoKKyAgICAgICAgUmVtb3ZlIHJlZHVuZGFudCBlbnVtIGRl
Y2xhcmF0aW9uLgorCisgICAgICAgICogc3ZnL1NWR0FuZ2xlLmlkbDoKKyAgICAgICAgU3BlY2lm
eSBhIENvbnN0YW50c1Njb3BlIG9mIFNWR0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjp1cGRhdGVJbWFnZVZpZXdwb3J0KToKKyAgICAgICAgKiBzdmcvUGF0dGVybkF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm5BdHRyaWJ1dGVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm5BdHRyaWJ1dGVzOjpzZXRQcmVzZXJ2
ZUFzcGVjdFJhdGlvKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
b0FuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW8pOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6cHJlc2Vy
dmVBc3BlY3RSYXRpbyk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRU
b1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdGaXRU
b1ZpZXdCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NW
R1ZpZXdTcGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpsb29rdXBP
ckNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW9XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ZpZXdTcGVjOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cGFyc2VW
aWV3U3BlYyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpjb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgIFJlcGxhY2UgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbyB1c2FnZSB3aXRoIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS4KKworICAgICAg
ICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
dmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBzdmcvU1ZH
UHJlc2VydmVBc3BlY3RSYXRpby5pZGw6CisgICAgICAgICogc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmNwcC4KKyAgICAgICAgKiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmguCisgICAgICAgIFJlbmFtZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIHRvIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZSBhbmQgYWRkIGEgbmV3IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8K
KyAgICAgICAgdGhhdCBhY3RzIGFzIHRoZSBiaW5kaW5nIG9iamVjdC4gCisKIDIwMTYtMTEtMTAg
IEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIEluZGV4ZWREQiAy
LjAgU3VwcG9ydCB0aGUgSURCRGF0YWJhc2Uub25jbG9zZSBldmVudC4KSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtl
TGlzdHMudHh0CShyZXZpc2lvbiAyMDg1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3Rz
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjgwMiw3ICsyODAyLDcgQEAgc2V0KFdlYkNvcmVfU09V
UkNFUwogICAgIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHAKICAgICBzdmcvU1ZHUG9seWdvbkVsZW1l
bnQuY3BwCiAgICAgc3ZnL1NWR1BvbHlsaW5lRWxlbWVudC5jcHAKLSAgICBzdmcvU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5jcHAKKyAgICBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmNw
cAogICAgIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1JlY3RF
bGVtZW50LmNwcAogICAgIHN2Zy9TVkdTVkdFbGVtZW50LmNwcApJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA4
NTY4KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0yODc4LDYgKzI4NzgsNyBAQAogCQk3Qzc5NDFFNTFDNTZDMjkz
MDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M3OTQxRTMxQzU2QzI5MzAwQTRDNThFIC8q
IERhdGFEZXRlY3RvcnNDb3JlU29mdExpbmsuaCAqLzsgfTsKIAkJN0M4M0RFODYxRDA0Q0M1RDAw
RkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gN0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5o
ICovOyB9OwogCQk3QzhGMjI0NDFERDNDMkY2MDBFOTJEQTMgLyogU1ZHQW5nbGVWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzhGMjI0MjFE
RDNCM0I5MDBFOTJEQTMgLyogU1ZHQW5nbGVWYWx1ZS5jcHAgKi87IH07CisJCTdDOEYyMjQ3MURE
M0QxQ0EwMEU5MkRBMyAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M4RjIyNDUxREQzRDFDNTAw
RTkyREEzIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi87IH07CiAJCTdDOTNG
MzQ5MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5M0YzNDcxQUE2QkE1
RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgKi87IH07CiAJCTdDOTNG
MzRBMUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzQ4MUFBNkJBNUUw
MEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3QzkzRjM0RDFBQTZCRjA3MDBBOThCQUIg
LyogQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDdDOTNGMzRCMUFBNkJGMDcwMEE5OEJBQiAvKiBDb250ZW50
RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovOyB9OwpAQCAtNDY2Myw3ICs0NjY0LDYgQEAKIAkJQjIy
MjdBOTEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlnb25FbGVtZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGQjBEMDBCRjIxMDA3MUI3
ODIgLyogU1ZHUG9seWdvbkVsZW1lbnQuaCAqLzsgfTsKIAkJQjIyMjdBOTMwRDAwQkYyMjAwNzFC
NzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGRDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9seWxp
bmVFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjIyMjdBOTQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1Bv
bHlsaW5lRWxlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQjIyMjc4RkUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5oICov
OyB9OwotCQlCMjIyN0E5NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRp
by5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIy
NzkwMDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgKi87IH07
CiAJCUIyMjI3QTk3MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkwMTBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUIyMjI3QTk5MEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MDMwRDAwQkYyMTAwNzFCNzgyIC8qIFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgKi87IH07CiAJCUIyMjI3QTlBMEQwMEJGMjIwMDcx
Qjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OTA0MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuaCAqLzsgfTsKQEAgLTEwMzE1LDYgKzEwMzE1LDggQEAKIAkJ
N0M4M0RFODUxRDA0Q0JENDAwRkVCQ0YzIC8qIFNwcmluZ1NvbHZlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBTcHJpbmdTb2x2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJN0M4RjIyNDIxREQzQjNCOTAwRTkyREEzIC8qIFNWR0FuZ2xlVmFsdWUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5nbGVWYWx1ZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOEYyMjQzMUREM0IzQjkwMEU5MkRBMyAvKiBT
VkdBbmdsZVZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuZ2xl
VmFsdWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJN0M4RjIyNDUxREQzRDFDNTAw
RTkyREEzIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3QzhGMjI0NjFERDNEMUM1MDBFOTJEQTMgLyog
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk3QzkzRjM0NzFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbXBpbGVk
Q29udGVudEV4dGVuc2lvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNG
MzQ4MUFBNkJBNUUwMEE5OEJBQiAvKiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNGMzRCMUFBNkJGMDcwMEE5OEJBQiAvKiBD
b250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29udGVudEV4dGVuc2lvbkNvbXBpbGVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTEyNDI0LDcgKzEyNDI2LDYgQEAKIAkJQjIyMjc4RkQwRDAwQkYyMTAwNzFC
NzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gU1ZHUG9seWxpbmVFbGVtZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQjIyMjc4RkUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUG9seWxpbmVFbGVtZW50Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OEZGMEQwMEJGMjEwMDcxQjc4MiAv
KiBTVkdQb2x5bGluZUVsZW1lbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdQb2x5
bGluZUVsZW1lbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCMjIyNzkwMDBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTAxMEQwMEJGMjEwMDcxQjc4MiAvKiBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUIyMjI3OTAyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmlkbCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUIyMjI3OTAzMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMTE4NCw5ICsyMTE4NSwxMCBAQAogCQkJCUIyMjI3OEZEMEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdQb2x5bGluZUVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OEZFMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdQb2x5bGluZUVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzhGRjBEMDBCRjIx
MDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmlkbCAqLywKLQkJCQlCMjIyNzkwMDBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5jcHAgKi8sCiAJCQkJQjIyMjc5
MDEwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLywKIAkJCQlC
MjIyNzkwMjBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5pZGwgKi8s
CisJCQkJN0M4RjIyNDUxREQzRDFDNTAwRTkyREEzIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZS5jcHAgKi8sCisJCQkJN0M4RjIyNDYxREQzRDFDNTAwRTkyREEzIC8qIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZS5oICovLAogCQkJCUIyMjI3OTAzMEQwMEJGMjEwMDcxQjc4MiAvKiBT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwICovLAogCQkJCUIyMjI3OTA0MEQwMEJGMjEwMDcx
Qjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuaCAqLywKIAkJCQlCMjIyNzkwNTBEMDBC
RjIxMDA3MUI3ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmlkbCAqLywKQEAgLTI4Njk5
LDYgKzI4NzAxLDcgQEAKIAkJCQkxQzA5MzlFQTFBMTNFMTI5MDBCNzg4RTUgLyogQ2FjaGVkU1ZH
Rm9udC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwNzUzODYwMjE0NDg5RTk4MDBCNzg0NTIgLyog
Q2FjaGVkVGV4dFRyYWNrLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDQjE2QzI3MDk3OUMzQkQw
MDQ2Nzc0MSAvKiBDYWNoZWRYU0xTdHlsZVNoZWV0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTdD
OEYyMjQ3MUREM0QxQ0EwMEU5MkRBMyAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJRTQzQUY4RTYxQUM1QjdFODAwQ0E3MTdFIC8qIENhY2hlVmFs
aWRhdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0OUFFMkQ5NjEzNEVFNUY5MDA3MjkyMEEg
LyogQ2FsY3VsYXRpb25WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMTgyNzQ5MzEzNENB
NEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlvbi5jcHAgaW4gU291cmNlcyAqLywKQEAgLTMx
MjY5LDcgKzMxMjcyLDYgQEAKIAkJCQlCMjIyN0E4RTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9s
eUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQjIyMjdBOTAwRDAwQkYyMjAwNzFCNzgy
IC8qIFNWR1BvbHlnb25FbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3QTkzMEQw
MEJGMjIwMDcxQjc4MiAvKiBTVkdQb2x5bGluZUVsZW1lbnQuY3BwIGluIFNvdXJjZXMgKi8sCi0J
CQkJQjIyMjdBOTYwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQjU0M0I4NTcxN0VCNzU4RjAwM0JFOTNBIC8qIFNWR1Byb3Bl
cnR5SW5mby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIyN0E5OTBEMDBCRjIyMDA3MUI3ODIg
LyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
QTlEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSZWN0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3IucG0JKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvci5wbQkod29ya2luZyBjb3B5KQpAQCAtMTI3LDcgKzEyNyw2IEBAIG15
ICVzdmdUeXBlTmVlZGluZ1RlYXJPZmYgPSAoCiAgICAgIlNWR1BhdGhTZWdMaXN0IiA9PiAiU1ZH
UGF0aFNlZ0xpc3RQcm9wZXJ0eVRlYXJPZmYiLAogICAgICJTVkdQb2ludCIgPT4gIlNWR1Byb3Bl
cnR5VGVhck9mZjxTVkdQb2ludD4iLAogICAgICJTVkdQb2ludExpc3QiID0+ICJTVkdMaXN0UHJv
cGVydHlUZWFyT2ZmPFNWR1BvaW50TGlzdD4iLAotICAgICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
IiA9PiAiU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IiwKICAgICAi
U1ZHUmVjdCIgPT4gIlNWR1Byb3BlcnR5VGVhck9mZjxGbG9hdFJlY3Q+IiwKICAgICAiU1ZHU3Ry
aW5nTGlzdCIgPT4gIlNWR1N0YXRpY0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHU3RyaW5nTGlzdD4i
LAogICAgICJTVkdUcmFuc2Zvcm0iID0+ICJTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHVHJhbnNmb3Jt
PiIsCkBAIC0xMTI3LDE0ICsxMTI2LDE2IEBAIHN1YiBHZW5lcmF0ZUNvbXBpbGVUaW1lQ2hlY2tG
b3JFbnVtc0lmTmUKIAogICAgIHJldHVybiAoKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJp
YnV0ZXMtPnsiRG9Ob3RDaGVja0NvbnN0YW50cyJ9IHx8ICFAeyRpbnRlcmZhY2UtPmNvbnN0YW50
c307CiAKKyAgICBteSAkYmFzZVNjb3BlID0gJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVz
LT57IkNvbnN0YW50c1Njb3BlIn0gfHwgJGludGVyZmFjZS0+dHlwZS0+bmFtZTsKKwogICAgIG15
IEBjaGVja3MgPSAoKTsKICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskaW50ZXJmYWNlLT5j
b25zdGFudHN9KSB7Ci0gICAgICAgIG15ICRjbGFzc05hbWUgPSAkY29uc3RhbnQtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gfHwgJGludGVyZmFjZS0+dHlwZS0+bmFtZTsK
KyAgICAgICAgbXkgJHNjb3BlID0gJGNvbnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiSW1w
bGVtZW50ZWRCeSJ9IHx8ICRiYXNlU2NvcGU7CiAgICAgICAgIG15ICRuYW1lID0gJGNvbnN0YW50
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiUmVmbGVjdCJ9IHx8ICRjb25zdGFudC0+bmFtZTsKICAg
ICAgICAgbXkgJHZhbHVlID0gJGNvbnN0YW50LT52YWx1ZTsKICAgICAgICAgbXkgJGNvbmRpdGlv
bmFsID0gJGNvbnN0YW50LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uZGl0aW9uYWwifTsKICAg
ICAgICAgcHVzaChAY2hlY2tzLCAiI2lmICIgLiAkZ2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlv
bmFsU3RyaW5nRnJvbUF0dHJpYnV0ZVZhbHVlKCRjb25kaXRpb25hbCkgLiAiXG4iKSBpZiAkY29u
ZGl0aW9uYWw7Ci0gICAgICAgIHB1c2goQGNoZWNrcywgInN0YXRpY19hc3NlcnQoJHtjbGFzc05h
bWV9OjokbmFtZSA9PSAkdmFsdWUsIFwiJG5hbWUgaW4gJGNsYXNzTmFtZSBkb2VzIG5vdCBtYXRj
aCB2YWx1ZSBmcm9tIElETFwiKTtcbiIpOworICAgICAgICBwdXNoKEBjaGVja3MsICJzdGF0aWNf
YXNzZXJ0KCR7c2NvcGV9Ojoke25hbWV9ID09ICR7dmFsdWV9LCBcIiR7bmFtZX0gaW4gJHtzY29w
ZX0gZG9lcyBub3QgbWF0Y2ggdmFsdWUgZnJvbSBJRExcIik7XG4iKTsKICAgICAgICAgcHVzaChA
Y2hlY2tzLCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWw7CiAgICAgfQogICAgIHB1c2goQGNo
ZWNrcywgIlxuIik7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0lETEF0
dHJpYnV0ZXMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvSURMQXR0cmlidXRlcy50eHQJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5
LDYgKzI5LDcgQEAgQ2hlY2tTZWN1cml0eQogQ2hlY2tTZWN1cml0eUZvck5vZGUKIENsYW1wCiBD
b25kaXRpb25hbD0qCitDb25zdGFudHNTY29wZT0qCiBDb25zdHJ1Y3RvcgogQ29uc3RydWN0b3JD
YWxsV2l0aD1Eb2N1bWVudHxTY3JpcHRFeGVjdXRpb25Db250ZXh0fFNjcmlwdFN0YXRlCiBDb25z
dHJ1Y3Rvck1heVRocm93RXhjZXB0aW9uCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw3ICsxMDEsNiBAQAogI2luY2x1ZGUg
IlNWR0RvY3VtZW50LmgiCiAjaW5jbHVkZSAiU1ZHTG9jYXRhYmxlLmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAi
U1ZHVmlld0VsZW1lbnQuaCIKICNpbmNsdWRlICJTVkdWaWV3U3BlYy5oIgogI2luY2x1ZGUgIlNj
aGVtZVJlZ2lzdHJ5LmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gMjA4NTY4KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTczLDcg
KzczLDcgQEAgYm9vbCBSZW5kZXJTVkdJbWFnZTo6dXBkYXRlSW1hZ2VWaWV3cG9ydAogICAgIC8v
IEltYWdlcyB3aXRoIHByZXNlcnZlQXNwZWN0UmF0aW89bm9uZSBzaG91bGQgZm9yY2Ugbm9uLXVu
aWZvcm0gc2NhbGluZy4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQKICAgICAvLyBieSBzZXR0aW5nIHRo
ZSBpbWFnZSdzIGNvbnRhaW5lciBzaXplIHRvIGl0cyBpbnRyaW5zaWMgc2l6ZS4KICAgICAvLyBT
ZWU6IGh0dHA6Ly93d3cudzMub3JnL1RSL1NWRy9zaW5nbGUtcGFnZS5odG1sLCA3LjggVGhlIOKA
mHByZXNlcnZlQXNwZWN0UmF0aW/igJkgYXR0cmlidXRlLgotICAgIGlmIChpbWFnZUVsZW1lbnQo
KS5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSA9PSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
OjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKSB7CisgICAgaWYgKGltYWdlRWxlbWVudCgp
LnByZXNlcnZlQXNwZWN0UmF0aW8oKS5hbGlnbigpID09IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkgewogICAgICAgICBpZiAoQ2FjaGVk
SW1hZ2UqIGNhY2hlZEltYWdlID0gaW1hZ2VSZXNvdXJjZSgpLmNhY2hlZEltYWdlKCkpIHsKICAg
ICAgICAgICAgIExheW91dFNpemUgaW50cmluc2ljU2l6ZSA9IGNhY2hlZEltYWdlLT5pbWFnZVNp
emVGb3JSZW5kZXJlcigwLCBzdHlsZSgpLmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgICAgICBp
ZiAoaW50cmluc2ljU2l6ZSAhPSBpbWFnZVJlc291cmNlKCkuaW1hZ2VTaXplKHN0eWxlKCkuZWZm
ZWN0aXZlWm9vbSgpKSkgewpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHSW1hZ2UuaAkocmV2aXNpb24gMjA4NTY4KQorKysgU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw2
IEBACiAjaW5jbHVkZSAiQWZmaW5lVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU1ZHTW9kZWxPYmplY3QuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1BhdHRlcm5BdHRyaWJ1dGVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1BhdHRlcm5BdHRyaWJ1dGVzLmgJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9QYXR0ZXJuQXR0cmlidXRlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw3ICs1
Niw3IEBAIHN0cnVjdCBQYXR0ZXJuQXR0cmlidXRlcyB7CiAgICAgU1ZHTGVuZ3RoIHdpZHRoKCkg
Y29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQogICAgIFNWR0xlbmd0aCBoZWlnaHQoKSBjb25zdCB7
IHJldHVybiBtX2hlaWdodDsgfQogICAgIEZsb2F0UmVjdCB2aWV3Qm94KCkgY29uc3QgeyByZXR1
cm4gbV92aWV3Qm94OyB9Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVj
dFJhdGlvKCkgY29uc3QgeyByZXR1cm4gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvOyB9CisgICAgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIHByZXNlcnZlQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJl
dHVybiBtX3ByZXNlcnZlQXNwZWN0UmF0aW87IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIHBhdHRlcm5Vbml0cygpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVyblVuaXRzOyB9CiAgICAg
U1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBwYXR0ZXJuQ29udGVudFVuaXRzKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXR0ZXJuQ29udGVudFVuaXRzOyB9CiAgICAgQWZmaW5lVHJhbnNmb3JtIHBhdHRl
cm5UcmFuc2Zvcm0oKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5UcmFuc2Zvcm07IH0KQEAgLTky
LDcgKzkyLDcgQEAgc3RydWN0IFBhdHRlcm5BdHRyaWJ1dGVzIHsKICAgICAgICAgbV92aWV3Qm94
U2V0ID0gdHJ1ZTsKICAgICB9CiAKLSAgICB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW8oY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgdmFsdWUpCisgICAgdm9pZCBzZXRQcmVzZXJ2ZUFz
cGVjdFJhdGlvKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgdmFsdWUpCiAgICAg
ewogICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8gPSB2YWx1ZTsKICAgICAgICAgbV9wcmVz
ZXJ2ZUFzcGVjdFJhdGlvU2V0ID0gdHJ1ZTsKQEAgLTE0MCw3ICsxNDAsNyBAQCBwcml2YXRlOgog
ICAgIFNWR0xlbmd0aCBtX3dpZHRoOwogICAgIFNWR0xlbmd0aCBtX2hlaWdodDsKICAgICBGbG9h
dFJlY3QgbV92aWV3Qm94OwotICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gbV9wcmVzZXJ2ZUFz
cGVjdFJhdGlvOworICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSBtX3ByZXNlcnZlQXNw
ZWN0UmF0aW87CiAgICAgU1ZHVW5pdFR5cGVzOjpTVkdVbml0VHlwZSBtX3BhdHRlcm5Vbml0czsK
ICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIG1fcGF0dGVybkNvbnRlbnRVbml0czsKICAg
ICBBZmZpbmVUcmFuc2Zvcm0gbV9wYXR0ZXJuVHJhbnNmb3JtOwpJbmRleDogU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuZ2xlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
Z2xlLmgJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0zMiwxNiArMzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIFNWR0FuZ2xlIDogcHVibGljIFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVl
PiB7CiBwdWJsaWM6Ci0gICAgLy8gRklYTUU6IFRoaXMgaXMgZHVwbGljYXRlZCBpbiBTVkdBbmds
ZVZhbHVlLiBXZSBzaG91bGQgZmluZCBzb21ld2F5IHRvIGhhdmUKLSAgICAvLyBvbmx5IG9uZSBj
b3B5LCBidXQgZm9yIG5vdywgdGhpcyBvbmUgaXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlIGJpbmRp
bmdzLgotICAgIGVudW0gU1ZHQW5nbGVUeXBlIHsKLSAgICAgICAgU1ZHX0FOR0xFVFlQRV9VTktO
T1dOID0gMCwKLSAgICAgICAgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRCA9IDEsCi0gICAgICAg
IFNWR19BTkdMRVRZUEVfREVHID0gMiwKLSAgICAgICAgU1ZHX0FOR0xFVFlQRV9SQUQgPSAzLAot
ICAgICAgICBTVkdfQU5HTEVUWVBFX0dSQUQgPSA0Ci0gICAgfTsKLQogICAgIHN0YXRpYyBSZWY8
U1ZHQW5nbGU+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBT
VkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHQW5nbGVWYWx1ZSYgdmFsdWUpCiAgICAgewogICAgICAg
ICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0eSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5nbGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwJ
KHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTIwLDcgKzIwLDkgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgogICovCiAKLWludGVyZmFjZSBTVkdBbmdsZSB7IAorWworICAgIENvbnN0YW50c1Njb3Bl
PVNWR0FuZ2xlVmFsdWUKK10gaW50ZXJmYWNlIFNWR0FuZ2xlIHsgCiAgICAgLy8gQW5nbGUgVW5p
dCBUeXBlcwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19BTkdMRVRZUEVfVU5LTk9XTiA9
IDA7CiAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRCA9
IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2aXNpb24gMjA4NTY4KQorKysgU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpby5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMxLDcgKzMxLDcgQEAgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6Ogog
CiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW9BbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZykKIHsKLSAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUHJl
c2VydmVBc3BlY3RSYXRpbyhzdGQ6Om1ha2VfdW5pcXVlPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+
KCkpOworICAgIGF1dG8gYW5pbWF0ZWRUeXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQcmVz
ZXJ2ZUFzcGVjdFJhdGlvKHN0ZDo6bWFrZV91bmlxdWU8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlPigpKTsKICAgICBhbmltYXRlZFR5cGUtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS5wYXJzZShz
dHJpbmcpOwogICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CkBAIC03MSwxMSArNzEsMTEgQEAg
dm9pZCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYQogICAgIEFTU0VSVChtX2Fu
aW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIGNv
bnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIGZyb21QcmVzZXJ2ZUFzcGVjdFJhdGlvID0gbV9h
bmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRl
ZC0+cHJlc2VydmVBc3BlY3RSYXRpbygpIDogZnJvbS0+cHJlc2VydmVBc3BlY3RSYXRpbygpOwot
ICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHRvUHJlc2VydmVBc3BlY3RSYXRpbyA9
IHRvLT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYg
YW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gYW5pbWF0ZWQtPnByZXNlcnZlQXNwZWN0UmF0
aW8oKTsKKyAgICBjb25zdCBhdXRvJiBmcm9tUHJlc2VydmVBc3BlY3RSYXRpbyA9IG1fYW5pbWF0
aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPnBy
ZXNlcnZlQXNwZWN0UmF0aW8oKSA6IGZyb20tPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBj
b25zdCBhdXRvJiB0b1ByZXNlcnZlQXNwZWN0UmF0aW8gPSB0by0+cHJlc2VydmVBc3BlY3RSYXRp
bygpOworICAgIGF1dG8mIGFuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbyA9IGFuaW1hdGVkLT5w
cmVzZXJ2ZUFzcGVjdFJhdGlvKCk7CiAKLSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVE
aXNjcmV0ZVR5cGU8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4ocGVyY2VudGFnZSwgZnJvbVByZXNl
cnZlQXNwZWN0UmF0aW8sIHRvUHJlc2VydmVBc3BlY3RSYXRpbywgYW5pbWF0ZWRQcmVzZXJ2ZUFz
cGVjdFJhdGlvKTsKKyAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVEaXNjcmV0ZVR5cGU8
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPihwZXJjZW50YWdlLCBmcm9tUHJlc2VydmVBc3Bl
Y3RSYXRpbywgdG9QcmVzZXJ2ZUFzcGVjdFJhdGlvLCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8pOwogfQogCiBmbG9hdCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6
Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJikKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmgJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8uaAkod29ya2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDExIEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IAogY2xhc3MgU1ZHUHJvcGVy
dHlUZWFyT2ZmOwogCi11c2luZyBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBTVkdB
bmltYXRlZFByb3BlcnR5VGVhck9mZjxTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbz4+OwordXNpbmcgU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gU1ZHQW5p
bWF0ZWRQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz47CiAKIC8vIEhlbHBl
ciBtYWNyb3MgdG8gZGVjbGFyZS9kZWZpbmUgYSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW8gb2JqZWN0CiAjZGVmaW5lIERFQ0xBUkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhV
cHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCi1ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
KFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywg
VXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgKQorREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSwgKQogCiAjZGVmaW5lIERFRklORV9B
TklNQVRFRF9QUkVTRVJWRUFTUEVDVFJBVElPKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCiBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0
cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHAJKHJldmlzaW9uIDIwODU2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0xOTQsNyArMTk0LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5p
bQogICAgIHJldHVybiBhbmltYXRlZFR5cGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhzdGQ6
OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gcHJlc2VydmVBc3BlY3RSYXRpbykK
K3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRl
UHJlc2VydmVBc3BlY3RSYXRpbyhzdGQ6OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlPiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewogICAgIEFTU0VSVChwcmVzZXJ2ZUFzcGVj
dFJhdGlvKTsKICAgICBhdXRvIGFuaW1hdGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5p
bWF0ZWRUeXBlPihBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFR5cGUuaAkocmV2aXNpb24gMjA4NTY4KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBA
CiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgogI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIK
ICNpbmNsdWRlICJTVkdQb2ludExpc3QuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmgiCisjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVk
ZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAjaW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCkBA
IC01NCw3ICs1NCw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVyT3B0aW9uYWxOdW1iZXIoc3RkOjp1bmlxdWVfcHRyPHN0
ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+Pik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdB
bmltYXRlZFR5cGU+IGNyZWF0ZVBhdGgoc3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFt
Pik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBv
aW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8U1ZHUG9pbnRMaXN0Pik7Ci0gICAgc3RhdGljIHN0ZDo6
dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW8oc3Rk
Ojp1bmlxdWVfcHRyPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+KTsKKyAgICBzdGF0aWMgc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhzdGQ6
OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPik7CiAgICAgc3RhdGljIHN0
ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVJlY3Qoc3RkOjp1bmlxdWVfcHRy
PEZsb2F0UmVjdD4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBl
PiBjcmVhdGVTdHJpbmcoc3RkOjp1bmlxdWVfcHRyPFN0cmluZz4pOwogICAgIHN0YXRpYyBzdGQ6
OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVUcmFuc2Zvcm1MaXN0KHN0ZDo6dW5p
cXVlX3B0cjxTVkdUcmFuc2Zvcm1MaXN0Pik7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gKm1fZGF0YS5wb2ludExpc3Q7CiAgICAgfQogCi0gICAgY29uc3QgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbygpIGNvbnN0CisgICAgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkgY29u
c3QKICAgICB7CiAgICAgICAgIEFTU0VSVChtX3R5cGUgPT0gQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVj
dFJhdGlvKTsKICAgICAgICAgcmV0dXJuICptX2RhdGEucHJlc2VydmVBc3BlY3RSYXRpbzsKQEAg
LTI0NCw3ICsyNDQsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiAqbV9kYXRhLnBvaW50TGlz
dDsKICAgICB9CiAKLSAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKCkKKyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0
aW8oKQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fdHlwZSA9PSBBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8pOwogICAgICAgICByZXR1cm4gKm1fZGF0YS5wcmVzZXJ2ZUFzcGVjdFJhdGlvOwpA
QCAtMjkyLDcgKzI5Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIFNWR051bWJlckxpc3QqIG51bWJl
ckxpc3Q7CiAgICAgICAgIHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+KiBudW1iZXJPcHRpb25hbE51
bWJlcjsKICAgICAgICAgU1ZHUGF0aEJ5dGVTdHJlYW0qIHBhdGg7Ci0gICAgICAgIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8qIHByZXNlcnZlQXNwZWN0UmF0aW87CisgICAgICAgIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZSogcHJlc2VydmVBc3BlY3RSYXRpbzsKICAgICAgICAgU1ZHUG9pbnRM
aXN0KiBwb2ludExpc3Q7CiAgICAgICAgIEZsb2F0UmVjdCogcmVjdDsKICAgICAgICAgU3RyaW5n
KiBzdHJpbmc7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVu
dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJP
YmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR05h
bWVzLmgiCi0jaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oIgorI2luY2x1ZGUgIlNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAog
bmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc28KIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFs
dWUpCiB7CiAgICAgaWYgKG5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRy
KSB7Ci0gICAgICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsK
KyAgICAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIHByZXNlcnZlQXNwZWN0UmF0aW87
CiAgICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW8ucGFyc2UodmFsdWUpOwogICAgICAgICBzZXRQ
cmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKHByZXNlcnZlQXNwZWN0UmF0aW8pOwogICAgICAg
ICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2
aXNpb24gMjA4NTY4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4
dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0
aWxpdGllcy5oIgotI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKKyNpbmNsdWRl
ICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBT
VkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmlld0JveChEb2N1bQogICAgIHJldHVybiB0cnVlOwogfQog
Ci1BZmZpbmVUcmFuc2Zvcm0gU1ZHRml0VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3Jt
KGNvbnN0IEZsb2F0UmVjdCYgdmlld0JveFJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8sIGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdo
dCkKK0FmZmluZVRyYW5zZm9ybSBTVkdGaXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zv
cm0oY29uc3QgRmxvYXRSZWN0JiB2aWV3Qm94UmVjdCwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvLCBmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZp
ZXdIZWlnaHQpCiB7CiAgICAgaWYgKCF2aWV3Qm94UmVjdC53aWR0aCgpIHx8ICF2aWV3Qm94UmVj
dC5oZWlnaHQoKSB8fCAhdmlld1dpZHRoIHx8ICF2aWV3SGVpZ2h0KQogICAgICAgICByZXR1cm4g
QWZmaW5lVHJhbnNmb3JtKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3
Qm94LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5o
CShyZXZpc2lvbiAyMDg1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94
LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiAKIGNs
YXNzIFNWR0ZpdFRvVmlld0JveCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIEFmZmluZVRyYW5zZm9y
bSB2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGNvbnN0IEZsb2F0UmVjdCYgdmlld0JveFJlY3QsIGNv
bnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mLCBmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdI
ZWlnaHQpOworICAgIHN0YXRpYyBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9y
bShjb25zdCBGbG9hdFJlY3QmIHZpZXdCb3hSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUmLCBmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpOwogCiAgICAgc3Rh
dGljIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgc3Rh
dGljIHZvaWQgYWRkU3VwcG9ydGVkQXR0cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7
CkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewotICAgICAgICAgICAgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOworICAgICAgICAgICAgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIHByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgICAgICAg
ICBwcmVzZXJ2ZUFzcGVjdFJhdGlvLnBhcnNlKHZhbHVlKTsKICAgICAgICAgICAgIHRhcmdldC0+
c2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgU1ZHSW1h
Z2VFbGVtZW50Ojppc1N1cHBvcnRlZEF0dHJpYnUKIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcm
IHZhbHVlKQogewogICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlv
QXR0cikgewotICAgICAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0
aW87CisgICAgICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSBwcmVzZXJ2ZUFzcGVjdFJh
dGlvOwogICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvLnBhcnNlKHZhbHVlKTsKICAgICAgICAg
c2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKICAg
ICAgICAgcmV0dXJuOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmNwcAkocmV2aXNpb24gMjA4NTY4KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCShub25leGlzdGVudCkKQEAgLTEsMzc1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5u
IDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYs
IDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBEaXJr
IFNjaHVsemUgPGtyaXRAd2Via2l0Lm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
KiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy
IHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl
IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp
dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09Q
WUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBN
QSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUg
IlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5o
IgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNp
bmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdW
aWV3Lmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbygpCi0gICAgOiBtX2FsaWduKFNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSURZTUlEKQotICAgICwgbV9tZWV0T3JTbGljZShTVkdfTUVFVE9SU0xJQ0VfTUVF
VCkKLXsKLX0KLQotRXhjZXB0aW9uT3I8dm9pZD4gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6c2V0
QWxpZ24odW5zaWduZWQgc2hvcnQgYWxpZ24pCi17Ci0gICAgaWYgKGFsaWduID09IFNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX1VOS05PV04gfHwgYWxpZ24gPiBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19YTUFYWU1BWCkKLSAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJS
IH07Ci0KLSAgICBtX2FsaWduID0gc3RhdGljX2Nhc3Q8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1R5
cGU+KGFsaWduKTsKLSAgICByZXR1cm4geyB9OwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvOjpzZXRNZWV0T3JTbGljZSh1bnNpZ25lZCBzaG9ydCBtZWV0T3JT
bGljZSkKLXsKLSAgICBpZiAobWVldE9yU2xpY2UgPT0gU1ZHX01FRVRPUlNMSUNFX1VOS05PV04g
fHwgbWVldE9yU2xpY2UgPiBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0UpCi0gICAgICAgIHJldHVybiBF
eGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OwotCi0gICAgbV9tZWV0T3JTbGljZSA9IHN0
YXRpY19jYXN0PFNWR01lZXRPclNsaWNlVHlwZT4obWVldE9yU2xpY2UpOwotICAgIHJldHVybiB7
IH07Ci19Ci0KLXZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2UoY29uc3QgU3RyaW5n
JiB2YWx1ZSkKLXsKLSAgICBhdXRvIHVwY29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXco
dmFsdWUpLnVwY29udmVydGVkQ2hhcmFjdGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9
IHVwY29udmVydGVkQ2hhcmFjdGVyczsKLSAgICBwYXJzZUludGVybmFsKGJlZ2luLCBiZWdpbiAr
IHZhbHVlLmxlbmd0aCgpLCB0cnVlKTsKLX0KLQotYm9vbCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
OjpwYXJzZShjb25zdCBVQ2hhciomIGN1cnJQYXJhbSwgY29uc3QgVUNoYXIqIGVuZCwgYm9vbCB2
YWxpZGF0ZSkKLXsKLSAgICByZXR1cm4gcGFyc2VJbnRlcm5hbChjdXJyUGFyYW0sIGVuZCwgdmFs
aWRhdGUpOwotfQotCi1ib29sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnBhcnNlSW50ZXJuYWwo
Y29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUp
Ci17Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1R5cGUgYWxpZ24gPSBTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUlEWU1JRDsKLSAgICBTVkdNZWV0T3JTbGljZVR5cGUgbWVldE9yU2xpY2Ug
PSBTVkdfTUVFVE9SU0xJQ0VfTUVFVDsKLQotICAgIG1fYWxpZ24gPSBhbGlnbjsKLSAgICBtX21l
ZXRPclNsaWNlID0gbWVldE9yU2xpY2U7Ci0KLSAgICBpZiAoIXNraXBPcHRpb25hbFNWR1NwYWNl
cyhjdXJyUGFyYW0sIGVuZCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgqY3Vy
clBhcmFtID09ICdkJykgewotICAgICAgICBpZiAoIXNraXBTdHJpbmcoY3VyclBhcmFtLCBlbmQs
ICJkZWZlciIpKSB7Ci0gICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwZWQgdG8gcGFyc2UgZXhj
ZXB0IGZvciAqZGVmZXIqIHZhbHVlLiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9Ci0KLSAgICAgICAgLy8gRklYTUU6IFdlIGp1c3QgaWdub3JlIHRoZSAiZGVmZXIiIGhl
cmUuCi0gICAgICAgIGlmIChjdXJyUGFyYW0gPT0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0KLSAgICAgICAgaWYgKCFza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyclBhcmFtLCBlbmQp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmICgqY3VyclBhcmFt
ID09ICduJykgewotICAgICAgICBpZiAoIXNraXBTdHJpbmcoY3VyclBhcmFtLCBlbmQsICJub25l
IikpIHsKLSAgICAgICAgICAgIExPR19FUlJPUigiU2tpcHBlZCB0byBwYXJzZSBleGNlcHQgZm9y
ICpub25lKiB2YWx1ZS4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQot
ICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkU7Ci0gICAgICAgIHNr
aXBPcHRpb25hbFNWR1NwYWNlcyhjdXJyUGFyYW0sIGVuZCk7Ci0gICAgfSBlbHNlIGlmICgqY3Vy
clBhcmFtID09ICd4JykgewotICAgICAgICBpZiAoKGVuZCAtIGN1cnJQYXJhbSkgPCA4KQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBpZiAoY3VyclBhcmFtWzFdICE9ICdNJyB8
fCBjdXJyUGFyYW1bNF0gIT0gJ1knIHx8IGN1cnJQYXJhbVs1XSAhPSAnTScpCi0gICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGlmIChjdXJyUGFyYW1bMl0gPT0gJ2knKSB7Ci0gICAg
ICAgICAgICBpZiAoY3VyclBhcmFtWzNdID09ICduJykgewotICAgICAgICAgICAgICAgIGlmIChj
dXJyUGFyYW1bNl0gPT0gJ2knKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjdXJyUGFyYW1b
N10gPT0gJ24nKQotICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUlOWU1JTjsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VyclBh
cmFtWzddID09ICdkJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JTllNSUQ7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2Ug
aWYgKGN1cnJQYXJhbVs2XSA9PSAnYScgJiYgY3VyclBhcmFtWzddID09ICd4JykKLSAgICAgICAg
ICAgICAgICAgICAgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDsKLSAg
ICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJQYXJhbVszXSA9PSAnZCcpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoY3VyclBhcmFtWzZdID09ICdpJykgewotICAgICAgICAgICAgICAgICAgICBpZiAo
Y3VyclBhcmFtWzddID09ICduJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1ZH
X1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU47Ci0gICAgICAgICAgICAgICAgICAgIGVsc2Ug
aWYgKGN1cnJQYXJhbVs3XSA9PSAnZCcpCi0gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiA9
IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOwotICAgICAgICAgICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAg
ICAgfSBlbHNlIGlmIChjdXJyUGFyYW1bNl0gPT0gJ2EnICYmIGN1cnJQYXJhbVs3XSA9PSAneCcp
Ci0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1J
RFlNQVg7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0gZWxzZSBpZiAoY3VyclBhcmFtWzJdID09ICdhJyAmJiBjdXJyUGFyYW1bM10g
PT0gJ3gnKSB7Ci0gICAgICAgICAgICBpZiAoY3VyclBhcmFtWzZdID09ICdpJykgewotICAgICAg
ICAgICAgICAgIGlmIChjdXJyUGFyYW1bN10gPT0gJ24nKQotICAgICAgICAgICAgICAgICAgICBh
bGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOOwotICAgICAgICAgICAgICAg
IGVsc2UgaWYgKGN1cnJQYXJhbVs3XSA9PSAnZCcpCi0gICAgICAgICAgICAgICAgICAgIGFsaWdu
ID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ7Ci0gICAgICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2Ug
aWYgKGN1cnJQYXJhbVs2XSA9PSAnYScgJiYgY3VyclBhcmFtWzddID09ICd4JykKLSAgICAgICAg
ICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGN1cnJQYXJhbSArPSA4OwotICAg
ICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyclBhcmFtLCBlbmQpOwotICAgIH0gZWxzZQot
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBpZiAoY3VyclBhcmFtIDwgZW5kKSB7Ci0gICAg
ICAgIGlmICgqY3VyclBhcmFtID09ICdtJykgewotICAgICAgICAgICAgaWYgKCFza2lwU3RyaW5n
KGN1cnJQYXJhbSwgZW5kLCAibWVldCIpKSB7Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJT
a2lwcGVkIHRvIHBhcnNlIGV4Y2VwdCBmb3IgKm1lZXQqIG9yICpzbGljZSogdmFsdWUuIik7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
c2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJQYXJhbSwgZW5kKTsKLSAgICAgICAgfSBlbHNlIGlm
ICgqY3VyclBhcmFtID09ICdzJykgewotICAgICAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJQ
YXJhbSwgZW5kLCAic2xpY2UiKSkgewotICAgICAgICAgICAgICAgIExPR19FUlJPUigiU2tpcHBl
ZCB0byBwYXJzZSBleGNlcHQgZm9yICptZWV0KiBvciAqc2xpY2UqIHZhbHVlLiIpOwotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNraXBP
cHRpb25hbFNWR1NwYWNlcyhjdXJyUGFyYW0sIGVuZCk7Ci0gICAgICAgICAgICBpZiAoYWxpZ24g
IT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkKLSAgICAgICAgICAgICAgICBtZWV0T3JT
bGljZSA9IFNWR19NRUVUT1JTTElDRV9TTElDRTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlm
IChlbmQgIT0gY3VyclBhcmFtICYmIHZhbGlkYXRlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBtX2FsaWduID0gYWxpZ247Ci0gICAgbV9tZWV0T3JTbGljZSA9IG1lZXRPclNsaWNlOwot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6dHJh
bnNmb3JtUmVjdChGbG9hdFJlY3QmIGRlc3RSZWN0LCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17Ci0g
ICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgRmxvYXRTaXplIGltYWdlU2l6ZSA9IHNyY1JlY3Quc2l6ZSgpOwotICAg
IGZsb2F0IG9yaWdEZXN0V2lkdGggPSBkZXN0UmVjdC53aWR0aCgpOwotICAgIGZsb2F0IG9yaWdE
ZXN0SGVpZ2h0ID0gZGVzdFJlY3QuaGVpZ2h0KCk7Ci0gICAgc3dpdGNoIChtX21lZXRPclNsaWNl
KSB7Ci0gICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfTUVFVE9SU0xJQ0VfVU5L
Tk9XTjoKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpT
VkdfTUVFVE9SU0xJQ0VfTUVFVDogewotICAgICAgICBmbG9hdCB3aWR0aFRvSGVpZ2h0TXVsdGlw
bGllciA9IHNyY1JlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LndpZHRoKCk7Ci0gICAgICAgIGlmIChv
cmlnRGVzdEhlaWdodCA+IG9yaWdEZXN0V2lkdGggKiB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllcikg
ewotICAgICAgICAgICAgZGVzdFJlY3Quc2V0SGVpZ2h0KG9yaWdEZXN0V2lkdGggKiB3aWR0aFRv
SGVpZ2h0TXVsdGlwbGllcik7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fYWxpZ24pIHsKLSAgICAg
ICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1JTllNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKLSAgICAg
ICAgICAgICAgICBkZXN0UmVjdC5zZXRZKGRlc3RSZWN0LnkoKSArIG9yaWdEZXN0SGVpZ2h0IC8g
MiAtIGRlc3RSZWN0LmhlaWdodCgpIC8gMik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1hNSU5ZTUFYOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpT
VkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVg6Ci0gICAg
ICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShkZXN0UmVjdC55KCkgKyBvcmlnRGVzdEhlaWdodCAt
IGRlc3RSZWN0LmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
IGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAg
IH0KLSAgICAgICAgaWYgKG9yaWdEZXN0V2lkdGggPiBvcmlnRGVzdEhlaWdodCAvIHdpZHRoVG9I
ZWlnaHRNdWx0aXBsaWVyKSB7Ci0gICAgICAgICAgICBkZXN0UmVjdC5zZXRXaWR0aChvcmlnRGVz
dEhlaWdodCAvIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVyKTsKLSAgICAgICAgICAgIHN3aXRjaCAo
bV9hbGlnbikgewotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdf
UFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTjoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ6Ci0gICAgICAg
ICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X1hNSURZTUFYOgotICAgICAgICAgICAgICAgIGRlc3RSZWN0LnNldFgoZGVzdFJlY3QueCgpICsg
b3JpZ0Rlc3RXaWR0aCAvIDIgLSBkZXN0UmVjdC53aWR0aCgpIC8gMik7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKLSAgICAgICAg
ICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1BWFlNQVg6Ci0gICAgICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChkZXN0UmVjdC54KCkgKyBv
cmlnRGVzdFdpZHRoIC0gZGVzdFJlY3Qud2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAg
ICAgfQotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW86OlNWR19NRUVUT1JTTElDRV9TTElDRTogewotICAgICAgICBmbG9hdCB3
aWR0aFRvSGVpZ2h0TXVsdGlwbGllciA9IHNyY1JlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LndpZHRo
KCk7Ci0gICAgICAgIC8vIGlmIHRoZSBkZXN0aW5hdGlvbiBoZWlnaHQgaXMgbGVzcyB0aGFuIHRo
ZSBoZWlnaHQgb2YgdGhlIGltYWdlIHdlJ2xsIGJlIGRyYXdpbmcKLSAgICAgICAgaWYgKG9yaWdE
ZXN0SGVpZ2h0IDwgb3JpZ0Rlc3RXaWR0aCAqIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVyKSB7Ci0g
ICAgICAgICAgICBmbG9hdCBkZXN0VG9TcmNNdWx0aXBsaWVyID0gc3JjUmVjdC53aWR0aCgpIC8g
ZGVzdFJlY3Qud2lkdGgoKTsKLSAgICAgICAgICAgIHNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0
LmhlaWdodCgpICogZGVzdFRvU3JjTXVsdGlwbGllcik7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1f
YWxpZ24pIHsKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgotICAgICAgICAg
ICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUFYWU1JRDoKLSAgICAgICAgICAgICAgICBzcmNSZWN0LnNldFkoc3JjUmVjdC55KCkgKyBpbWFn
ZVNpemUuaGVpZ2h0KCkgLyAyIC0gc3JjUmVjdC5oZWlnaHQoKSAvIDIpOwotICAgICAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdf
UFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6Ci0gICAgICAg
ICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X1hNQVhZTUFYOgotICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0WShzcmNSZWN0LnkoKSArIGlt
YWdlU2l6ZS5oZWlnaHQoKSAtIHNyY1JlY3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAvLyBpZiB0aGUgZGVzdGluYXRpb24gd2lkdGgg
aXMgbGVzcyB0aGFuIHRoZSB3aWR0aCBvZiB0aGUgaW1hZ2Ugd2UnbGwgYmUgZHJhd2luZwotICAg
ICAgICBpZiAob3JpZ0Rlc3RXaWR0aCA8IG9yaWdEZXN0SGVpZ2h0IC8gd2lkdGhUb0hlaWdodE11
bHRpcGxpZXIpIHsKLSAgICAgICAgICAgIGZsb2F0IGRlc3RUb1NyY011bHRpcGxpZXIgPSBzcmNS
ZWN0LmhlaWdodCgpIC8gZGVzdFJlY3QuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBzcmNSZWN0LnNl
dFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgKiBkZXN0VG9TcmNNdWx0aXBsaWVyKTsKLSAgICAgICAg
ICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTjoKLSAgICAgICAgICAgIGNh
c2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlN
SUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSURZTUFYOgotICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0WChzcmNS
ZWN0LngoKSArIGltYWdlU2l6ZS53aWR0aCgpIC8gMiAtIHNyY1JlY3Qud2lkdGgoKSAvIDIpOwot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoKLSAgICAgICAgICAgIGNh
c2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlN
SUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNQVhZTUFYOgotICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0WChzcmNS
ZWN0LngoKSArIGltYWdlU2l6ZS53aWR0aCgpIC0gc3JjUmVjdC53aWR0aCgpKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAg
IH0KLX0KLQotQWZmaW5lVHJhbnNmb3JtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShm
bG9hdCBsb2dpY2FsWCwgZmxvYXQgbG9naWNhbFksIGZsb2F0IGxvZ2ljYWxXaWR0aCwgZmxvYXQg
bG9naWNhbEhlaWdodCwgZmxvYXQgcGh5c2ljYWxXaWR0aCwgZmxvYXQgcGh5c2ljYWxIZWlnaHQp
IGNvbnN0Ci17Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKLSAgICBpZiAoIWxvZ2lj
YWxXaWR0aCB8fCAhbG9naWNhbEhlaWdodCB8fCAhcGh5c2ljYWxXaWR0aCB8fCAhcGh5c2ljYWxI
ZWlnaHQpIHsKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0
cmFuc2Zvcm07Ci0gICAgfQotCi0gICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNU
UkFUSU9fVU5LTk9XTikKLSAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKLQotICAgIGRvdWJsZSBl
eHRlbmRlZExvZ2ljYWxYID0gbG9naWNhbFg7Ci0gICAgZG91YmxlIGV4dGVuZGVkTG9naWNhbFkg
PSBsb2dpY2FsWTsKLSAgICBkb3VibGUgZXh0ZW5kZWRMb2dpY2FsV2lkdGggPSBsb2dpY2FsV2lk
dGg7Ci0gICAgZG91YmxlIGV4dGVuZGVkTG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQ7Ci0g
ICAgZG91YmxlIGV4dGVuZGVkUGh5c2ljYWxXaWR0aCA9IHBoeXNpY2FsV2lkdGg7Ci0gICAgZG91
YmxlIGV4dGVuZGVkUGh5c2ljYWxIZWlnaHQgPSBwaHlzaWNhbEhlaWdodDsKLSAgICBkb3VibGUg
bG9naWNhbFJhdGlvID0gZXh0ZW5kZWRMb2dpY2FsV2lkdGggLyBleHRlbmRlZExvZ2ljYWxIZWln
aHQ7Ci0gICAgZG91YmxlIHBoeXNpY2FsUmF0aW8gPSBleHRlbmRlZFBoeXNpY2FsV2lkdGggLyBl
eHRlbmRlZFBoeXNpY2FsSGVpZ2h0OwotCi0gICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fTk9ORSkgewotICAgICAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGV4
dGVuZGVkUGh5c2ljYWxXaWR0aCAvIGV4dGVuZGVkTG9naWNhbFdpZHRoLCBleHRlbmRlZFBoeXNp
Y2FsSGVpZ2h0IC8gZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgdHJhbnNmb3JtLnRy
YW5zbGF0ZSgtZXh0ZW5kZWRMb2dpY2FsWCwgLWV4dGVuZGVkTG9naWNhbFkpOwotICAgICAgICBy
ZXR1cm4gdHJhbnNmb3JtOwotICAgIH0KLQotICAgIGlmICgobG9naWNhbFJhdGlvIDwgcGh5c2lj
YWxSYXRpbyAmJiAobV9tZWV0T3JTbGljZSA9PSBTVkdfTUVFVE9SU0xJQ0VfTUVFVCkpIHx8IChs
b2dpY2FsUmF0aW8gPj0gcGh5c2ljYWxSYXRpbyAmJiAobV9tZWV0T3JTbGljZSA9PSBTVkdfTUVF
VE9SU0xJQ0VfU0xJQ0UpKSkgewotICAgICAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGV4
dGVuZGVkUGh5c2ljYWxIZWlnaHQgLyBleHRlbmRlZExvZ2ljYWxIZWlnaHQsIGV4dGVuZGVkUGh5
c2ljYWxIZWlnaHQgLyBleHRlbmRlZExvZ2ljYWxIZWlnaHQpOwotCi0gICAgICAgIGlmIChtX2Fs
aWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOIHx8IG1fYWxpZ24gPT0gU1ZH
X1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQgfHwgbV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUlOWU1BWCkKLSAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4
dGVuZGVkTG9naWNhbFgsIC1leHRlbmRlZExvZ2ljYWxZKTsKLSAgICAgICAgZWxzZSBpZiAobV9h
bGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTiB8fCBtX2FsaWduID09IFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JRFlNQVgpCi0gICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1l
eHRlbmRlZExvZ2ljYWxYIC0gKGV4dGVuZGVkTG9naWNhbFdpZHRoIC0gZXh0ZW5kZWRQaHlzaWNh
bFdpZHRoICogZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0IC8gZXh0ZW5kZWRQaHlzaWNhbEhlaWdodCkg
LyAyLCAtZXh0ZW5kZWRMb2dpY2FsWSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9naWNhbFggLSAoZXh0ZW5kZWRMb2dpY2FsV2lkdGgg
LSBleHRlbmRlZFBoeXNpY2FsV2lkdGggKiBleHRlbmRlZExvZ2ljYWxIZWlnaHQgLyBleHRlbmRl
ZFBoeXNpY2FsSGVpZ2h0KSwgLWV4dGVuZGVkTG9naWNhbFkpOwotICAgICAgICAKLSAgICAgICAg
cmV0dXJuIHRyYW5zZm9ybTsKLSAgICB9Ci0KLSAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3Jt
KGV4dGVuZGVkUGh5c2ljYWxXaWR0aCAvIGV4dGVuZGVkTG9naWNhbFdpZHRoLCBleHRlbmRlZFBo
eXNpY2FsV2lkdGggLyBleHRlbmRlZExvZ2ljYWxXaWR0aCk7Ci0KLSAgICBpZiAobV9hbGlnbiA9
PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTiB8fCBtX2FsaWduID09IFNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX1hNSURZTUlOIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNU
UkFUSU9fWE1BWFlNSU4pCi0gICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9n
aWNhbFgsIC1leHRlbmRlZExvZ2ljYWxZKTsKLSAgICBlbHNlIGlmIChtX2FsaWduID09IFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fWE1JRFlNSUQgfHwgbV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUFYWU1JRCkKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtZXh0ZW5kZWRMb2dpY2FsWCwg
LWV4dGVuZGVkTG9naWNhbFkgLSAoZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0IC0gZXh0ZW5kZWRQaHlz
aWNhbEhlaWdodCAqIGV4dGVuZGVkTG9naWNhbFdpZHRoIC8gZXh0ZW5kZWRQaHlzaWNhbFdpZHRo
KSAvIDIpOwotICAgIGVsc2UKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtZXh0ZW5kZWRM
b2dpY2FsWCwgLWV4dGVuZGVkTG9naWNhbFkgLSAoZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0IC0gZXh0
ZW5kZWRQaHlzaWNhbEhlaWdodCAqIGV4dGVuZGVkTG9naWNhbFdpZHRoIC8gZXh0ZW5kZWRQaHlz
aWNhbFdpZHRoKSk7Ci0KLSAgICByZXR1cm4gdHJhbnNmb3JtOwotfQotCi1TdHJpbmcgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbzo6dmFsdWVBc1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGFs
aWduVHlwZTsKLQotICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgIGNhc2UgU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fTk9ORToKLSAgICAgICAgYWxpZ25UeXBlID0gIm5vbmUiOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOOgotICAgICAg
ICBhbGlnblR5cGUgPSAieE1pbllNaW4iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pZFlN
aW4iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
QVhZTUlOOgotICAgICAgICBhbGlnblR5cGUgPSAieE1heFlNaW4iOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEOgotICAgICAgICBhbGln
blR5cGUgPSAieE1pbllNaWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSURZTUlEOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pZFlNaWQiOwot
ICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlE
OgotICAgICAgICBhbGlnblR5cGUgPSAieE1heFlNaWQiOwotICAgICAgICBicmVhazsKLSAgICBj
YXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYOgotICAgICAgICBhbGlnblR5cGUg
PSAieE1pbllNYXgiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSURZTUFYOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pZFlNYXgiOwotICAgICAg
ICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgotICAg
ICAgICBhbGlnblR5cGUgPSAieE1heFlNYXgiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV046Ci0gICAgICAgIGFsaWduVHlwZSA9ICJ1bmtu
b3duIjsKLSAgICAgICAgYnJlYWs7Ci0gICAgfTsKLQotICAgIHN3aXRjaCAobV9tZWV0T3JTbGlj
ZSkgewotICAgIGRlZmF1bHQ6Ci0gICAgY2FzZSBTVkdfTUVFVE9SU0xJQ0VfVU5LTk9XTjoKLSAg
ICAgICAgcmV0dXJuIGFsaWduVHlwZTsKLSAgICBjYXNlIFNWR19NRUVUT1JTTElDRV9NRUVUOgot
ICAgICAgICByZXR1cm4gYWxpZ25UeXBlICsgIiBtZWV0IjsKLSAgICBjYXNlIFNWR19NRUVUT1JT
TElDRV9TTElDRToKLSAgICAgICAgcmV0dXJuIGFsaWduVHlwZSArICIgc2xpY2UiOwotICAgIH0K
LX0KLQotfQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNl
cnZlQXNwZWN0UmF0aW8uY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAt
MSArMCwwICMjCi1uYXRpdmUKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiAy
MDg1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDgzICsxLDExMSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAw
NCwgMjAwNSwgMjAwOCBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAq
IENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUu
b3JnPgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs
aWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBM
aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk
IGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxv
bmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwg
d3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4K
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiU1ZHUHJv
cGVydHlUcmFpdHMuaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2Zm
LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xh
c3MgRmxvYXRSZWN0OwotCi1jbGFzcyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIHsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKK2NsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gOiBwdWJs
aWMgU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT4gewogcHVi
bGljOgotICAgIGVudW0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1R5cGUgewotICAgICAgICBTVkdf
UFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOID0gMCwKLSAgICAgICAgU1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fTk9ORSA9IDEsCi0gICAgICAgIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5Z
TUlOID0gMiwKLSAgICAgICAgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gPSAzLAot
ICAgICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTiA9IDQsCi0gICAgICAgIFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEID0gNSwKLSAgICAgICAgU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JRFlNSUQgPSA2LAotICAgICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19YTUFYWU1JRCA9IDcsCi0gICAgICAgIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFY
ID0gOCwKLSAgICAgICAgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVggPSA5LAotICAg
ICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWCA9IDEwCi0gICAgfTsKLQotICAg
IGVudW0gU1ZHTWVldE9yU2xpY2VUeXBlIHsKLSAgICAgICAgU1ZHX01FRVRPUlNMSUNFX1VOS05P
V04gPSAwLAotICAgICAgICBTVkdfTUVFVE9SU0xJQ0VfTUVFVCA9IDEsCi0gICAgICAgIFNWR19N
RUVUT1JTTElDRV9TTElDRSA9IDIKLSAgICB9OwotCi0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bygpOwotCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0QWxpZ24odW5zaWduZWQgc2hvcnQpOwot
ICAgIHVuc2lnbmVkIHNob3J0IGFsaWduKCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbjsgfQotCi0g
ICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0TWVldE9yU2xpY2UodW5zaWduZWQgc2hvcnQpOwotICAg
IHVuc2lnbmVkIHNob3J0IG1lZXRPclNsaWNlKCkgY29uc3QgeyByZXR1cm4gbV9tZWV0T3JTbGlj
ZTsgfQotCi0gICAgdm9pZCB0cmFuc2Zvcm1SZWN0KEZsb2F0UmVjdCYgZGVzdFJlY3QsIEZsb2F0
UmVjdCYgc3JjUmVjdCk7Ci0KLSAgICBBZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGZsb2F0IGxvZ2lj
YWxYLCBmbG9hdCBsb2dpY2FsWSwgZmxvYXQgbG9naWNhbFdpZHRoLCBmbG9hdCBsb2dpY2FsSGVp
Z2h0LCBmbG9hdCBwaHlzaWNhbFdpZHRoLCBmbG9hdCBwaHlzaWNhbEhlaWdodCkgY29uc3Q7Ci0K
LSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0cmluZyYpOwotICAgIGJvb2wgcGFyc2UoY29uc3QgVUNo
YXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpOwotCi0gICAg
U3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBjb25zdDsKKyAgICBzdGF0aWMgUmVmPFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8+IGNyZWF0ZShTVkdBbmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5
LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1
ZSkKKyAgICB7CisgICAgICAgIEFTU0VSVChhbmltYXRlZFByb3BlcnR5KTsKKyAgICAgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyhhbmltYXRlZFByb3BlcnR5
LCByb2xlLCB2YWx1ZSkpOworICAgIH0KKworICAgIHN0YXRpYyBSZWY8U1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbz4gY3JlYXRlKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgaW5pdGlh
bFZhbHVlID0geyB9KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyhpbml0aWFsVmFsdWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVm
PFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IGNyZWF0ZShjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUqIGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oaW5pdGlhbFZhbHVlKSk7CisgICAgfQorCisgICAg
dGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RhdGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvPj4gY3JlYXRlKEV4Y2VwdGlvbk9yPFQ+JiYgaW5pdGlhbFZhbHVlKQorICAgIHsK
KyAgICAgICAgaWYgKGluaXRpYWxWYWx1ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJl
dHVybiBpbml0aWFsVmFsdWUucmVsZWFzZUV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gY3Jl
YXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CisgICAgfQorCisgICAgdW5z
aWduZWQgc2hvcnQgYWxpZ24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJl
bmNlKCkuYWxpZ24oKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBbGlnbihm
bG9hdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCisgICAgICAgICAg
ICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CisKKyAg
ICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldEFsaWduKHZhbHVlKTsK
KyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CisKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgdW5zaWduZWQgc2hvcnQgbWVldE9yU2xpY2UoKQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkubWVldE9yU2xpY2UoKTsKKyAgICB9CisKKyAg
ICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRNZWV0T3JTbGljZShmbG9hdCB2YWx1ZSkKKyAgICB7Cisg
ICAgICAgIGlmIChpc1JlYWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsg
Tk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBw
cm9wZXJ0eVJlZmVyZW5jZSgpLnNldE1lZXRPclNsaWNlKHZhbHVlKTsKKyAgICAgICAgaWYgKHJl
c3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAg
ICAgY29tbWl0Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiBwcml2
YXRlOgotICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9UeXBlIG1fYWxpZ247Ci0gICAgU1ZHTWVl
dE9yU2xpY2VUeXBlIG1fbWVldE9yU2xpY2U7Ci0KLSAgICBib29sIHBhcnNlSW50ZXJuYWwoY29u
c3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpOwot
fTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbz4gewotICAgIHN0YXRpYyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIGluaXRpYWxWYWx1
ZSgpIHsgcmV0dXJuIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKTsgfQotICAgIHN0YXRpYyBTdHJp
bmcgdG9TdHJpbmcoY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgdHlwZSkgeyByZXR1cm4g
dHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KKyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR0Fu
aW1hdGVkUHJvcGVydHkqIGFuaW1hdGVkUHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5
VGVhck9mZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+KGFuaW1hdGVkUHJvcGVydHksIHJv
bGUsIHZhbHVlKQorICAgIHsKKyAgICB9CisKKyAgICBleHBsaWNpdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgaW5pdGlhbFZhbHVlKQor
ICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+
KGluaXRpYWxWYWx1ZSkKKyAgICB7CisgICAgfQorCisgICAgZXhwbGljaXQgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbyhjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUqIGluaXRpYWxWYWx1
ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlPihpbml0aWFsVmFsdWUpCisgICAgeworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmgKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fXwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICsw
LDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5pZGwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaWRsCShyZXZpc2lvbiAy
MDg1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5pZGwJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDcgKzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAK
LWludGVyZmFjZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIHsKK1sKKyAgICBDb25zdGFudHNTY29w
ZT1TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUKK10gaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8gewogICAgIC8vIEFsaWdubWVudCBUeXBlcwogICAgIGNvbnN0IHVuc2lnbmVkIHNo
b3J0IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV04gPSAwOwogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUgPSAxOwpJbmRleDogU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5jcHAJKHJl
dmlzaW9uIDIwODU2OCkJKGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uY3BwOjIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMzc1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVy
bWFubkBrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJv
YiBCdWlzIDxidWlzQGtkZS5vcmc+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgRGlyayBTY2h1bHpl
IDxrcml0QHdlYmtpdC5vcmc+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7
IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0
ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVi
bGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lv
biAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u
LgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0
IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhh
dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvLmgiCisKKyNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNs
dWRlICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
U1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8oKQorICAgIDogbV9hbGlnbihTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUlEWU1JRCkKKyAgICAsIG1fbWVldE9yU2xpY2UoU1ZHX01FRVRPUlNMSUNFX01FRVQpCit7Cit9
CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnNldEFsaWduKHVu
c2lnbmVkIHNob3J0IGFsaWduKQoreworICAgIGlmIChhbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19VTktOT1dOIHx8IGFsaWduID4gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlN
QVgpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworCisg
ICAgbV9hbGlnbiA9IHN0YXRpY19jYXN0PFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9UeXBlPihhbGln
bik7CisgICAgcmV0dXJuIHsgfTsKK30KKworRXhjZXB0aW9uT3I8dm9pZD4gU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6c2V0TWVldE9yU2xpY2UodW5zaWduZWQgc2hvcnQgbWVldE9yU2xpY2UpCit7
CisgICAgaWYgKG1lZXRPclNsaWNlID09IFNWR19NRUVUT1JTTElDRV9VTktOT1dOIHx8IG1lZXRP
clNsaWNlID4gU1ZHX01FRVRPUlNMSUNFX1NMSUNFKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKKworICAgIG1fbWVldE9yU2xpY2UgPSBzdGF0aWNfY2Fz
dDxTVkdNZWV0T3JTbGljZVR5cGU+KG1lZXRPclNsaWNlKTsKKyAgICByZXR1cm4geyB9OworfQor
Cit2b2lkIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUp
Cit7CisgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51
cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKKyAgICBjb25zdCBVQ2hhciogYmVnaW4gPSB1cGNvbnZl
cnRlZENoYXJhY3RlcnM7CisgICAgcGFyc2VJbnRlcm5hbChiZWdpbiwgYmVnaW4gKyB2YWx1ZS5s
ZW5ndGgoKSwgdHJ1ZSk7Cit9CisKK2Jvb2wgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2Uo
Y29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUp
Cit7CisgICAgcmV0dXJuIHBhcnNlSW50ZXJuYWwoY3VyclBhcmFtLCBlbmQsIHZhbGlkYXRlKTsK
K30KKworYm9vbCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZUludGVybmFsKGNvbnN0IFVD
aGFyKiYgY3VyclBhcmFtLCBjb25zdCBVQ2hhciogZW5kLCBib29sIHZhbGlkYXRlKQoreworICAg
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9UeXBlIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1JRFlNSUQ7CisgICAgU1ZHTWVldE9yU2xpY2VUeXBlIG1lZXRPclNsaWNlID0gU1ZHX01F
RVRPUlNMSUNFX01FRVQ7CisKKyAgICBtX2FsaWduID0gYWxpZ247CisgICAgbV9tZWV0T3JTbGlj
ZSA9IG1lZXRPclNsaWNlOworCisgICAgaWYgKCFza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyclBh
cmFtLCBlbmQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoKmN1cnJQYXJhbSA9
PSAnZCcpIHsKKyAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJQYXJhbSwgZW5kLCAiZGVmZXIi
KSkgeworICAgICAgICAgICAgTE9HX0VSUk9SKCJTa2lwcGVkIHRvIHBhcnNlIGV4Y2VwdCBmb3Ig
KmRlZmVyKiB2YWx1ZS4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIEZJWE1FOiBXZSBqdXN0IGlnbm9yZSB0aGUgImRlZmVyIiBoZXJlLgorICAg
ICAgICBpZiAoY3VyclBhcmFtID09IGVuZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgICAgIGlmICghc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJQYXJhbSwgZW5kKSkKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoKmN1cnJQYXJhbSA9PSAnbicp
IHsKKyAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJQYXJhbSwgZW5kLCAibm9uZSIpKSB7Cisg
ICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwZWQgdG8gcGFyc2UgZXhjZXB0IGZvciAqbm9uZSog
dmFsdWUuIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAg
YWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FOworICAgICAgICBza2lwT3B0aW9u
YWxTVkdTcGFjZXMoY3VyclBhcmFtLCBlbmQpOworICAgIH0gZWxzZSBpZiAoKmN1cnJQYXJhbSA9
PSAneCcpIHsKKyAgICAgICAgaWYgKChlbmQgLSBjdXJyUGFyYW0pIDwgOCkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgaWYgKGN1cnJQYXJhbVsxXSAhPSAnTScgfHwgY3VyclBh
cmFtWzRdICE9ICdZJyB8fCBjdXJyUGFyYW1bNV0gIT0gJ00nKQorICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOworICAgICAgICBpZiAoY3VyclBhcmFtWzJdID09ICdpJykgeworICAgICAgICAgICAg
aWYgKGN1cnJQYXJhbVszXSA9PSAnbicpIHsKKyAgICAgICAgICAgICAgICBpZiAoY3VyclBhcmFt
WzZdID09ICdpJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3VyclBhcmFtWzddID09ICdu
JykKKyAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1JTllNSU47CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJQYXJhbVs3XSA9
PSAnZCcpCisgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSU5ZTUlEOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJy
UGFyYW1bNl0gPT0gJ2EnICYmIGN1cnJQYXJhbVs3XSA9PSAneCcpCisgICAgICAgICAgICAgICAg
ICAgIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVg7CisgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAg
ICAgfSBlbHNlIGlmIChjdXJyUGFyYW1bM10gPT0gJ2QnKSB7CisgICAgICAgICAgICAgICAgaWYg
KGN1cnJQYXJhbVs2XSA9PSAnaScpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJQYXJh
bVs3XSA9PSAnbicpCisgICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSURZTUlOOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJy
UGFyYW1bN10gPT0gJ2QnKQorICAgICAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoY3VyclBhcmFtWzZdID09ICdhJyAmJiBjdXJyUGFyYW1bN10gPT0gJ3gnKQorICAgICAg
ICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9IGVsc2UgaWYgKGN1cnJQYXJhbVsyXSA9PSAnYScgJiYgY3VyclBhcmFtWzNdID09ICd4Jykg
eworICAgICAgICAgICAgaWYgKGN1cnJQYXJhbVs2XSA9PSAnaScpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoY3VyclBhcmFtWzddID09ICduJykKKyAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBT
VkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjsKKyAgICAgICAgICAgICAgICBlbHNlIGlm
IChjdXJyUGFyYW1bN10gPT0gJ2QnKQorICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJy
UGFyYW1bNl0gPT0gJ2EnICYmIGN1cnJQYXJhbVs3XSA9PSAneCcpCisgICAgICAgICAgICAgICAg
YWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWDsKKyAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBjdXJyUGFyYW0gKz0gODsKKyAgICAgICAgc2tp
cE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJQYXJhbSwgZW5kKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgaWYgKGN1cnJQYXJhbSA8IGVuZCkgeworICAgICAgICBpZiAo
KmN1cnJQYXJhbSA9PSAnbScpIHsKKyAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyUGFy
YW0sIGVuZCwgIm1lZXQiKSkgeworICAgICAgICAgICAgICAgIExPR19FUlJPUigiU2tpcHBlZCB0
byBwYXJzZSBleGNlcHQgZm9yICptZWV0KiBvciAqc2xpY2UqIHZhbHVlLiIpOworICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNraXBPcHRp
b25hbFNWR1NwYWNlcyhjdXJyUGFyYW0sIGVuZCk7CisgICAgICAgIH0gZWxzZSBpZiAoKmN1cnJQ
YXJhbSA9PSAncycpIHsKKyAgICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyUGFyYW0sIGVu
ZCwgInNsaWNlIikpIHsKKyAgICAgICAgICAgICAgICBMT0dfRVJST1IoIlNraXBwZWQgdG8gcGFy
c2UgZXhjZXB0IGZvciAqbWVldCogb3IgKnNsaWNlKiB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBza2lwT3B0aW9uYWxT
VkdTcGFjZXMoY3VyclBhcmFtLCBlbmQpOworICAgICAgICAgICAgaWYgKGFsaWduICE9IFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX05PTkUpCisgICAgICAgICAgICAgICAgbWVldE9yU2xpY2UgPSBT
VkdfTUVFVE9SU0xJQ0VfU0xJQ0U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZW5kICE9
IGN1cnJQYXJhbSAmJiB2YWxpZGF0ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9h
bGlnbiA9IGFsaWduOworICAgIG1fbWVldE9yU2xpY2UgPSBtZWV0T3JTbGljZTsKKworICAgIHJl
dHVybiB0cnVlOworfQorCit2b2lkIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9ybVJl
Y3QoRmxvYXRSZWN0JiBkZXN0UmVjdCwgRmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIGlmICht
X2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUpCisgICAgICAgIHJldHVybjsK
KworICAgIEZsb2F0U2l6ZSBpbWFnZVNpemUgPSBzcmNSZWN0LnNpemUoKTsKKyAgICBmbG9hdCBv
cmlnRGVzdFdpZHRoID0gZGVzdFJlY3Qud2lkdGgoKTsKKyAgICBmbG9hdCBvcmlnRGVzdEhlaWdo
dCA9IGRlc3RSZWN0LmhlaWdodCgpOworICAgIHN3aXRjaCAobV9tZWV0T3JTbGljZSkgeworICAg
IGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX01FRVRPUlNMSUNFX1VOS05PV046Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX01FRVRP
UlNMSUNFX01FRVQ6IHsKKyAgICAgICAgZmxvYXQgd2lkdGhUb0hlaWdodE11bHRpcGxpZXIgPSBz
cmNSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC53aWR0aCgpOworICAgICAgICBpZiAob3JpZ0Rlc3RI
ZWlnaHQgPiBvcmlnRGVzdFdpZHRoICogd2lkdGhUb0hlaWdodE11bHRpcGxpZXIpIHsKKyAgICAg
ICAgICAgIGRlc3RSZWN0LnNldEhlaWdodChvcmlnRGVzdFdpZHRoICogd2lkdGhUb0hlaWdodE11
bHRpcGxpZXIpOworICAgICAgICAgICAgc3dpdGNoIChtX2FsaWduKSB7CisgICAgICAgICAgICBj
YXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5Z
TUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6CisgICAgICAgICAgICAg
ICAgZGVzdFJlY3Quc2V0WShkZXN0UmVjdC55KCkgKyBvcmlnRGVzdEhlaWdodCAvIDIgLSBkZXN0
UmVjdC5oZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
Y2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlO
WU1BWDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgorICAgICAgICAgICAg
ICAgIGRlc3RSZWN0LnNldFkoZGVzdFJlY3QueSgpICsgb3JpZ0Rlc3RIZWlnaHQgLSBkZXN0UmVj
dC5oZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0
OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIGlmIChvcmlnRGVzdFdpZHRoID4gb3JpZ0Rlc3RIZWlnaHQgLyB3aWR0aFRvSGVpZ2h0TXVs
dGlwbGllcikgeworICAgICAgICAgICAgZGVzdFJlY3Quc2V0V2lkdGgob3JpZ0Rlc3RIZWlnaHQg
LyB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllcik7CisgICAgICAgICAgICBzd2l0Y2ggKG1fYWxpZ24p
IHsKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JRFlNSU46CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgorICAgICAgICAgICAgY2Fz
ZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1B
WDoKKyAgICAgICAgICAgICAgICBkZXN0UmVjdC5zZXRYKGRlc3RSZWN0LngoKSArIG9yaWdEZXN0
V2lkdGggLyAyIC0gZGVzdFJlY3Qud2lkdGgoKSAvIDIpOworICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUFYWU1JTjoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6CisgICAgICAgICAgICBjYXNl
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFY
OgorICAgICAgICAgICAgICAgIGRlc3RSZWN0LnNldFgoZGVzdFJlY3QueCgpICsgb3JpZ0Rlc3RX
aWR0aCAtIGRlc3RSZWN0LndpZHRoKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpTVkdfTUVFVE9SU0xJQ0VfU0xJQ0U6IHsKKyAgICAgICAgZmxvYXQgd2lkdGhUb0hl
aWdodE11bHRpcGxpZXIgPSBzcmNSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC53aWR0aCgpOworICAg
ICAgICAvLyBpZiB0aGUgZGVzdGluYXRpb24gaGVpZ2h0IGlzIGxlc3MgdGhhbiB0aGUgaGVpZ2h0
IG9mIHRoZSBpbWFnZSB3ZSdsbCBiZSBkcmF3aW5nCisgICAgICAgIGlmIChvcmlnRGVzdEhlaWdo
dCA8IG9yaWdEZXN0V2lkdGggKiB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllcikgeworICAgICAgICAg
ICAgZmxvYXQgZGVzdFRvU3JjTXVsdGlwbGllciA9IHNyY1JlY3Qud2lkdGgoKSAvIGRlc3RSZWN0
LndpZHRoKCk7CisgICAgICAgICAgICBzcmNSZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQo
KSAqIGRlc3RUb1NyY011bHRpcGxpZXIpOworICAgICAgICAgICAgc3dpdGNoIChtX2FsaWduKSB7
CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFT
UEVDVFJBVElPX1hNSU5ZTUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKKyAgICAgICAgICAgIGNhc2Ug
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6
CisgICAgICAgICAgICAgICAgc3JjUmVjdC5zZXRZKHNyY1JlY3QueSgpICsgaW1hZ2VTaXplLmhl
aWdodCgpIC8gMiAtIHNyY1JlY3QuaGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JTllNQVg6CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgorICAgICAgICAgICAgY2Fz
ZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1B
WDoKKyAgICAgICAgICAgICAgICBzcmNSZWN0LnNldFkoc3JjUmVjdC55KCkgKyBpbWFnZVNpemUu
aGVpZ2h0KCkgLSBzcmNSZWN0LmhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgLy8gaWYgdGhlIGRlc3RpbmF0aW9uIHdpZHRoIGlzIGxlc3Mg
dGhhbiB0aGUgd2lkdGggb2YgdGhlIGltYWdlIHdlJ2xsIGJlIGRyYXdpbmcKKyAgICAgICAgaWYg
KG9yaWdEZXN0V2lkdGggPCBvcmlnRGVzdEhlaWdodCAvIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVy
KSB7CisgICAgICAgICAgICBmbG9hdCBkZXN0VG9TcmNNdWx0aXBsaWVyID0gc3JjUmVjdC5oZWln
aHQoKSAvIGRlc3RSZWN0LmhlaWdodCgpOworICAgICAgICAgICAgc3JjUmVjdC5zZXRXaWR0aChk
ZXN0UmVjdC53aWR0aCgpICogZGVzdFRvU3JjTXVsdGlwbGllcik7CisgICAgICAgICAgICBzd2l0
Y2ggKG1fYWxpZ24pIHsKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU46CisgICAgICAgICAgICBjYXNlIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgorICAg
ICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUlEWU1BWDoKKyAgICAgICAgICAgICAgICBzcmNSZWN0LnNldFgoc3JjUmVjdC54KCkg
KyBpbWFnZVNpemUud2lkdGgoKSAvIDIgLSBzcmNSZWN0LndpZHRoKCkgLyAyKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU46CisgICAgICAgICAgICBjYXNlIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEOgorICAg
ICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUFYWU1BWDoKKyAgICAgICAgICAgICAgICBzcmNSZWN0LnNldFgoc3JjUmVjdC54KCkg
KyBpbWFnZVNpemUud2lkdGgoKSAtIHNyY1JlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9Cit9CisK
K0FmZmluZVRyYW5zZm9ybSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oZmxvYXQgbG9n
aWNhbFgsIGZsb2F0IGxvZ2ljYWxZLCBmbG9hdCBsb2dpY2FsV2lkdGgsIGZsb2F0IGxvZ2ljYWxI
ZWlnaHQsIGZsb2F0IHBoeXNpY2FsV2lkdGgsIGZsb2F0IHBoeXNpY2FsSGVpZ2h0KSBjb25zdAor
eworICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CisgICAgaWYgKCFsb2dpY2FsV2lkdGgg
fHwgIWxvZ2ljYWxIZWlnaHQgfHwgIXBoeXNpY2FsV2lkdGggfHwgIXBoeXNpY2FsSGVpZ2h0KSB7
CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4gdHJhbnNmb3Jt
OworICAgIH0KKworICAgIGlmIChtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VO
S05PV04pCisgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CisKKyAgICBkb3VibGUgZXh0ZW5kZWRM
b2dpY2FsWCA9IGxvZ2ljYWxYOworICAgIGRvdWJsZSBleHRlbmRlZExvZ2ljYWxZID0gbG9naWNh
bFk7CisgICAgZG91YmxlIGV4dGVuZGVkTG9naWNhbFdpZHRoID0gbG9naWNhbFdpZHRoOworICAg
IGRvdWJsZSBleHRlbmRlZExvZ2ljYWxIZWlnaHQgPSBsb2dpY2FsSGVpZ2h0OworICAgIGRvdWJs
ZSBleHRlbmRlZFBoeXNpY2FsV2lkdGggPSBwaHlzaWNhbFdpZHRoOworICAgIGRvdWJsZSBleHRl
bmRlZFBoeXNpY2FsSGVpZ2h0ID0gcGh5c2ljYWxIZWlnaHQ7CisgICAgZG91YmxlIGxvZ2ljYWxS
YXRpbyA9IGV4dGVuZGVkTG9naWNhbFdpZHRoIC8gZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0OworICAg
IGRvdWJsZSBwaHlzaWNhbFJhdGlvID0gZXh0ZW5kZWRQaHlzaWNhbFdpZHRoIC8gZXh0ZW5kZWRQ
aHlzaWNhbEhlaWdodDsKKworICAgIGlmIChtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX05PTkUpIHsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShleHRlbmRlZFBo
eXNpY2FsV2lkdGggLyBleHRlbmRlZExvZ2ljYWxXaWR0aCwgZXh0ZW5kZWRQaHlzaWNhbEhlaWdo
dCAvIGV4dGVuZGVkTG9naWNhbEhlaWdodCk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUo
LWV4dGVuZGVkTG9naWNhbFgsIC1leHRlbmRlZExvZ2ljYWxZKTsKKyAgICAgICAgcmV0dXJuIHRy
YW5zZm9ybTsKKyAgICB9CisKKyAgICBpZiAoKGxvZ2ljYWxSYXRpbyA8IHBoeXNpY2FsUmF0aW8g
JiYgKG1fbWVldE9yU2xpY2UgPT0gU1ZHX01FRVRPUlNMSUNFX01FRVQpKSB8fCAobG9naWNhbFJh
dGlvID49IHBoeXNpY2FsUmF0aW8gJiYgKG1fbWVldE9yU2xpY2UgPT0gU1ZHX01FRVRPUlNMSUNF
X1NMSUNFKSkpIHsKKyAgICAgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShleHRlbmRlZFBo
eXNpY2FsSGVpZ2h0IC8gZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0LCBleHRlbmRlZFBoeXNpY2FsSGVp
Z2h0IC8gZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0KTsKKworICAgICAgICBpZiAobV9hbGlnbiA9PSBT
VkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTiB8fCBtX2FsaWduID09IFNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSU5ZTUlEIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1JTllNQVgpCisgICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1leHRlbmRlZExv
Z2ljYWxYLCAtZXh0ZW5kZWRMb2dpY2FsWSk7CisgICAgICAgIGVsc2UgaWYgKG1fYWxpZ24gPT0g
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gfHwgbV9hbGlnbiA9PSBTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19YTUlEWU1JRCB8fCBtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1hNSURZTUFYKQorICAgICAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtZXh0ZW5kZWRM
b2dpY2FsWCAtIChleHRlbmRlZExvZ2ljYWxXaWR0aCAtIGV4dGVuZGVkUGh5c2ljYWxXaWR0aCAq
IGV4dGVuZGVkTG9naWNhbEhlaWdodCAvIGV4dGVuZGVkUGh5c2ljYWxIZWlnaHQpIC8gMiwgLWV4
dGVuZGVkTG9naWNhbFkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICB0cmFuc2Zvcm0udHJh
bnNsYXRlKC1leHRlbmRlZExvZ2ljYWxYIC0gKGV4dGVuZGVkTG9naWNhbFdpZHRoIC0gZXh0ZW5k
ZWRQaHlzaWNhbFdpZHRoICogZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0IC8gZXh0ZW5kZWRQaHlzaWNh
bEhlaWdodCksIC1leHRlbmRlZExvZ2ljYWxZKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0
cmFuc2Zvcm07CisgICAgfQorCisgICAgdHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShleHRlbmRl
ZFBoeXNpY2FsV2lkdGggLyBleHRlbmRlZExvZ2ljYWxXaWR0aCwgZXh0ZW5kZWRQaHlzaWNhbFdp
ZHRoIC8gZXh0ZW5kZWRMb2dpY2FsV2lkdGgpOworCisgICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU4gfHwgbV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUlEWU1JTiB8fCBtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
QVhZTUlOKQorICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1leHRlbmRlZExvZ2ljYWxYLCAt
ZXh0ZW5kZWRMb2dpY2FsWSk7CisgICAgZWxzZSBpZiAobV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUlOWU1JRCB8fCBtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X1hNSURZTUlEIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQp
CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9naWNhbFgsIC1leHRlbmRl
ZExvZ2ljYWxZIC0gKGV4dGVuZGVkTG9naWNhbEhlaWdodCAtIGV4dGVuZGVkUGh5c2ljYWxIZWln
aHQgKiBleHRlbmRlZExvZ2ljYWxXaWR0aCAvIGV4dGVuZGVkUGh5c2ljYWxXaWR0aCkgLyAyKTsK
KyAgICBlbHNlCisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9naWNhbFgs
IC1leHRlbmRlZExvZ2ljYWxZIC0gKGV4dGVuZGVkTG9naWNhbEhlaWdodCAtIGV4dGVuZGVkUGh5
c2ljYWxIZWlnaHQgKiBleHRlbmRlZExvZ2ljYWxXaWR0aCAvIGV4dGVuZGVkUGh5c2ljYWxXaWR0
aCkpOworCisgICAgcmV0dXJuIHRyYW5zZm9ybTsKK30KKworU3RyaW5nIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OnZhbHVlQXNTdHJpbmcoKSBjb25zdAoreworICAgIFN0cmluZyBhbGlnblR5cGU7
CisKKyAgICBzd2l0Y2ggKG1fYWxpZ24pIHsKKyAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX05PTkU6CisgICAgICAgIGFsaWduVHlwZSA9ICJub25lIjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTjoKKyAgICAgICAgYWxpZ25U
eXBlID0gInhNaW5ZTWluIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUlEWU1JTjoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNaWRZTWluIjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoK
KyAgICAgICAgYWxpZ25UeXBlID0gInhNYXhZTWluIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRDoKKyAgICAgICAgYWxpZ25UeXBlID0g
InhNaW5ZTWlkIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUlEWU1JRDoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNaWRZTWlkIjsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKKyAgICAg
ICAgYWxpZ25UeXBlID0gInhNYXhZTWlkIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdf
UFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNaW5Z
TWF4IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUlEWU1BWDoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNaWRZTWF4IjsKKyAgICAgICAgYnJlYWs7
CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWDoKKyAgICAgICAgYWxp
Z25UeXBlID0gInhNYXhZTWF4IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19VTktOT1dOOgorICAgICAgICBhbGlnblR5cGUgPSAidW5rbm93biI7Cisg
ICAgICAgIGJyZWFrOworICAgIH07CisKKyAgICBzd2l0Y2ggKG1fbWVldE9yU2xpY2UpIHsKKyAg
ICBkZWZhdWx0OgorICAgIGNhc2UgU1ZHX01FRVRPUlNMSUNFX1VOS05PV046CisgICAgICAgIHJl
dHVybiBhbGlnblR5cGU7CisgICAgY2FzZSBTVkdfTUVFVE9SU0xJQ0VfTUVFVDoKKyAgICAgICAg
cmV0dXJuIGFsaWduVHlwZSArICIgbWVldCI7CisgICAgY2FzZSBTVkdfTUVFVE9SU0xJQ0VfU0xJ
Q0U6CisgICAgICAgIHJldHVybiBhbGlnblR5cGUgKyAiIHNsaWNlIjsKKyAgICB9Cit9CisKK30K
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUuY3BwCShyZXZpc2lvbiAyMDg1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJl
c2VydmVBc3BlY3RSYXRpb1ZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBA
QAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgiCisjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAKICNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBA
IC0zMCwxMyArMzAsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvOjpTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKCkKK1NWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZTo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlKCkKICAgICA6IG1fYWxpZ24oU1ZH
X1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQpCiAgICAgLCBtX21lZXRPclNsaWNlKFNWR19N
RUVUT1JTTElDRV9NRUVUKQogewogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvOjpzZXRBbGlnbih1bnNpZ25lZCBzaG9ydCBhbGlnbikKK0V4Y2VwdGlvbk9yPHZv
aWQ+IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6c2V0QWxpZ24odW5zaWduZWQgc2hvcnQg
YWxpZ24pCiB7CiAgICAgaWYgKGFsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05P
V04gfHwgYWxpZ24gPiBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07CkBAIC00NSw3ICs0NSw3IEBA
IEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8KICAgICByZXR1cm4geyB9
OwogfQogCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpzZXRNZWV0
T3JTbGljZSh1bnNpZ25lZCBzaG9ydCBtZWV0T3JTbGljZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6c2V0TWVldE9yU2xpY2UodW5zaWduZWQgc2hvcnQg
bWVldE9yU2xpY2UpCiB7CiAgICAgaWYgKG1lZXRPclNsaWNlID09IFNWR19NRUVUT1JTTElDRV9V
TktOT1dOIHx8IG1lZXRPclNsaWNlID4gU1ZHX01FRVRPUlNMSUNFX1NMSUNFKQogICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsKQEAgLTU0LDE5ICs1NCwxOSBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvCiAgICAgcmV0dXJuIHsg
fTsKIH0KIAotdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZShjb25zdCBTdHJpbmcm
IHZhbHVlKQordm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OnBhcnNlKGNvbnN0IFN0
cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdW
aWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogYmVn
aW4gPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CiAgICAgcGFyc2VJbnRlcm5hbChiZWdpbiwgYmVn
aW4gKyB2YWx1ZS5sZW5ndGgoKSwgdHJ1ZSk7CiB9CiAKLWJvb2wgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzo6cGFyc2UoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJv
b2wgdmFsaWRhdGUpCitib29sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6cGFyc2UoY29u
c3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpCiB7
CiAgICAgcmV0dXJuIHBhcnNlSW50ZXJuYWwoY3VyclBhcmFtLCBlbmQsIHZhbGlkYXRlKTsKIH0K
IAotYm9vbCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZUludGVybmFsKGNvbnN0IFVDaGFy
KiYgY3VyclBhcmFtLCBjb25zdCBVQ2hhciogZW5kLCBib29sIHZhbGlkYXRlKQorYm9vbCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OnBhcnNlSW50ZXJuYWwoY29uc3QgVUNoYXIqJiBjdXJy
UGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpCiB7CiAgICAgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpb1R5cGUgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1J
RDsKICAgICBTVkdNZWV0T3JTbGljZVR5cGUgbWVldE9yU2xpY2UgPSBTVkdfTUVFVE9SU0xJQ0Vf
TUVFVDsKQEAgLTE3Niw3ICsxNzYsNyBAQCBib29sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnBh
cnNlSW50ZXJuCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzo6dHJhbnNmb3JtUmVjdChGbG9hdFJlY3QmIGRlc3RSZWN0LCBGbG9hdFJlY3QmIHNyY1Jl
Y3QpCit2b2lkIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6dHJhbnNmb3JtUmVjdChGbG9h
dFJlY3QmIGRlc3RSZWN0LCBGbG9hdFJlY3QmIHNyY1JlY3QpCiB7CiAgICAgaWYgKG1fYWxpZ24g
PT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg1
LDIxICsxODUsMjEgQEAgdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjp0cmFuc2Zvcm1SZQog
ICAgIGZsb2F0IG9yaWdEZXN0V2lkdGggPSBkZXN0UmVjdC53aWR0aCgpOwogICAgIGZsb2F0IG9y
aWdEZXN0SGVpZ2h0ID0gZGVzdFJlY3QuaGVpZ2h0KCk7CiAgICAgc3dpdGNoIChtX21lZXRPclNs
aWNlKSB7Ci0gICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfTUVFVE9SU0xJQ0Vf
VU5LTk9XTjoKKyAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX01FRVRP
UlNMSUNFX1VOS05PV046CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbzo6U1ZHX01FRVRPUlNMSUNFX01FRVQ6IHsKKyAgICBjYXNlIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZTo6U1ZHX01FRVRPUlNMSUNFX01FRVQ6IHsKICAgICAgICAgZmxvYXQgd2lk
dGhUb0hlaWdodE11bHRpcGxpZXIgPSBzcmNSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC53aWR0aCgp
OwogICAgICAgICBpZiAob3JpZ0Rlc3RIZWlnaHQgPiBvcmlnRGVzdFdpZHRoICogd2lkdGhUb0hl
aWdodE11bHRpcGxpZXIpIHsKICAgICAgICAgICAgIGRlc3RSZWN0LnNldEhlaWdodChvcmlnRGVz
dFdpZHRoICogd2lkdGhUb0hlaWdodE11bHRpcGxpZXIpOwogICAgICAgICAgICAgc3dpdGNoICht
X2FsaWduKSB7Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKLSAgICAgICAg
ICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1BWFlNSUQ6CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQ6CisgICAgICAgICAgICBjYXNlIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ6
CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6CiAgICAgICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShk
ZXN0UmVjdC55KCkgKyBvcmlnRGVzdEhlaWdodCAvIDIgLSBkZXN0UmVjdC5oZWlnaHQoKSAvIDIp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDoKLSAgICAgICAgICAg
IGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1J
RFlNQVg6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYOgorICAgICAg
ICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSURZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgogICAgICAgICAgICAgICAg
IGRlc3RSZWN0LnNldFkoZGVzdFJlY3QueSgpICsgb3JpZ0Rlc3RIZWlnaHQgLSBkZXN0UmVjdC5o
ZWlnaHQoKSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpA
QCAtMjA5LDE0ICsyMDksMTQgQEAgdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjp0cmFuc2Zv
cm1SZQogICAgICAgICBpZiAob3JpZ0Rlc3RXaWR0aCA+IG9yaWdEZXN0SGVpZ2h0IC8gd2lkdGhU
b0hlaWdodE11bHRpcGxpZXIpIHsKICAgICAgICAgICAgIGRlc3RSZWN0LnNldFdpZHRoKG9yaWdE
ZXN0SGVpZ2h0IC8gd2lkdGhUb0hlaWdodE11bHRpcGxpZXIpOwogICAgICAgICAgICAgc3dpdGNo
IChtX2FsaWduKSB7Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKLSAgICAg
ICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1JRFlNQVg6CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU46CisgICAgICAgICAgICBjYXNlIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlN
SUQ6CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6CiAgICAgICAgICAgICAgICAgZGVzdFJlY3Quc2V0
WChkZXN0UmVjdC54KCkgKyBvcmlnRGVzdFdpZHRoIC8gMiAtIGRlc3RSZWN0LndpZHRoKCkgLyAy
KTsKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU46Ci0gICAgICAgICAg
ICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
QVhZTUlEOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoKKyAgICAg
ICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUFYWU1JRDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWDoKICAgICAgICAgICAgICAg
ICBkZXN0UmVjdC5zZXRYKGRlc3RSZWN0LngoKSArIG9yaWdEZXN0V2lkdGggLSBkZXN0UmVjdC53
aWR0aCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CkBA
IC0yMjUsMjEgKzIyNSwyMSBAQCB2b2lkIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9y
bVJlCiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIGNhc2UgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzo6U1ZHX01FRVRPUlNMSUNFX1NMSUNFOiB7CisgICAgY2FzZSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19NRUVUT1JTTElDRV9TTElDRTogewogICAgICAgICBm
bG9hdCB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllciA9IHNyY1JlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0
LndpZHRoKCk7CiAgICAgICAgIC8vIGlmIHRoZSBkZXN0aW5hdGlvbiBoZWlnaHQgaXMgbGVzcyB0
aGFuIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlIHdlJ2xsIGJlIGRyYXdpbmcKICAgICAgICAgaWYg
KG9yaWdEZXN0SGVpZ2h0IDwgb3JpZ0Rlc3RXaWR0aCAqIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVy
KSB7CiAgICAgICAgICAgICBmbG9hdCBkZXN0VG9TcmNNdWx0aXBsaWVyID0gc3JjUmVjdC53aWR0
aCgpIC8gZGVzdFJlY3Qud2lkdGgoKTsKICAgICAgICAgICAgIHNyY1JlY3Quc2V0SGVpZ2h0KGRl
c3RSZWN0LmhlaWdodCgpICogZGVzdFRvU3JjTXVsdGlwbGllcik7CiAgICAgICAgICAgICBzd2l0
Y2ggKG1fYWxpZ24pIHsKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgotICAg
ICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUFYWU1JRDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRDoKKyAgICAgICAgICAgIGNhc2Ug
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlE
WU1JRDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdf
UFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKICAgICAgICAgICAgICAgICBzcmNSZWN0LnNl
dFkoc3JjUmVjdC55KCkgKyBpbWFnZVNpemUuaGVpZ2h0KCkgLyAyIC0gc3JjUmVjdC5oZWlnaHQo
KSAvIDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDoKLSAgICAg
ICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1JRFlNQVg6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYOgor
ICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSURZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgogICAgICAgICAg
ICAgICAgIHNyY1JlY3Quc2V0WShzcmNSZWN0LnkoKSArIGltYWdlU2l6ZS5oZWlnaHQoKSAtIHNy
Y1JlY3QuaGVpZ2h0KCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVm
YXVsdDoKQEAgLTI1MSwxNCArMjUxLDE0IEBAIHZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
dHJhbnNmb3JtUmUKICAgICAgICAgICAgIGZsb2F0IGRlc3RUb1NyY011bHRpcGxpZXIgPSBzcmNS
ZWN0LmhlaWdodCgpIC8gZGVzdFJlY3QuaGVpZ2h0KCk7CiAgICAgICAgICAgICBzcmNSZWN0LnNl
dFdpZHRoKGRlc3RSZWN0LndpZHRoKCkgKiBkZXN0VG9TcmNNdWx0aXBsaWVyKTsKICAgICAgICAg
ICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTjoKLSAgICAgICAgICAgIGNh
c2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlN
SUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSURZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOOgorICAgICAgICAg
ICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1hNSURZTUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgogICAgICAgICAgICAgICAgIHNy
Y1JlY3Quc2V0WChzcmNSZWN0LngoKSArIGltYWdlU2l6ZS53aWR0aCgpIC8gMiAtIHNyY1JlY3Qu
d2lkdGgoKSAvIDIpOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoK
LSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fWE1BWFlNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgorICAgICAgICAgICAgY2FzZSBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZ
TUlOOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgogICAg
ICAgICAgICAgICAgIHNyY1JlY3Quc2V0WChzcmNSZWN0LngoKSArIGltYWdlU2l6ZS53aWR0aCgp
IC0gc3JjUmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGRlZmF1bHQ6CkBAIC0yNzAsNyArMjcwLDcgQEAgdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
Ojp0cmFuc2Zvcm1SZQogICAgIH0KIH0KIAotQWZmaW5lVHJhbnNmb3JtIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OmdldENUTShmbG9hdCBsb2dpY2FsWCwgZmxvYXQgbG9naWNhbFksIGZsb2F0IGxv
Z2ljYWxXaWR0aCwgZmxvYXQgbG9naWNhbEhlaWdodCwgZmxvYXQgcGh5c2ljYWxXaWR0aCwgZmxv
YXQgcGh5c2ljYWxIZWlnaHQpIGNvbnN0CitBZmZpbmVUcmFuc2Zvcm0gU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlOjpnZXRDVE0oZmxvYXQgbG9naWNhbFgsIGZsb2F0IGxvZ2ljYWxZLCBmbG9h
dCBsb2dpY2FsV2lkdGgsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIGZsb2F0IHBoeXNpY2FsV2lkdGgs
IGZsb2F0IHBoeXNpY2FsSGVpZ2h0KSBjb25zdAogewogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFu
c2Zvcm07CiAgICAgaWYgKCFsb2dpY2FsV2lkdGggfHwgIWxvZ2ljYWxIZWlnaHQgfHwgIXBoeXNp
Y2FsV2lkdGggfHwgIXBoeXNpY2FsSGVpZ2h0KSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgQWZmaW5l
VHJhbnNmb3JtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OgogICAgIHJldHVybiB0cmFuc2Zvcm07
CiB9CiAKLVN0cmluZyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjp2YWx1ZUFzU3RyaW5nKCkgY29u
c3QKK1N0cmluZyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OnZhbHVlQXNTdHJpbmcoKSBj
b25zdAogewogICAgIFN0cmluZyBhbGlnblR5cGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgJKHJldmlzaW9uIDIwODU2OCkJ
KGZyb20gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaDoyMDg1Njgp
CisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgJKHdv
cmtpbmcgY29weSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlLmgJKHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyAr
MjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFz
cyBGbG9hdFJlY3Q7CiAKLWNsYXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8geworY2xhc3MgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBlbnVtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9UeXBlIHsKQEAgLTUxLDcg
KzUxLDcgQEAgcHVibGljOgogICAgICAgICBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0UgPSAyCiAgICAg
fTsKIAotICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWUoKTsKIAogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEFsaWduKHVuc2lnbmVk
IHNob3J0KTsKICAgICB1bnNpZ25lZCBzaG9ydCBhbGlnbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxp
Z247IH0KQEAgLTc1LDkgKzc1LDkgQEAgcHJpdmF0ZToKICAgICBib29sIHBhcnNlSW50ZXJuYWwo
Y29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUp
OwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz4gewotICAgIHN0YXRpYyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIGluaXRpYWxW
YWx1ZSgpIHsgcmV0dXJuIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKTsgfQotICAgIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgdHlwZSkgeyByZXR1
cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5
VHJhaXRzPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT4geworICAgIHN0YXRpYyBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWUgaW5pdGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlKCk7IH0KKyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3Ry
aW5nKCk7IH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNpb24gMjA4NTY4KQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdTcGVjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIFN0cmlu
ZyBTVkdWaWV3U3BlYzo6dmlld0JveFN0cmluZygpIGNvbnMKIAogU3RyaW5nIFNWR1ZpZXdTcGVj
OjpwcmVzZXJ2ZUFzcGVjdFJhdGlvU3RyaW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU1ZHUHJv
cGVydHlUcmFpdHM8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz46OnRvU3RyaW5nKG1fcHJlc2VydmVB
c3BlY3RSYXRpbyk7CisgICAgcmV0dXJuIFNWR1Byb3BlcnR5VHJhaXRzPFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZT46OnRvU3RyaW5nKG1fcHJlc2VydmVBc3BlY3RSYXRpbyk7CiB9CiAKIFNW
R0VsZW1lbnQqIFNWR1ZpZXdTcGVjOjp2aWV3VGFyZ2V0KCkgY29uc3QKQEAgLTE2Myw3ICsxNjMs
NyBAQCBSZWY8U1ZHQW5pbWF0ZWRQcm9wZXJ0eT4gU1ZHVmlld1NwZWM6OmxvCiB7CiAgICAgQVNT
RVJUKG93bmVyVHlwZSk7CiAgICAgQVNTRVJUKG93bmVyVHlwZS0+bV9jb250ZXh0RWxlbWVudCk7
Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxT
VkdFbGVtZW50LCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8+KG93bmVyVHlwZS0+bV9jb250ZXh0RWxlbWVudCwgcHJlc2VydmVBc3BlY3RSYXRp
b1Byb3BlcnR5SW5mbygpLCBvd25lclR5cGUtPm1fcHJlc2VydmVBc3BlY3RSYXRpbyk7CisgICAg
cmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdFbGVt
ZW50LCBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8sIFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZT4ob3duZXJUeXBlLT5tX2NvbnRleHRFbGVtZW50LCBwcmVzZXJ2ZUFzcGVjdFJhdGlv
UHJvcGVydHlJbmZvKCksIG93bmVyVHlwZS0+bV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKIH0KIAog
UmVmPFNWR0FuaW1hdGVkUHJvcGVydHk+IFNWR1ZpZXdTcGVjOjpsb29rdXBPckNyZWF0ZVRyYW5z
Zm9ybVdyYXBwZXIoU1ZHVmlld1NwZWMqIG93bmVyVHlwZSkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2
b2lkIFNWR1ZpZXdTcGVjOjpyZXNldCgpCiAgICAgbV96b29tQW5kUGFuID0gU1ZHWm9vbUFuZFBh
bk1hZ25pZnk7CiAgICAgbV90cmFuc2Zvcm0uY2xlYXIoKTsKICAgICBtX3ZpZXdCb3ggPSBGbG9h
dFJlY3QoKTsKLSAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8gPSBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvKCk7CisgICAgbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvID0gU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlKCk7CiAgICAgbV92aWV3VGFyZ2V0U3RyaW5nID0gZW1wdHlTdHJpbmcoKTsKIH0KIApA
QCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgU1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMoY29uc3Qg
U3QKICAgICAgICAgICAgIGlmIChjdXJyVmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMg
IT0gJygnKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGN1cnJW
aWV3U3BlYysrOwotICAgICAgICAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFz
cGVjdFJhdGlvOworICAgICAgICAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIHByZXNl
cnZlQXNwZWN0UmF0aW87CiAgICAgICAgICAgICBpZiAoIXByZXNlcnZlQXNwZWN0UmF0aW8ucGFy
c2UoY3VyclZpZXdTcGVjLCBlbmQsIGZhbHNlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgICAgICAgICBzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKHByZXNlcnZl
QXNwZWN0UmF0aW8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgJKHJldmlzaW9uIDIw
ODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5oCSh3b3JraW5nIGNvcHkp
CkBAIC02NCw4ICs2NCw4IEBAIHB1YmxpYzoKIAogICAgIC8vIEN1c3RvbSBhbmltYXRlZCAncHJl
c2VydmVBc3BlY3RSYXRpbycgcHJvcGVydHkuCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJlc2Vy
dmVBc3BlY3RSYXRpbz4gcHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdGVkKCk7Ci0gICAgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyYgcHJlc2VydmVBc3BlY3RSYXRpbygpIHsgcmV0dXJuIG1fcHJlc2Vy
dmVBc3BlY3RSYXRpbzsgfQotICAgIHZvaWQgc2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1
ZShjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSB7IG1f
cHJlc2VydmVBc3BlY3RSYXRpbyA9IHByZXNlcnZlQXNwZWN0UmF0aW87IH0KKyAgICBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8oKSB7IHJldHVybiBtX3By
ZXNlcnZlQXNwZWN0UmF0aW87IH0KKyAgICB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW9CYXNl
VmFsdWUoY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKSB7IG1fcHJlc2VydmVBc3BlY3RSYXRpbyA9IHByZXNlcnZlQXNwZWN0UmF0aW87IH0KIAog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBTVkdWaWV3U3BlYyhTVkdFbGVtZW50Jik7CkBAIC04Niw3
ICs4Niw3IEBAIHByaXZhdGU6CiAgICAgU1ZHWm9vbUFuZFBhblR5cGUgbV96b29tQW5kUGFuIHsg
U1ZHWm9vbUFuZFBhbk1hZ25pZnkgfTsKICAgICBTVkdUcmFuc2Zvcm1MaXN0IG1fdHJhbnNmb3Jt
OwogICAgIEZsb2F0UmVjdCBtX3ZpZXdCb3g7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBt
X3ByZXNlcnZlQXNwZWN0UmF0aW87CisgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIG1f
cHJlc2VydmVBc3BlY3RSYXRpbzsKICAgICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwogfTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lv
biAyMDg1NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTksNyArMzU5LDcgQEAgdm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUlu
dHJpbnNpY0RpbWVuc2lvbgogCiAgICAgaW50cmluc2ljV2lkdGggPSByb290RWxlbWVudC0+aW50
cmluc2ljV2lkdGgoKTsKICAgICBpbnRyaW5zaWNIZWlnaHQgPSByb290RWxlbWVudC0+aW50cmlu
c2ljSGVpZ2h0KCk7Ci0gICAgaWYgKHJvb3RFbGVtZW50LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCku
YWxpZ24oKSA9PSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19OT05FKQorICAgIGlmIChyb290RWxlbWVudC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLmFsaWdu
KCkgPT0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19OT05FKQogICAgICAgICByZXR1cm47CiAKICAgICBpbnRyaW5zaWNSYXRpbyA9IHJvb3RFbGVt
ZW50LT52aWV3Qm94KCkuc2l6ZSgpOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNz
L2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAJKHJldmlzaW9uIDIwODU2OCkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yOSwxNCArMjksMTMgQEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4dC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNp
bmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyaW5n
Q29udGV4dC5oIgogI2luY2x1ZGUgIlNWR1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlRleHRT
dHJlYW0uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1GRUltYWdlOjpGRUltYWdlKEZpbHRl
ciYgZmlsdGVyLCBSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRl
ciwgUmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
JiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAs
IG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBtX2RvY3VtZW50KG51bGxwdHIpCkBAIC00NCw3ICs0Myw3
IEBAIEZFSW1hZ2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0cjwKIHsKIH0KIAotRkVJ
bWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRlciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBT
dHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0
UmF0aW8pCitGRUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgaHJlZiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
JiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAs
IG1fZG9jdW1lbnQoJmRvY3VtZW50KQogICAgICwgbV9ocmVmKGhyZWYpCkBAIC01MiwxMiArNTEs
MTIgQEAgRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRlciwgRG9jdW1lbgogewogfQogCi1S
ZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aEltYWdlKEZpbHRlciYgZmlsdGVyLCBSZWZQ
dHI8SW1hZ2U+IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFz
cGVjdFJhdGlvKQorUmVmPEZFSW1hZ2U+IEZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZShGaWx0ZXIm
IGZpbHRlciwgUmVmUHRyPEltYWdlPiBpbWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFSW1hZ2UoZmlsdGVyLCBpbWFnZSwgcHJlc2VydmVBc3BlY3RSYXRpbykpOwogfQogCi1SZWY8
RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShGaWx0ZXImIGZpbHRlciwg
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6
Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShGaWx0ZXImIGZpbHRlciwgRG9jdW1lbnQmIGRvY3VtZW50
LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYg
cHJlc2VydmVBc3BlY3RSYXRpbykKIHsKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdl
KGZpbHRlciwgZG9jdW1lbnQsIGhyZWYsIHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJ
KHJldmlzaW9uIDIwODU2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJz
L1NWR0ZFSW1hZ2UuaAkod29ya2luZyBjb3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBT
VkdGRUltYWdlX2gKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaCIKKyNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCw4ICszNCw4IEBAIGNsYXNzIFJl
bmRlckVsZW1lbnQ7CiAKIGNsYXNzIEZFSW1hZ2UgZmluYWwgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShGaWx0
ZXImLCBSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7Ci0gICAg
c3RhdGljIFJlZjxGRUltYWdlPiBjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciYsIERvY3Vt
ZW50JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOworICAg
IHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFn
ZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOworICAgIHN0YXRpYyBSZWY8
RkVJbWFnZT4gY3JlYXRlV2l0aElSSVJlZmVyZW5jZShGaWx0ZXImLCBEb2N1bWVudCYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogCiAgICAgdm9p
ZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBmaW5hbDsKICAgICB2b2lkIGR1bXAoKSBmaW5hbDsK
QEAgLTQ4LDggKzQ4LDggQEAgcHVibGljOgogICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5G
RUltYWdlKCkgeyB9Ci0gICAgRkVJbWFnZShGaWx0ZXImLCBSZWZQdHI8SW1hZ2U+LCBjb25zdCBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7Ci0gICAgRkVJbWFnZShGaWx0ZXImLCBEb2N1bWVudCYs
IGNvbnN0IFN0cmluZyYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKKyAgICBGRUlt
YWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9W
YWx1ZSYpOworICAgIEZFSW1hZ2UoRmlsdGVyJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBj
b25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmKTsKICAgICBSZW5kZXJFbGVtZW50KiBy
ZWZlcmVuY2VkUmVuZGVyZXIoKSBjb25zdDsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsK
QEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0ZToKICAgICAvLyBtX2RvY3VtZW50IHdpbGwgbmV2ZXIg
YmUgYSBkYW5nbGluZyByZWZlcmVuY2UuIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTkyNDMKICAgICBEb2N1bWVudCogbV9kb2N1bWVudDsKICAgICBTdHJpbmcg
bV9ocmVmOwotICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlv
OworICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294464</attachid>
            <date>2016-11-10 20:02:53 -0800</date>
            <delta_ts>2016-11-10 22:32:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164622-20161110195841.patch</filename>
            <type>text/plain</type>
            <size>89212</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwODU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc3IEBACisyMDE2LTExLTEwICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1NWR10gU3RhcnQgbW92aW5nIHNwZWNp
YWwgY2FzaW5nIG9mIFNWRyBvdXQgb2YgdGhlIGJpbmRpbmdzIC0gU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0
NjIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFy
dCAyIG9mIG1vdmluZyBzcGVjaWFsIGNhc2luZyBvZiBTVkcgb3V0IG9mIHRoZSBiaW5kaW5ncy4K
KworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgQWRkIG5ldyBmaWxlcy4KKworICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbToKKyAgICAgICAgKEdlbmVyYXRlQ29tcGls
ZVRpbWVDaGVja0ZvckVudW1zSWZOZWVkZWQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
SURMQXR0cmlidXRlcy50eHQ6CisgICAgICAgIEFsbG93IHNwZWNpZnlpbmcgYSBkaWZmZXJlbnQg
c2NvcGUgZm9yIHRoZSBjb25zdGFudHMgdG8gYmUgZGVjbGFyZWQgaW4uCisgICAgICAgIFRoaXMg
YWxsb3dzIHVzIHRvIGhhdmUgb25seSBvbmUgY29weSBvZiB0aGUgY29uc3RhbnRzIGluIHRoZSBp
bXBsZW1lbnRhdGlvbgorICAgICAgICBvZiBTVkdBbmdsZS9TVkdBbmdsZVZhbHVlIGFuZCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS4KKworICAgICAg
ICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5oOgorICAgICAgICBSZW1vdmUgdW5uZWNlc3NhcnkgI2luY2x1ZGUuCisKKyAg
ICAgICAgKiBzdmcvU1ZHQW5nbGUuaDoKKyAgICAgICAgUmVtb3ZlIHJlZHVuZGFudCBlbnVtIGRl
Y2xhcmF0aW9uLgorCisgICAgICAgICogc3ZnL1NWR0FuZ2xlLmlkbDoKKyAgICAgICAgU3BlY2lm
eSBhIENvbnN0YW50c1Njb3BlIG9mIFNWR0FuZ2xlVmFsdWUuCisKKyAgICAgICAgKiByZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0lt
YWdlOjp1cGRhdGVJbWFnZVZpZXdwb3J0KToKKyAgICAgICAgKiBzdmcvUGF0dGVybkF0dHJpYnV0
ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm5BdHRyaWJ1dGVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvKToKKyAgICAgICAgKFdlYkNvcmU6OlBhdHRlcm5BdHRyaWJ1dGVzOjpzZXRQcmVzZXJ2
ZUFzcGVjdFJhdGlvKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRp
b0FuaW1hdG9yOjpjb25zdHJ1Y3RGcm9tU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Fu
aW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpb0FuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmg6CisgICAg
ICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZFR5cGU6OmNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW8pOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlZFR5cGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6cHJlc2Vy
dmVBc3BlY3RSYXRpbyk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAg
ICAgICogc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaXRU
b1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0pOgorICAgICAgICAqIHN2Zy9TVkdGaXRU
b1ZpZXdCb3guaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpdFRvVmlld0JveDo6cGFyc2VBdHRy
aWJ1dGUpOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgICogc3ZnL1NW
R1ZpZXdTcGVjLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1ZpZXdTcGVjOjpsb29rdXBP
ckNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW9XcmFwcGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1ZpZXdTcGVjOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3U3BlYzo6cGFyc2VW
aWV3U3BlYyk6CisgICAgICAgICogc3ZnL1NWR1ZpZXdTcGVjLmg6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL1NWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlOjpjb21wdXRl
SW50cmluc2ljRGltZW5zaW9ucyk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZSk6CisgICAgICAgIChXZWJDb3Jl
OjpGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKToKKyAgICAgICAgKiBzdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmg6CisgICAgICAgIFJlcGxhY2UgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbyB1c2FnZSB3aXRoIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS4KKworICAgICAg
ICAqIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBz
dmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oOiBSZXBsYWNlZC4KKyAgICAgICAgKiBzdmcvU1ZH
UHJlc2VydmVBc3BlY3RSYXRpby5pZGw6CisgICAgICAgICogc3ZnL1NWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZS5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmNwcC4KKyAgICAgICAgKiBzdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmguCisgICAgICAgIFJlbmFtZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIHRvIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZSBhbmQgYWRkIGEgbmV3IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8K
KyAgICAgICAgdGhhdCBhY3RzIGFzIHRoZSBiaW5kaW5nIG9iamVjdC4gCisKIDIwMTYtMTEtMTAg
IFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxsYXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBS
RUdSRVNTSU9OKHIyMDcxODIpOiBbaU9TXSBDcmFzaCBiZWNhdXNlIG9mIHBhc3NpbmcgZnJlZWQg
Q0ZEaWN0aW9uYXJ5UmVmIHRvIENHIHdoZW4gZGVjb2RpbmcgYSBzdWItc2FtcGxlZCBsYXJnZSBp
bWFnZQpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwODU3NSkKKysrIFNvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yODAyLDcgKzI4MDIs
NyBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAogICAg
IHN2Zy9TVkdQb2x5Z29uRWxlbWVudC5jcHAKICAgICBzdmcvU1ZHUG9seWxpbmVFbGVtZW50LmNw
cAotICAgIHN2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAorICAgIHN2Zy9TVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWUuY3BwCiAgICAgc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5j
cHAKICAgICBzdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCiAgICAgc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCShyZXZpc2lvbiAyMDg1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI4NzgsNiArMjg3OCw3IEBA
CiAJCTdDNzk0MUU1MUM1NkMyOTMwMEE0QzU4RSAvKiBEYXRhRGV0ZWN0b3JzQ29yZVNvZnRMaW5r
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3Qzc5NDFF
MzFDNTZDMjkzMDBBNEM1OEUgLyogRGF0YURldGVjdG9yc0NvcmVTb2Z0TGluay5oICovOyB9Owog
CQk3QzgzREU4NjFEMDRDQzVEMDBGRUJDRjMgLyogU3ByaW5nU29sdmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QzgzREU4NTFEMDRDQkQ0MDBGRUJD
RjMgLyogU3ByaW5nU29sdmVyLmggKi87IH07CiAJCTdDOEYyMjQ0MUREM0MyRjYwMEU5MkRBMyAv
KiBTVkdBbmdsZVZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDdDOEYyMjQyMUREM0IzQjkwMEU5MkRBMyAvKiBTVkdBbmdsZVZhbHVlLmNwcCAq
LzsgfTsKKwkJN0M4RjIyNDcxREQzRDFDQTAwRTkyREEzIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA3QzhGMjI0NTFERDNEMUM1MDBFOTJEQTMgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
LmNwcCAqLzsgfTsKIAkJN0M5M0YzNDkxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA3QzkzRjM0NzFBQTZCQTVFMDBBOThCQUIgLyogQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9u
LmNwcCAqLzsgfTsKIAkJN0M5M0YzNEExQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gN0M5M0YzNDgxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTdDOTNG
MzREMUFBNkJGMDcwMEE5OEJBQiAvKiBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0M5M0YzNEIxQUE2QkYw
NzAwQTk4QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgKi87IH07CkBAIC00NjYz
LDcgKzQ2NjQsNiBAQAogCQlCMjIyN0E5MTBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVs
ZW1lbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIy
MjI3OEZCMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2x5Z29uRWxlbWVudC5oICovOyB9OwogCQlC
MjIyN0E5MzBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyMjI3OEZEMEQwMEJGMjEw
MDcxQjc4MiAvKiBTVkdQb2x5bGluZUVsZW1lbnQuY3BwICovOyB9OwogCQlCMjIyN0E5NDBEMDBC
RjIyMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzhGRTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZH
UG9seWxpbmVFbGVtZW50LmggKi87IH07Ci0JCUIyMjI3QTk2MEQwMEJGMjIwMDcxQjc4MiAvKiBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEIyMjI3OTAwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmNwcCAqLzsgfTsKIAkJQjIyMjdBOTcwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEIyMjI3OTAxMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QjIyMjdBOTkwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjIyNzkwMzBE
MDBCRjIxMDA3MUI3ODIgLyogU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCAqLzsgfTsKIAkJ
QjIyMjdBOUEwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjIyMjc5MDQwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oICovOyB9OwpAQCAtMTAz
MTUsNiArMTAzMTUsOCBAQAogCQk3QzgzREU4NTFEMDRDQkQ0MDBGRUJDRjMgLyogU3ByaW5nU29s
dmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNwcmluZ1NvbHZlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3QzhGMjI0MjFERDNCM0I5MDBFOTJEQTMgLyog
U1ZHQW5nbGVWYWx1ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBT
VkdBbmdsZVZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M4RjIyNDMx
REQzQjNCOTAwRTkyREEzIC8qIFNWR0FuZ2xlVmFsdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU1ZHQW5nbGVWYWx1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQk3QzhGMjI0NTFERDNEMUM1MDBFOTJEQTMgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTdDOEYyMjQ2
MUREM0QxQzUwMEU5MkRBMyAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTdDOTNGMzQ3MUFBNkJBNUUwMEE5OEJBQiAv
KiBDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQ29tcGlsZWRDb250ZW50RXh0ZW5zaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNDgxQUE2QkE1RTAwQTk4QkFCIC8qIENvbXBpbGVkQ29udGVu
dEV4dGVuc2lvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb21waWxlZENv
bnRlbnRFeHRlbnNpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJN0M5M0YzNEIx
QUE2QkYwNzAwQTk4QkFCIC8qIENvbnRlbnRFeHRlbnNpb25Db21waWxlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uQ29tcGlsZXIuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTI0MjQsNyArMTI0MjYsNiBAQAogCQlC
MjIyNzhGRDBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUG9seWxpbmVFbGVtZW50LmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQb2x5bGluZUVsZW1lbnQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjIyNzhGRTBEMDBCRjIxMDA3MUI3ODIgLyog
U1ZHUG9seWxpbmVFbGVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdQb2x5bGluZUVsZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc4
RkYwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5pZGwgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
dGV4dDsgcGF0aCA9IFNWR1BvbHlsaW5lRWxlbWVudC5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUIyMjI3OTAwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MDEw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MDIwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8uaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvLmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjIyMjc5MDMwRDAw
QkYyMTAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTg0LDkgKzIxMTg1LDEwIEBACiAJCQkJ
QjIyMjc4RkQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5jcHAgKi8sCiAJ
CQkJQjIyMjc4RkUwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5oICovLAog
CQkJCUIyMjI3OEZGMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQb2x5bGluZUVsZW1lbnQuaWRsICov
LAotCQkJCUIyMjI3OTAwMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
LmNwcCAqLywKIAkJCQlCMjIyNzkwMTBEMDBCRjIxMDA3MUI3ODIgLyogU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpby5oICovLAogCQkJCUIyMjI3OTAyMEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvLmlkbCAqLywKKwkJCQk3QzhGMjI0NTFERDNEMUM1MDBFOTJEQTMgLyogU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmNwcCAqLywKKwkJCQk3QzhGMjI0NjFERDNEMUM1MDBF
OTJEQTMgLyogU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmggKi8sCiAJCQkJQjIyMjc5MDMw
RDAwQkYyMTAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgKi8sCiAJCQkJ
QjIyMjc5MDQwRDAwQkYyMTAwNzFCNzgyIC8qIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oICov
LAogCQkJCUIyMjI3OTA1MEQwMEJGMjEwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuaWRsICovLApAQCAtMjg2OTksNiArMjg3MDEsNyBAQAogCQkJCTFDMDkzOUVBMUExM0UxMjkw
MEI3ODhFNSAvKiBDYWNoZWRTVkdGb250LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTA3NTM4NjAy
MTQ0ODlFOTgwMEI3ODQ1MiAvKiBDYWNoZWRUZXh0VHJhY2suY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJQkNCMTZDMjcwOTc5QzNCRDAwNDY3NzQxIC8qIENhY2hlZFhTTFN0eWxlU2hlZXQuY3BwIGlu
IFNvdXJjZXMgKi8sCisJCQkJN0M4RjIyNDcxREQzRDFDQTAwRTkyREEzIC8qIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFNDNBRjhFNjFBQzVCN0U4
MDBDQTcxN0UgLyogQ2FjaGVWYWxpZGF0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTQ5QUUy
RDk2MTM0RUU1RjkwMDcyOTIwQSAvKiBDYWxjdWxhdGlvblZhbHVlLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUIxODI3NDkzMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBp
biBTb3VyY2VzICovLApAQCAtMzEyNjksNyArMzEyNzIsNiBAQAogCQkJCUIyMjI3QThFMEQwMEJG
MjIwMDcxQjc4MiAvKiBTVkdQb2x5RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCMjIy
N0E5MDBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUG9seWdvbkVsZW1lbnQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJQjIyMjdBOTMwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1BvbHlsaW5lRWxlbWVudC5j
cHAgaW4gU291cmNlcyAqLywKLQkJCQlCMjIyN0E5NjBEMDBCRjIyMDA3MUI3ODIgLyogU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCNTQzQjg1NzE3RUI3NThG
MDAzQkU5M0EgLyogU1ZHUHJvcGVydHlJbmZvLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyMjI3
QTk5MEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIyMjdBOUQwRDAwQkYyMjAwNzFCNzgyIC8qIFNWR1JlY3RFbGVtZW50
LmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvci5wbQkocmV2aXNpb24gMjA4NTc1KQorKysgU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yLnBtCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjcsNyArMTI3LDYgQEAgbXkgJXN2Z1R5cGVOZWVkaW5nVGVhck9mZiA9ICgKICAgICAiU1ZH
UGF0aFNlZ0xpc3QiID0+ICJTVkdQYXRoU2VnTGlzdFByb3BlcnR5VGVhck9mZiIsCiAgICAgIlNW
R1BvaW50IiA9PiAiU1ZHUHJvcGVydHlUZWFyT2ZmPFNWR1BvaW50PiIsCiAgICAgIlNWR1BvaW50
TGlzdCIgPT4gIlNWR0xpc3RQcm9wZXJ0eVRlYXJPZmY8U1ZHUG9pbnRMaXN0PiIsCi0gICAgIlNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8iID0+ICJTVkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz4iLAogICAgICJTVkdSZWN0IiA9PiAiU1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0
UmVjdD4iLAogICAgICJTVkdTdHJpbmdMaXN0IiA9PiAiU1ZHU3RhdGljTGlzdFByb3BlcnR5VGVh
ck9mZjxTVkdTdHJpbmdMaXN0PiIsCiAgICAgIlNWR1RyYW5zZm9ybSIgPT4gIlNWR1Byb3BlcnR5
VGVhck9mZjxTVkdUcmFuc2Zvcm0+IiwKQEAgLTExMjcsMTQgKzExMjYsMTYgQEAgc3ViIEdlbmVy
YXRlQ29tcGlsZVRpbWVDaGVja0ZvckVudW1zSWZOZQogCiAgICAgcmV0dXJuICgpIGlmICRpbnRl
cmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJEb05vdENoZWNrQ29uc3RhbnRzIn0gfHwgIUB7
JGludGVyZmFjZS0+Y29uc3RhbnRzfTsKIAorICAgIG15ICRiYXNlU2NvcGUgPSAkaW50ZXJmYWNl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ29uc3RhbnRzU2NvcGUifSB8fCAkaW50ZXJmYWNlLT50
eXBlLT5uYW1lOworCiAgICAgbXkgQGNoZWNrcyA9ICgpOwogICAgIGZvcmVhY2ggbXkgJGNvbnN0
YW50IChAeyRpbnRlcmZhY2UtPmNvbnN0YW50c30pIHsKLSAgICAgICAgbXkgJGNsYXNzTmFtZSA9
ICRjb25zdGFudC0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57IkltcGxlbWVudGVkQnkifSB8fCAkaW50
ZXJmYWNlLT50eXBlLT5uYW1lOworICAgICAgICBteSAkc2NvcGUgPSAkY29uc3RhbnQtPmV4dGVu
ZGVkQXR0cmlidXRlcy0+eyJJbXBsZW1lbnRlZEJ5In0gfHwgJGJhc2VTY29wZTsKICAgICAgICAg
bXkgJG5hbWUgPSAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJSZWZsZWN0In0gfHwg
JGNvbnN0YW50LT5uYW1lOwogICAgICAgICBteSAkdmFsdWUgPSAkY29uc3RhbnQtPnZhbHVlOwog
ICAgICAgICBteSAkY29uZGl0aW9uYWwgPSAkY29uc3RhbnQtPmV4dGVuZGVkQXR0cmlidXRlcy0+
eyJDb25kaXRpb25hbCJ9OwogICAgICAgICBwdXNoKEBjaGVja3MsICIjaWYgIiAuICRnZW5lcmF0
b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmdGcm9tQXR0cmlidXRlVmFsdWUoJGNvbmRpdGlv
bmFsKSAuICJcbiIpIGlmICRjb25kaXRpb25hbDsKLSAgICAgICAgcHVzaChAY2hlY2tzLCAic3Rh
dGljX2Fzc2VydCgke2NsYXNzTmFtZX06OiRuYW1lID09ICR2YWx1ZSwgXCIkbmFtZSBpbiAkY2xh
c3NOYW1lIGRvZXMgbm90IG1hdGNoIHZhbHVlIGZyb20gSURMXCIpO1xuIik7CisgICAgICAgIHB1
c2goQGNoZWNrcywgInN0YXRpY19hc3NlcnQoJHtzY29wZX06OiR7bmFtZX0gPT0gJHt2YWx1ZX0s
IFwiJHtuYW1lfSBpbiAke3Njb3BlfSBkb2VzIG5vdCBtYXRjaCB2YWx1ZSBmcm9tIElETFwiKTtc
biIpOwogICAgICAgICBwdXNoKEBjaGVja3MsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25hbDsK
ICAgICB9CiAgICAgcHVzaChAY2hlY2tzLCAiXG4iKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvSURMQXR0cmlidXRlcy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAkocmV2aXNpb24gMjA4NTc1
KQorKysgU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9JRExBdHRyaWJ1dGVzLnR4dAko
d29ya2luZyBjb3B5KQpAQCAtMjksNiArMjksNyBAQCBDaGVja1NlY3VyaXR5CiBDaGVja1NlY3Vy
aXR5Rm9yTm9kZQogQ2xhbXAKIENvbmRpdGlvbmFsPSoKK0NvbnN0YW50c1Njb3BlPSoKIENvbnN0
cnVjdG9yCiBDb25zdHJ1Y3RvckNhbGxXaXRoPURvY3VtZW50fFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHR8U2NyaXB0U3RhdGUKIENvbnN0cnVjdG9yTWF5VGhyb3dFeGNlcHRpb24KSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gMjA4NTc1KQorKysgU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAxLDcg
KzEwMSw2IEBACiAjaW5jbHVkZSAiU1ZHRG9jdW1lbnQuaCIKICNpbmNsdWRlICJTVkdMb2NhdGFi
bGUuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgotI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0
UmF0aW8uaCIKICNpbmNsdWRlICJTVkdWaWV3RWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1ZpZXdT
cGVjLmgiCiAjaW5jbHVkZSAiU2NoZW1lUmVnaXN0cnkuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyMDg1NzUp
CisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzMsNyArNzMsNyBAQCBib29sIFJlbmRlclNWR0ltYWdlOjp1cGRhdGVJ
bWFnZVZpZXdwb3J0CiAgICAgLy8gSW1hZ2VzIHdpdGggcHJlc2VydmVBc3BlY3RSYXRpbz1ub25l
IHNob3VsZCBmb3JjZSBub24tdW5pZm9ybSBzY2FsaW5nLiBUaGlzIGNhbiBiZSBhY2hpZXZlZAog
ICAgIC8vIGJ5IHNldHRpbmcgdGhlIGltYWdlJ3MgY29udGFpbmVyIHNpemUgdG8gaXRzIGludHJp
bnNpYyBzaXplLgogICAgIC8vIFNlZTogaHR0cDovL3d3dy53My5vcmcvVFIvU1ZHL3NpbmdsZS1w
YWdlLmh0bWwsIDcuOCBUaGUg4oCYcHJlc2VydmVBc3BlY3RSYXRpb+KAmSBhdHRyaWJ1dGUuCi0g
ICAgaWYgKGltYWdlRWxlbWVudCgpLnByZXNlcnZlQXNwZWN0UmF0aW8oKS5hbGlnbigpID09IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUpIHsKKyAg
ICBpZiAoaW1hZ2VFbGVtZW50KCkucHJlc2VydmVBc3BlY3RSYXRpbygpLmFsaWduKCkgPT0gU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKSB7
CiAgICAgICAgIGlmIChDYWNoZWRJbWFnZSogY2FjaGVkSW1hZ2UgPSBpbWFnZVJlc291cmNlKCku
Y2FjaGVkSW1hZ2UoKSkgewogICAgICAgICAgICAgTGF5b3V0U2l6ZSBpbnRyaW5zaWNTaXplID0g
Y2FjaGVkSW1hZ2UtPmltYWdlU2l6ZUZvclJlbmRlcmVyKDAsIHN0eWxlKCkuZWZmZWN0aXZlWm9v
bSgpKTsKICAgICAgICAgICAgIGlmIChpbnRyaW5zaWNTaXplICE9IGltYWdlUmVzb3VyY2UoKS5p
bWFnZVNpemUoc3R5bGUoKS5lZmZlY3RpdmVab29tKCkpKSB7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5oCShyZXZpc2lvbiAyMDg1NzUpCisr
KyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI3LDcgKzI3LDYgQEAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdNb2RlbE9iamVjdC5oIgot
I2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvUGF0dGVybkF0dHJpYnV0ZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvUGF0dGVybkF0dHJpYnV0ZXMuaAkocmV2aXNpb24g
MjA4NTc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1BhdHRlcm5BdHRyaWJ1dGVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IFBhdHRlcm5BdHRyaWJ1dGVzIHsKICAg
ICBTVkdMZW5ndGggd2lkdGgoKSBjb25zdCB7IHJldHVybiBtX3dpZHRoOyB9CiAgICAgU1ZHTGVu
Z3RoIGhlaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1faGVpZ2h0OyB9CiAgICAgRmxvYXRSZWN0IHZp
ZXdCb3goKSBjb25zdCB7IHJldHVybiBtX3ZpZXdCb3g7IH0KLSAgICBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW8oKSBjb25zdCB7IHJldHVybiBtX3ByZXNlcnZlQXNw
ZWN0UmF0aW87IH0KKyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUgcHJlc2VydmVBc3Bl
Y3RSYXRpbygpIGNvbnN0IHsgcmV0dXJuIG1fcHJlc2VydmVBc3BlY3RSYXRpbzsgfQogICAgIFNW
R1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgcGF0dGVyblVuaXRzKCkgY29uc3QgeyByZXR1cm4gbV9w
YXR0ZXJuVW5pdHM7IH0KICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRUeXBlIHBhdHRlcm5Db250
ZW50VW5pdHMoKSBjb25zdCB7IHJldHVybiBtX3BhdHRlcm5Db250ZW50VW5pdHM7IH0KICAgICBB
ZmZpbmVUcmFuc2Zvcm0gcGF0dGVyblRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fcGF0dGVy
blRyYW5zZm9ybTsgfQpAQCAtOTIsNyArOTIsNyBAQCBzdHJ1Y3QgUGF0dGVybkF0dHJpYnV0ZXMg
ewogICAgICAgICBtX3ZpZXdCb3hTZXQgPSB0cnVlOwogICAgIH0KIAotICAgIHZvaWQgc2V0UHJl
c2VydmVBc3BlY3RSYXRpbyhjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiB2YWx1ZSkKKyAg
ICB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW8oY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlJiB2YWx1ZSkKICAgICB7CiAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpbyA9IHZh
bHVlOwogICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW9TZXQgPSB0cnVlOwpAQCAtMTQwLDcg
KzE0MCw3IEBAIHByaXZhdGU6CiAgICAgU1ZHTGVuZ3RoIG1fd2lkdGg7CiAgICAgU1ZHTGVuZ3Ro
IG1faGVpZ2h0OwogICAgIEZsb2F0UmVjdCBtX3ZpZXdCb3g7Ci0gICAgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbyBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CisgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlIG1fcHJlc2VydmVBc3BlY3RSYXRpbzsKICAgICBTVkdVbml0VHlwZXM6OlNWR1VuaXRU
eXBlIG1fcGF0dGVyblVuaXRzOwogICAgIFNWR1VuaXRUeXBlczo6U1ZHVW5pdFR5cGUgbV9wYXR0
ZXJuQ29udGVudFVuaXRzOwogICAgIEFmZmluZVRyYW5zZm9ybSBtX3BhdHRlcm5UcmFuc2Zvcm07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDIwODU3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0
NCw3ICsxNDQsNyBAQAogI2luY2x1ZGUgIlNWR1BvbHlFbGVtZW50LmNwcCIKICNpbmNsdWRlICJT
VkdQb2x5Z29uRWxlbWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHUG9seWxpbmVFbGVtZW50LmNwcCIK
LSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcCIKKyNpbmNsdWRlICJTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwIgogI2luY2x1ZGUgIlNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5jcHAiCiAjaW5jbHVkZSAiU1ZHUmVjdEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR1NW
R0VsZW1lbnQuY3BwIgpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuZ2xlLmgJKHJldmlzaW9uIDIwODU3NSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiwx
NiArMzIsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFNWR0FuZ2xlIDogcHVibGlj
IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdBbmdsZVZhbHVlPiB7CiBwdWJsaWM6Ci0gICAgLy8gRklY
TUU6IFRoaXMgaXMgZHVwbGljYXRlZCBpbiBTVkdBbmdsZVZhbHVlLiBXZSBzaG91bGQgZmluZCBz
b21ld2F5IHRvIGhhdmUKLSAgICAvLyBvbmx5IG9uZSBjb3B5LCBidXQgZm9yIG5vdywgdGhpcyBv
bmUgaXMgbmVlZGVkIHRvIHNhdGlzZnkgdGhlIGJpbmRpbmdzLgotICAgIGVudW0gU1ZHQW5nbGVU
eXBlIHsKLSAgICAgICAgU1ZHX0FOR0xFVFlQRV9VTktOT1dOID0gMCwKLSAgICAgICAgU1ZHX0FO
R0xFVFlQRV9VTlNQRUNJRklFRCA9IDEsCi0gICAgICAgIFNWR19BTkdMRVRZUEVfREVHID0gMiwK
LSAgICAgICAgU1ZHX0FOR0xFVFlQRV9SQUQgPSAzLAotICAgICAgICBTVkdfQU5HTEVUWVBFX0dS
QUQgPSA0Ci0gICAgfTsKLQogICAgIHN0YXRpYyBSZWY8U1ZHQW5nbGU+IGNyZWF0ZShTVkdBbmlt
YXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwgU1ZH
QW5nbGVWYWx1ZSYgdmFsdWUpCiAgICAgewogICAgICAgICBBU1NFUlQoYW5pbWF0ZWRQcm9wZXJ0
eSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5nbGUuaWRsCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwJKHJldmlzaW9uIDIwODU3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmdsZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIwLDcgKzIw
LDkgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKLWludGVyZmFjZSBT
VkdBbmdsZSB7IAorWworICAgIENvbnN0YW50c1Njb3BlPVNWR0FuZ2xlVmFsdWUKK10gaW50ZXJm
YWNlIFNWR0FuZ2xlIHsgCiAgICAgLy8gQW5nbGUgVW5pdCBUeXBlcwogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IFNWR19BTkdMRVRZUEVfVU5LTk9XTiA9IDA7CiAgICAgY29uc3QgdW5zaWduZWQg
c2hvcnQgU1ZHX0FOR0xFVFlQRV9VTlNQRUNJRklFRCA9IDE7CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2
aXNpb24gMjA4NTc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUHJlc2VydmVB
c3BlY3RSYXRpby5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDcgQEAgU1ZHQW5pbWF0
ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvQW5pbWF0b3I6OgogCiBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5p
bWF0ZWRUeXBlPiBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6Y29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAgICBhdXRvIGFuaW1hdGVk
VHlwZSA9IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhzdGQ6Om1h
a2VfdW5pcXVlPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+KCkpOworICAgIGF1dG8gYW5pbWF0ZWRU
eXBlID0gU1ZHQW5pbWF0ZWRUeXBlOjpjcmVhdGVQcmVzZXJ2ZUFzcGVjdFJhdGlvKHN0ZDo6bWFr
ZV91bmlxdWU8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPigpKTsKICAgICBhbmltYXRlZFR5
cGUtPnByZXNlcnZlQXNwZWN0UmF0aW8oKS5wYXJzZShzdHJpbmcpOwogICAgIHJldHVybiBhbmlt
YXRlZFR5cGU7CiB9CkBAIC03MSwxMSArNzEsMTEgQEAgdm9pZCBTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW9BbmltYQogICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFT
U0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8mIGZyb21QcmVzZXJ2ZUFzcGVjdFJhdGlvID0gbV9hbmltYXRpb25FbGVtZW50LT5hbmltYXRp
b25Nb2RlKCkgPT0gVG9BbmltYXRpb24gPyBhbmltYXRlZC0+cHJlc2VydmVBc3BlY3RSYXRpbygp
IDogZnJvbS0+cHJlc2VydmVBc3BlY3RSYXRpbygpOwotICAgIGNvbnN0IFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8mIHRvUHJlc2VydmVBc3BlY3RSYXRpbyA9IHRvLT5wcmVzZXJ2ZUFzcGVjdFJhdGlv
KCk7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJh
dGlvID0gYW5pbWF0ZWQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBjb25zdCBhdXRvJiBm
cm9tUHJlc2VydmVBc3BlY3RSYXRpbyA9IG1fYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9k
ZSgpID09IFRvQW5pbWF0aW9uID8gYW5pbWF0ZWQtPnByZXNlcnZlQXNwZWN0UmF0aW8oKSA6IGZy
b20tPnByZXNlcnZlQXNwZWN0UmF0aW8oKTsKKyAgICBjb25zdCBhdXRvJiB0b1ByZXNlcnZlQXNw
ZWN0UmF0aW8gPSB0by0+cHJlc2VydmVBc3BlY3RSYXRpbygpOworICAgIGF1dG8mIGFuaW1hdGVk
UHJlc2VydmVBc3BlY3RSYXRpbyA9IGFuaW1hdGVkLT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7CiAK
LSAgICBtX2FuaW1hdGlvbkVsZW1lbnQtPmFuaW1hdGVEaXNjcmV0ZVR5cGU8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz4ocGVyY2VudGFnZSwgZnJvbVByZXNlcnZlQXNwZWN0UmF0aW8sIHRvUHJlc2Vy
dmVBc3BlY3RSYXRpbywgYW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKKyAgICBtX2FuaW1h
dGlvbkVsZW1lbnQtPmFuaW1hdGVEaXNjcmV0ZVR5cGU8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlPihwZXJjZW50YWdlLCBmcm9tUHJlc2VydmVBc3BlY3RSYXRpbywgdG9QcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBhbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwogfQogCiBmbG9hdCBTVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW9BbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgJKHJldmlzaW9uIDIwODU3NSkKKysr
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8uaAkod29y
a2luZyBjb3B5KQpAQCAtMjksMTEgKzI5LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+IAogY2xhc3MgU1ZHUHJvcGVydHlUZWFyT2ZmOwogCi11c2luZyBTVkdB
bmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gPSBTVkdBbmltYXRlZFByb3BlcnR5VGVhck9mZjxT
VkdQcm9wZXJ0eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4+OwordXNpbmcgU1ZHQW5p
bWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvID0gU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmY8U1ZH
UHJlc2VydmVBc3BlY3RSYXRpbz47CiAKIC8vIEhlbHBlciBtYWNyb3MgdG8gZGVjbGFyZS9kZWZp
bmUgYSBTVkdBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8gb2JqZWN0CiAjZGVmaW5lIERFQ0xB
UkVfQU5JTUFURURfUFJFU0VSVkVBU1BFQ1RSQVRJTyhVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KSBcCi1ERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkUHJlc2VydmVBc3Bl
Y3RSYXRpbywgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9w
ZXJ0eSwgKQorREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWShTVkdBbmltYXRlZFByZXNlcnZlQXNw
ZWN0UmF0aW8sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSwgVXBwZXJQcm9wZXJ0eSwgTG93
ZXJQcm9wZXJ0eSwgKQogCiAjZGVmaW5lIERFRklORV9BTklNQVRFRF9QUkVTRVJWRUFTUEVDVFJB
VElPKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5
KSBcCiBERUZJTkVfQU5JTUFURURfUFJPUEVSVFkoQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlv
LCBPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgRE9NQXR0cmlidXRlLmxvY2FsTmFtZSgpLCBVcHBl
clByb3BlcnR5LCBMb3dlclByb3BlcnR5KQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVkVHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkVHlwZS5jcHAJKHJldmlzaW9uIDIwODU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xOTQsNyArMTk0LDcgQEAgc3RkOjp1
bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbQogICAgIHJldHVybiBhbmltYXRlZFR5
cGU7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlw
ZTo6Y3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhzdGQ6OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz4gcHJlc2VydmVBc3BlY3RSYXRpbykKK3N0ZDo6dW5pcXVlX3B0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhzdGQ6
OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPiBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQogewogICAgIEFTU0VSVChwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKICAgICBhdXRvIGFuaW1h
dGVkVHlwZSA9IHN0ZDo6bWFrZV91bmlxdWU8U1ZHQW5pbWF0ZWRUeXBlPihBbmltYXRlZFByZXNl
cnZlQXNwZWN0UmF0aW8pOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlw
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAko
cmV2aXNpb24gMjA4NTc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw3ICsyNyw3IEBACiAjaW5jbHVkZSAiU1ZHTGVuZ3RoTGlz
dC5oIgogI2luY2x1ZGUgIlNWR051bWJlckxpc3QuaCIKICNpbmNsdWRlICJTVkdQb2ludExpc3Qu
aCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCisjaW5jbHVkZSAiU1ZHUHJl
c2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAjaW5jbHVkZSAiU1ZHUHJvcGVydHlJbmZvLmgiCiAj
aW5jbHVkZSAiU1ZHVHJhbnNmb3JtTGlzdC5oIgogCkBAIC01NCw3ICs1NCw3IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRlTnVtYmVy
T3B0aW9uYWxOdW1iZXIoc3RkOjp1bmlxdWVfcHRyPHN0ZDo6cGFpcjxmbG9hdCwgZmxvYXQ+Pik7
CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBhdGgo
c3RkOjp1bmlxdWVfcHRyPFNWR1BhdGhCeXRlU3RyZWFtPik7CiAgICAgc3RhdGljIHN0ZDo6dW5p
cXVlX3B0cjxTVkdBbmltYXRlZFR5cGU+IGNyZWF0ZVBvaW50TGlzdChzdGQ6OnVuaXF1ZV9wdHI8
U1ZHUG9pbnRMaXN0Pik7Ci0gICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRlZFR5
cGU+IGNyZWF0ZVByZXNlcnZlQXNwZWN0UmF0aW8oc3RkOjp1bmlxdWVfcHRyPFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8+KTsKKyAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY3JlYXRlUHJlc2VydmVBc3BlY3RSYXRpbyhzdGQ6OnVuaXF1ZV9wdHI8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlPik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxTVkdBbmltYXRl
ZFR5cGU+IGNyZWF0ZVJlY3Qoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UmVjdD4pOwogICAgIHN0YXRp
YyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVTdHJpbmcoc3RkOjp1bmlx
dWVfcHRyPFN0cmluZz4pOwogICAgIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjcmVhdGVUcmFuc2Zvcm1MaXN0KHN0ZDo6dW5pcXVlX3B0cjxTVkdUcmFuc2Zvcm1MaXN0
Pik7CkBAIC0xNDEsNyArMTQxLDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gKm1fZGF0YS5w
b2ludExpc3Q7CiAgICAgfQogCi0gICAgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJl
c2VydmVBc3BlY3RSYXRpbygpIGNvbnN0CisgICAgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
b1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VS
VChtX3R5cGUgPT0gQW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKICAgICAgICAgcmV0dXJu
ICptX2RhdGEucHJlc2VydmVBc3BlY3RSYXRpbzsKQEAgLTI0NCw3ICsyNDQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiAqbV9kYXRhLnBvaW50TGlzdDsKICAgICB9CiAKLSAgICBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKCkKKyAgICBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWUmIHByZXNlcnZlQXNwZWN0UmF0aW8oKQogICAgIHsKICAgICAgICAgQVNT
RVJUKG1fdHlwZSA9PSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0aW8pOwogICAgICAgICByZXR1
cm4gKm1fZGF0YS5wcmVzZXJ2ZUFzcGVjdFJhdGlvOwpAQCAtMjkyLDcgKzI5Miw3IEBAIHByaXZh
dGU6CiAgICAgICAgIFNWR051bWJlckxpc3QqIG51bWJlckxpc3Q7CiAgICAgICAgIHN0ZDo6cGFp
cjxmbG9hdCwgZmxvYXQ+KiBudW1iZXJPcHRpb25hbE51bWJlcjsKICAgICAgICAgU1ZHUGF0aEJ5
dGVTdHJlYW0qIHBhdGg7Ci0gICAgICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8qIHByZXNlcnZl
QXNwZWN0UmF0aW87CisgICAgICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSogcHJlc2Vy
dmVBc3BlY3RSYXRpbzsKICAgICAgICAgU1ZHUG9pbnRMaXN0KiBwb2ludExpc3Q7CiAgICAgICAg
IEZsb2F0UmVjdCogcmVjdDsKICAgICAgICAgU3RyaW5nKiBzdHJpbmc7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODU3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKICNpbmNsdWRlICJSZW5k
ZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlNWR05hbWVzLmgiCi0jaW5jbHVkZSAiU1ZHUHJl
c2VydmVBc3BlY3RSYXRpby5oIgorI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZS5oIgogI2luY2x1ZGUgIlhMaW5rTmFtZXMuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAt
MTIyLDcgKzEyMiw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc28K
IHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CiAgICAgaWYgKG5hbWUgPT0g
U1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKSB7Ci0gICAgICAgIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8gcHJlc2VydmVBc3BlY3RSYXRpbzsKKyAgICAgICAgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlIHByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgICAgIHByZXNlcnZlQXNwZWN0
UmF0aW8ucGFyc2UodmFsdWUpOwogICAgICAgICBzZXRQcmVzZXJ2ZUFzcGVjdFJhdGlvQmFzZVZh
bHVlKHByZXNlcnZlQXNwZWN0UmF0aW8pOwogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmNwcAkocmV2aXNpb24gMjA4NTc1KQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDcg
KzI3LDcgQEAKICNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJT
VkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1BhcnNlclV0aWxpdGllcy5oIgotI2luY2x1ZGUgIlNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKKyNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTc3LDcgKzc3LDcgQEAgYm9vbCBTVkdGaXRUb1ZpZXdCb3g6OnBhcnNlVmll
d0JveChEb2N1bQogICAgIHJldHVybiB0cnVlOwogfQogCi1BZmZpbmVUcmFuc2Zvcm0gU1ZHRml0
VG9WaWV3Qm94Ojp2aWV3Qm94VG9WaWV3VHJhbnNmb3JtKGNvbnN0IEZsb2F0UmVjdCYgdmlld0Jv
eFJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8s
IGZsb2F0IHZpZXdXaWR0aCwgZmxvYXQgdmlld0hlaWdodCkKK0FmZmluZVRyYW5zZm9ybSBTVkdG
aXRUb1ZpZXdCb3g6OnZpZXdCb3hUb1ZpZXdUcmFuc2Zvcm0oY29uc3QgRmxvYXRSZWN0JiB2aWV3
Qm94UmVjdCwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVj
dFJhdGlvLCBmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpCiB7CiAgICAgaWYgKCF2
aWV3Qm94UmVjdC53aWR0aCgpIHx8ICF2aWV3Qm94UmVjdC5oZWlnaHQoKSB8fCAhdmlld1dpZHRo
IHx8ICF2aWV3SGVpZ2h0KQogICAgICAgICByZXR1cm4gQWZmaW5lVHJhbnNmb3JtKCk7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpdFRvVmlld0JveC5oCShyZXZpc2lvbiAyMDg1NzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRml0VG9WaWV3Qm94LmgJKHdvcmtpbmcgY29weSkKQEAgLTM0
LDcgKzM0LDcgQEAgY2xhc3MgRG9jdW1lbnQ7CiAKIGNsYXNzIFNWR0ZpdFRvVmlld0JveCB7CiBw
dWJsaWM6Ci0gICAgc3RhdGljIEFmZmluZVRyYW5zZm9ybSB2aWV3Qm94VG9WaWV3VHJhbnNmb3Jt
KGNvbnN0IEZsb2F0UmVjdCYgdmlld0JveFJlY3QsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8mLCBmbG9hdCB2aWV3V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpOworICAgIHN0YXRpYyBBZmZp
bmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShjb25zdCBGbG9hdFJlY3QmIHZpZXdC
b3hSZWN0LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmLCBmbG9hdCB2aWV3V2lk
dGgsIGZsb2F0IHZpZXdIZWlnaHQpOwogCiAgICAgc3RhdGljIGJvb2wgaXNLbm93bkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAgICAgc3RhdGljIHZvaWQgYWRkU3VwcG9ydGVkQXR0
cmlidXRlcyhIYXNoU2V0PFF1YWxpZmllZE5hbWU+Jik7CkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0cikgewotICAgICAgICAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVz
ZXJ2ZUFzcGVjdFJhdGlvOworICAgICAgICAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
IHByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgICAgICAgICBwcmVzZXJ2ZUFzcGVjdFJhdGlvLnBh
cnNlKHZhbHVlKTsKICAgICAgICAgICAgIHRhcmdldC0+c2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jh
c2VWYWx1ZShwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAJKHJldmlzaW9uIDIwODU3
NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC05Nyw3ICs5Nyw3IEBAIGJvb2wgU1ZHSW1hZ2VFbGVtZW50Ojppc1N1cHBvcnRlZEF0
dHJpYnUKIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogewogICAgIGlmIChuYW1l
ID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewotICAgICAgICBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvIHByZXNlcnZlQXNwZWN0UmF0aW87CisgICAgICAgIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZSBwcmVzZXJ2ZUFzcGVjdFJhdGlvOwogICAgICAgICBwcmVzZXJ2ZUFz
cGVjdFJhdGlvLnBhcnNlKHZhbHVlKTsKICAgICAgICAgc2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jh
c2VWYWx1ZShwcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKICAgICAgICAgcmV0dXJuOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmNwcAkocmV2aXNpb24g
MjA4NTc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3Bw
CShub25leGlzdGVudCkKQEAgLTEsMzc1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUsIDIwMDggTmlrb2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0g
KiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgUm9iIEJ1aXMgPGJ1aXNAa2Rl
Lm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBEaXJrIFNjaHVsemUgPGtyaXRAd2Via2l0Lm9y
Zz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry
aWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZy
ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBs
aWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws
Ci0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdp
dGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRl
IHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBT
dHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8u
aCIKLQotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbkNv
ZGUuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKLSNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRp
ZXMuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdWaWV3Lmg+Ci0KLW5hbWVzcGFjZSBXZWJD
b3JlIHsKLQotU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHUHJlc2VydmVBc3BlY3RSYXRpbygp
Ci0gICAgOiBtX2FsaWduKFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEKQotICAgICwg
bV9tZWV0T3JTbGljZShTVkdfTUVFVE9SU0xJQ0VfTUVFVCkKLXsKLX0KLQotRXhjZXB0aW9uT3I8
dm9pZD4gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6c2V0QWxpZ24odW5zaWduZWQgc2hvcnQgYWxp
Z24pCi17Ci0gICAgaWYgKGFsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV04g
fHwgYWxpZ24gPiBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWCkKLSAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IE5PVF9TVVBQT1JURURfRVJSIH07Ci0KLSAgICBtX2FsaWduID0gc3Rh
dGljX2Nhc3Q8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1R5cGU+KGFsaWduKTsKLSAgICByZXR1cm4g
eyB9OwotfQotCi1FeGNlcHRpb25Pcjx2b2lkPiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpzZXRN
ZWV0T3JTbGljZSh1bnNpZ25lZCBzaG9ydCBtZWV0T3JTbGljZSkKLXsKLSAgICBpZiAobWVldE9y
U2xpY2UgPT0gU1ZHX01FRVRPUlNMSUNFX1VOS05PV04gfHwgbWVldE9yU2xpY2UgPiBTVkdfTUVF
VE9SU0xJQ0VfU0xJQ0UpCi0gICAgICAgIHJldHVybiBFeGNlcHRpb24geyBOT1RfU1VQUE9SVEVE
X0VSUiB9OwotCi0gICAgbV9tZWV0T3JTbGljZSA9IHN0YXRpY19jYXN0PFNWR01lZXRPclNsaWNl
VHlwZT4obWVldE9yU2xpY2UpOwotICAgIHJldHVybiB7IH07Ci19Ci0KLXZvaWQgU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpbzo6cGFyc2UoY29uc3QgU3RyaW5nJiB2YWx1ZSkKLXsKLSAgICBhdXRvIHVw
Y29udmVydGVkQ2hhcmFjdGVycyA9IFN0cmluZ1ZpZXcodmFsdWUpLnVwY29udmVydGVkQ2hhcmFj
dGVycygpOwotICAgIGNvbnN0IFVDaGFyKiBiZWdpbiA9IHVwY29udmVydGVkQ2hhcmFjdGVyczsK
LSAgICBwYXJzZUludGVybmFsKGJlZ2luLCBiZWdpbiArIHZhbHVlLmxlbmd0aCgpLCB0cnVlKTsK
LX0KLQotYm9vbCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpwYXJzZShjb25zdCBVQ2hhciomIGN1
cnJQYXJhbSwgY29uc3QgVUNoYXIqIGVuZCwgYm9vbCB2YWxpZGF0ZSkKLXsKLSAgICByZXR1cm4g
cGFyc2VJbnRlcm5hbChjdXJyUGFyYW0sIGVuZCwgdmFsaWRhdGUpOwotfQotCi1ib29sIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW86OnBhcnNlSW50ZXJuYWwoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0s
IGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpCi17Ci0gICAgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1R5cGUgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDsKLSAg
ICBTVkdNZWV0T3JTbGljZVR5cGUgbWVldE9yU2xpY2UgPSBTVkdfTUVFVE9SU0xJQ0VfTUVFVDsK
LQotICAgIG1fYWxpZ24gPSBhbGlnbjsKLSAgICBtX21lZXRPclNsaWNlID0gbWVldE9yU2xpY2U7
Ci0KLSAgICBpZiAoIXNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXJyUGFyYW0sIGVuZCkpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmICgqY3VyclBhcmFtID09ICdkJykgewotICAgICAg
ICBpZiAoIXNraXBTdHJpbmcoY3VyclBhcmFtLCBlbmQsICJkZWZlciIpKSB7Ci0gICAgICAgICAg
ICBMT0dfRVJST1IoIlNraXBwZWQgdG8gcGFyc2UgZXhjZXB0IGZvciAqZGVmZXIqIHZhbHVlLiIp
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRklY
TUU6IFdlIGp1c3QgaWdub3JlIHRoZSAiZGVmZXIiIGhlcmUuCi0gICAgICAgIGlmIChjdXJyUGFy
YW0gPT0gZW5kKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgaWYgKCFza2lw
T3B0aW9uYWxTVkdTcGFjZXMoY3VyclBhcmFtLCBlbmQpKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgIH0KLQotICAgIGlmICgqY3VyclBhcmFtID09ICduJykgewotICAgICAgICBpZiAo
IXNraXBTdHJpbmcoY3VyclBhcmFtLCBlbmQsICJub25lIikpIHsKLSAgICAgICAgICAgIExPR19F
UlJPUigiU2tpcHBlZCB0byBwYXJzZSBleGNlcHQgZm9yICpub25lKiB2YWx1ZS4iKTsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBhbGlnbiA9IFNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX05PTkU7Ci0gICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXJy
UGFyYW0sIGVuZCk7Ci0gICAgfSBlbHNlIGlmICgqY3VyclBhcmFtID09ICd4JykgewotICAgICAg
ICBpZiAoKGVuZCAtIGN1cnJQYXJhbSkgPCA4KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgICAgICBpZiAoY3VyclBhcmFtWzFdICE9ICdNJyB8fCBjdXJyUGFyYW1bNF0gIT0gJ1knIHx8
IGN1cnJQYXJhbVs1XSAhPSAnTScpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IGlmIChjdXJyUGFyYW1bMl0gPT0gJ2knKSB7Ci0gICAgICAgICAgICBpZiAoY3VyclBhcmFtWzNd
ID09ICduJykgewotICAgICAgICAgICAgICAgIGlmIChjdXJyUGFyYW1bNl0gPT0gJ2knKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIChjdXJyUGFyYW1bN10gPT0gJ24nKQotICAgICAgICAgICAg
ICAgICAgICAgICAgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JTjsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY3VyclBhcmFtWzddID09ICdkJykKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQ7
Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJQYXJhbVs2XSA9PSAnYScg
JiYgY3VyclBhcmFtWzddID09ICd4JykKLSAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBTVkdf
UFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICB9IGVsc2UgaWYgKGN1
cnJQYXJhbVszXSA9PSAnZCcpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VyclBhcmFtWzZdID09
ICdpJykgewotICAgICAgICAgICAgICAgICAgICBpZiAoY3VyclBhcmFtWzddID09ICduJykKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1J
RFlNSU47Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJQYXJhbVs3XSA9PSAnZCcp
Ci0gICAgICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElP
X1hNSURZTUlEOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyUGFyYW1b
Nl0gPT0gJ2EnICYmIGN1cnJQYXJhbVs3XSA9PSAneCcpCi0gICAgICAgICAgICAgICAgICAgIGFs
aWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg7Ci0gICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVs
c2UKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0gZWxzZSBpZiAoY3Vy
clBhcmFtWzJdID09ICdhJyAmJiBjdXJyUGFyYW1bM10gPT0gJ3gnKSB7Ci0gICAgICAgICAgICBp
ZiAoY3VyclBhcmFtWzZdID09ICdpJykgewotICAgICAgICAgICAgICAgIGlmIChjdXJyUGFyYW1b
N10gPT0gJ24nKQotICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNQVhZTUlOOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGN1cnJQYXJhbVs3XSA9
PSAnZCcpCi0gICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1BWFlNSUQ7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGN1cnJQYXJhbVs2XSA9PSAnYScg
JiYgY3VyclBhcmFtWzddID09ICd4JykKLSAgICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICByZXR1cm4gZmFs
c2U7Ci0gICAgICAgIGN1cnJQYXJhbSArPSA4OwotICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFj
ZXMoY3VyclBhcmFtLCBlbmQpOwotICAgIH0gZWxzZQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBpZiAoY3VyclBhcmFtIDwgZW5kKSB7Ci0gICAgICAgIGlmICgqY3VyclBhcmFtID09ICdt
JykgewotICAgICAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJQYXJhbSwgZW5kLCAibWVldCIp
KSB7Ci0gICAgICAgICAgICAgICAgTE9HX0VSUk9SKCJTa2lwcGVkIHRvIHBhcnNlIGV4Y2VwdCBm
b3IgKm1lZXQqIG9yICpzbGljZSogdmFsdWUuIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1
cnJQYXJhbSwgZW5kKTsKLSAgICAgICAgfSBlbHNlIGlmICgqY3VyclBhcmFtID09ICdzJykgewot
ICAgICAgICAgICAgaWYgKCFza2lwU3RyaW5nKGN1cnJQYXJhbSwgZW5kLCAic2xpY2UiKSkgewot
ICAgICAgICAgICAgICAgIExPR19FUlJPUigiU2tpcHBlZCB0byBwYXJzZSBleGNlcHQgZm9yICpt
ZWV0KiBvciAqc2xpY2UqIHZhbHVlLiIpOwotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXJyUGFy
YW0sIGVuZCk7Ci0gICAgICAgICAgICBpZiAoYWxpZ24gIT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fTk9ORSkKLSAgICAgICAgICAgICAgICBtZWV0T3JTbGljZSA9IFNWR19NRUVUT1JTTElDRV9T
TElDRTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChlbmQgIT0gY3VyclBhcmFtICYmIHZh
bGlkYXRlKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBtX2FsaWduID0gYWxpZ247Ci0g
ICAgbV9tZWV0T3JTbGljZSA9IG1lZXRPclNsaWNlOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0K
LXZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6dHJhbnNmb3JtUmVjdChGbG9hdFJlY3QmIGRl
c3RSZWN0LCBGbG9hdFJlY3QmIHNyY1JlY3QpCi17Ci0gICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgRmxvYXRTaXpl
IGltYWdlU2l6ZSA9IHNyY1JlY3Quc2l6ZSgpOwotICAgIGZsb2F0IG9yaWdEZXN0V2lkdGggPSBk
ZXN0UmVjdC53aWR0aCgpOwotICAgIGZsb2F0IG9yaWdEZXN0SGVpZ2h0ID0gZGVzdFJlY3QuaGVp
Z2h0KCk7Ci0gICAgc3dpdGNoIChtX21lZXRPclNsaWNlKSB7Ci0gICAgY2FzZSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpTVkdfTUVFVE9SU0xJQ0VfVU5LTk9XTjoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfTUVFVE9SU0xJQ0VfTUVFVDogewot
ICAgICAgICBmbG9hdCB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllciA9IHNyY1JlY3QuaGVpZ2h0KCkg
LyBzcmNSZWN0LndpZHRoKCk7Ci0gICAgICAgIGlmIChvcmlnRGVzdEhlaWdodCA+IG9yaWdEZXN0
V2lkdGggKiB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllcikgewotICAgICAgICAgICAgZGVzdFJlY3Qu
c2V0SGVpZ2h0KG9yaWdEZXN0V2lkdGggKiB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllcik7Ci0gICAg
ICAgICAgICBzd2l0Y2ggKG1fYWxpZ24pIHsKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSUQ6Ci0gICAgICAgICAg
ICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
SURZTUlEOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKLSAgICAgICAgICAgICAgICBkZXN0UmVjdC5zZXRZ
KGRlc3RSZWN0LnkoKSArIG9yaWdEZXN0SGVpZ2h0IC8gMiAtIGRlc3RSZWN0LmhlaWdodCgpIC8g
Mik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYOgotICAgICAgICAg
ICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUlEWU1BWDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVg6Ci0gICAgICAgICAgICAgICAgZGVzdFJlY3Quc2V0
WShkZXN0UmVjdC55KCkgKyBvcmlnRGVzdEhlaWdodCAtIGRlc3RSZWN0LmhlaWdodCgpKTsKLSAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG9yaWdEZXN0
V2lkdGggPiBvcmlnRGVzdEhlaWdodCAvIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVyKSB7Ci0gICAg
ICAgICAgICBkZXN0UmVjdC5zZXRXaWR0aChvcmlnRGVzdEhlaWdodCAvIHdpZHRoVG9IZWlnaHRN
dWx0aXBsaWVyKTsKLSAgICAgICAgICAgIHN3aXRjaCAobV9hbGlnbikgewotICAgICAgICAgICAg
Y2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlE
WU1JTjoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgotICAgICAgICAgICAg
ICAgIGRlc3RSZWN0LnNldFgoZGVzdFJlY3QueCgpICsgb3JpZ0Rlc3RXaWR0aCAvIDIgLSBkZXN0
UmVjdC53aWR0aCgpIC8gMik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBj
YXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZ
TUlOOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVg6Ci0gICAgICAgICAgICAg
ICAgZGVzdFJlY3Quc2V0WChkZXN0UmVjdC54KCkgKyBvcmlnRGVzdFdpZHRoIC0gZGVzdFJlY3Qu
d2lkdGgoKSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IGJyZWFrOwotICAgIH0KLSAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19NRUVU
T1JTTElDRV9TTElDRTogewotICAgICAgICBmbG9hdCB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllciA9
IHNyY1JlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LndpZHRoKCk7Ci0gICAgICAgIC8vIGlmIHRoZSBk
ZXN0aW5hdGlvbiBoZWlnaHQgaXMgbGVzcyB0aGFuIHRoZSBoZWlnaHQgb2YgdGhlIGltYWdlIHdl
J2xsIGJlIGRyYXdpbmcKLSAgICAgICAgaWYgKG9yaWdEZXN0SGVpZ2h0IDwgb3JpZ0Rlc3RXaWR0
aCAqIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVyKSB7Ci0gICAgICAgICAgICBmbG9hdCBkZXN0VG9T
cmNNdWx0aXBsaWVyID0gc3JjUmVjdC53aWR0aCgpIC8gZGVzdFJlY3Qud2lkdGgoKTsKLSAgICAg
ICAgICAgIHNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpICogZGVzdFRvU3JjTXVs
dGlwbGllcik7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1fYWxpZ24pIHsKLSAgICAgICAgICAgIGNh
c2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllN
SUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSURZTUlEOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKLSAgICAgICAgICAgICAg
ICBzcmNSZWN0LnNldFkoc3JjUmVjdC55KCkgKyBpbWFnZVNpemUuaGVpZ2h0KCkgLyAyIC0gc3Jj
UmVjdC5oZWlnaHQoKSAvIDIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Y2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlO
WU1BWDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgotICAgICAgICAgICAg
ICAgIHNyY1JlY3Quc2V0WShzcmNSZWN0LnkoKSArIGltYWdlU2l6ZS5oZWlnaHQoKSAtIHNyY1Jl
Y3QuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgZGVmYXVs
dDoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICAvLyBpZiB0aGUgZGVzdGluYXRpb24gd2lkdGggaXMgbGVzcyB0aGFuIHRoZSB3aWR0aCBv
ZiB0aGUgaW1hZ2Ugd2UnbGwgYmUgZHJhd2luZwotICAgICAgICBpZiAob3JpZ0Rlc3RXaWR0aCA8
IG9yaWdEZXN0SGVpZ2h0IC8gd2lkdGhUb0hlaWdodE11bHRpcGxpZXIpIHsKLSAgICAgICAgICAg
IGZsb2F0IGRlc3RUb1NyY011bHRpcGxpZXIgPSBzcmNSZWN0LmhlaWdodCgpIC8gZGVzdFJlY3Qu
aGVpZ2h0KCk7Ci0gICAgICAgICAgICBzcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkg
KiBkZXN0VG9TcmNNdWx0aXBsaWVyKTsKLSAgICAgICAgICAgIHN3aXRjaCAobV9hbGlnbikgewot
ICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUlEWU1JTjoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgot
ICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0WChzcmNSZWN0LngoKSArIGltYWdlU2l6ZS53aWR0
aCgpIC8gMiAtIHNyY1JlY3Qud2lkdGgoKSAvIDIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUFYWU1JTjoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgot
ICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0WChzcmNSZWN0LngoKSArIGltYWdlU2l6ZS53aWR0
aCgpIC0gc3JjUmVjdC53aWR0aCgpKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIH0KLX0KLQotQWZmaW5lVHJhbnNmb3Jt
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShmbG9hdCBsb2dpY2FsWCwgZmxvYXQgbG9n
aWNhbFksIGZsb2F0IGxvZ2ljYWxXaWR0aCwgZmxvYXQgbG9naWNhbEhlaWdodCwgZmxvYXQgcGh5
c2ljYWxXaWR0aCwgZmxvYXQgcGh5c2ljYWxIZWlnaHQpIGNvbnN0Ci17Ci0gICAgQWZmaW5lVHJh
bnNmb3JtIHRyYW5zZm9ybTsKLSAgICBpZiAoIWxvZ2ljYWxXaWR0aCB8fCAhbG9naWNhbEhlaWdo
dCB8fCAhcGh5c2ljYWxXaWR0aCB8fCAhcGh5c2ljYWxIZWlnaHQpIHsKLSAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7Ci0gICAgICAgIHJldHVybiB0cmFuc2Zvcm07Ci0gICAgfQotCi0gICAg
aWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fVU5LTk9XTikKLSAgICAgICAg
cmV0dXJuIHRyYW5zZm9ybTsKLQotICAgIGRvdWJsZSBleHRlbmRlZExvZ2ljYWxYID0gbG9naWNh
bFg7Ci0gICAgZG91YmxlIGV4dGVuZGVkTG9naWNhbFkgPSBsb2dpY2FsWTsKLSAgICBkb3VibGUg
ZXh0ZW5kZWRMb2dpY2FsV2lkdGggPSBsb2dpY2FsV2lkdGg7Ci0gICAgZG91YmxlIGV4dGVuZGVk
TG9naWNhbEhlaWdodCA9IGxvZ2ljYWxIZWlnaHQ7Ci0gICAgZG91YmxlIGV4dGVuZGVkUGh5c2lj
YWxXaWR0aCA9IHBoeXNpY2FsV2lkdGg7Ci0gICAgZG91YmxlIGV4dGVuZGVkUGh5c2ljYWxIZWln
aHQgPSBwaHlzaWNhbEhlaWdodDsKLSAgICBkb3VibGUgbG9naWNhbFJhdGlvID0gZXh0ZW5kZWRM
b2dpY2FsV2lkdGggLyBleHRlbmRlZExvZ2ljYWxIZWlnaHQ7Ci0gICAgZG91YmxlIHBoeXNpY2Fs
UmF0aW8gPSBleHRlbmRlZFBoeXNpY2FsV2lkdGggLyBleHRlbmRlZFBoeXNpY2FsSGVpZ2h0Owot
Ci0gICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSkgewotICAg
ICAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGV4dGVuZGVkUGh5c2ljYWxXaWR0aCAvIGV4
dGVuZGVkTG9naWNhbFdpZHRoLCBleHRlbmRlZFBoeXNpY2FsSGVpZ2h0IC8gZXh0ZW5kZWRMb2dp
Y2FsSGVpZ2h0KTsKLSAgICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtZXh0ZW5kZWRMb2dpY2Fs
WCwgLWV4dGVuZGVkTG9naWNhbFkpOwotICAgICAgICByZXR1cm4gdHJhbnNmb3JtOwotICAgIH0K
LQotICAgIGlmICgobG9naWNhbFJhdGlvIDwgcGh5c2ljYWxSYXRpbyAmJiAobV9tZWV0T3JTbGlj
ZSA9PSBTVkdfTUVFVE9SU0xJQ0VfTUVFVCkpIHx8IChsb2dpY2FsUmF0aW8gPj0gcGh5c2ljYWxS
YXRpbyAmJiAobV9tZWV0T3JTbGljZSA9PSBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0UpKSkgewotICAg
ICAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGV4dGVuZGVkUGh5c2ljYWxIZWlnaHQgLyBl
eHRlbmRlZExvZ2ljYWxIZWlnaHQsIGV4dGVuZGVkUGh5c2ljYWxIZWlnaHQgLyBleHRlbmRlZExv
Z2ljYWxIZWlnaHQpOwotCi0gICAgICAgIGlmIChtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSU5ZTUlOIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1J
TllNSUQgfHwgbV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWCkKLSAg
ICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9naWNhbFgsIC1leHRlbmRl
ZExvZ2ljYWxZKTsKLSAgICAgICAgZWxzZSBpZiAobV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUlEWU1JTiB8fCBtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
SURZTUlEIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVgpCi0g
ICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1leHRlbmRlZExvZ2ljYWxYIC0gKGV4dGVu
ZGVkTG9naWNhbFdpZHRoIC0gZXh0ZW5kZWRQaHlzaWNhbFdpZHRoICogZXh0ZW5kZWRMb2dpY2Fs
SGVpZ2h0IC8gZXh0ZW5kZWRQaHlzaWNhbEhlaWdodCkgLyAyLCAtZXh0ZW5kZWRMb2dpY2FsWSk7
Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4dGVuZGVk
TG9naWNhbFggLSAoZXh0ZW5kZWRMb2dpY2FsV2lkdGggLSBleHRlbmRlZFBoeXNpY2FsV2lkdGgg
KiBleHRlbmRlZExvZ2ljYWxIZWlnaHQgLyBleHRlbmRlZFBoeXNpY2FsSGVpZ2h0KSwgLWV4dGVu
ZGVkTG9naWNhbFkpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKLSAgICB9
Ci0KLSAgICB0cmFuc2Zvcm0uc2NhbGVOb25Vbmlmb3JtKGV4dGVuZGVkUGh5c2ljYWxXaWR0aCAv
IGV4dGVuZGVkTG9naWNhbFdpZHRoLCBleHRlbmRlZFBoeXNpY2FsV2lkdGggLyBleHRlbmRlZExv
Z2ljYWxXaWR0aCk7Ci0KLSAgICBpZiAobV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19YTUlOWU1JTiB8fCBtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlO
IHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSU4pCi0gICAgICAg
IHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9naWNhbFgsIC1leHRlbmRlZExvZ2ljYWxZ
KTsKLSAgICBlbHNlIGlmIChtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5Z
TUlEIHx8IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQgfHwgbV9h
bGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRCkKLSAgICAgICAgdHJhbnNm
b3JtLnRyYW5zbGF0ZSgtZXh0ZW5kZWRMb2dpY2FsWCwgLWV4dGVuZGVkTG9naWNhbFkgLSAoZXh0
ZW5kZWRMb2dpY2FsSGVpZ2h0IC0gZXh0ZW5kZWRQaHlzaWNhbEhlaWdodCAqIGV4dGVuZGVkTG9n
aWNhbFdpZHRoIC8gZXh0ZW5kZWRQaHlzaWNhbFdpZHRoKSAvIDIpOwotICAgIGVsc2UKLSAgICAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtZXh0ZW5kZWRMb2dpY2FsWCwgLWV4dGVuZGVkTG9naWNh
bFkgLSAoZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0IC0gZXh0ZW5kZWRQaHlzaWNhbEhlaWdodCAqIGV4
dGVuZGVkTG9naWNhbFdpZHRoIC8gZXh0ZW5kZWRQaHlzaWNhbFdpZHRoKSk7Ci0KLSAgICByZXR1
cm4gdHJhbnNmb3JtOwotfQotCi1TdHJpbmcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6dmFsdWVB
c1N0cmluZygpIGNvbnN0Ci17Ci0gICAgU3RyaW5nIGFsaWduVHlwZTsKLQotICAgIHN3aXRjaCAo
bV9hbGlnbikgewotICAgIGNhc2UgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORToKLSAgICAg
ICAgYWxpZ25UeXBlID0gIm5vbmUiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pbllNaW4i
OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZ
TUlOOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pZFlNaW4iOwotICAgICAgICBicmVhazsKLSAg
ICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOOgotICAgICAgICBhbGlnblR5
cGUgPSAieE1heFlNaW4iOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFT
UEVDVFJBVElPX1hNSU5ZTUlEOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pbllNaWQiOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgot
ICAgICAgICBhbGlnblR5cGUgPSAieE1pZFlNaWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNl
IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEOgotICAgICAgICBhbGlnblR5cGUgPSAi
eE1heFlNaWQiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1hNSU5ZTUFYOgotICAgICAgICBhbGlnblR5cGUgPSAieE1pbllNYXgiOwotICAgICAgICBi
cmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgotICAgICAg
ICBhbGlnblR5cGUgPSAieE1pZFlNYXgiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgotICAgICAgICBhbGlnblR5cGUgPSAieE1heFlN
YXgiOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VO
S05PV046Ci0gICAgICAgIGFsaWduVHlwZSA9ICJ1bmtub3duIjsKLSAgICAgICAgYnJlYWs7Ci0g
ICAgfTsKLQotICAgIHN3aXRjaCAobV9tZWV0T3JTbGljZSkgewotICAgIGRlZmF1bHQ6Ci0gICAg
Y2FzZSBTVkdfTUVFVE9SU0xJQ0VfVU5LTk9XTjoKLSAgICAgICAgcmV0dXJuIGFsaWduVHlwZTsK
LSAgICBjYXNlIFNWR19NRUVUT1JTTElDRV9NRUVUOgotICAgICAgICByZXR1cm4gYWxpZ25UeXBl
ICsgIiBtZWV0IjsKLSAgICBjYXNlIFNWR19NRUVUT1JTTElDRV9TTElDRToKLSAgICAgICAgcmV0
dXJuIGFsaWduVHlwZSArICIgc2xpY2UiOwotICAgIH0KLX0KLQotfQoKUHJvcGVydHkgY2hhbmdl
cyBvbjogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KRGVsZXRlZDogc3ZuOmVvbC1zdHlsZQojIyAtMSArMCwwICMjCi1uYXRpdmUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UHJlc2VydmVBc3BlY3RSYXRpby5oCShyZXZpc2lvbiAyMDg1NzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDgzICsx
LDExMSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwOCBOaWtvbGFzIFpp
bW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4KLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAw
NSwgMjAwNiwgMjAwNyBSb2IgQnVpcyA8YnVpc0BrZGUub3JnPgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCi0gKiBUaGlzIGxpYnJhcnkg
aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwot
ICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikg
YW55IGxhdGVyIHZlcnNpb24uCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
Ci0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwotCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkV4Y2VwdGlvbk9yLmgiCi0jaW5jbHVkZSAiU1ZHUHJvcGVydHlUcmFpdHMuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Db2RlLmgiCisjaW5jbHVkZSAiU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
LmgiCisjaW5jbHVkZSAiU1ZHUHJvcGVydHlUZWFyT2ZmLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgQWZmaW5lVHJhbnNmb3JtOwotY2xhc3MgRmxvYXRSZWN0OwotCi1jbGFzcyBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIHsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK2Ns
YXNzIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gOiBwdWJsaWMgU1ZHUHJvcGVydHlUZWFyT2ZmPFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT4gewogcHVibGljOgotICAgIGVudW0gU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpb1R5cGUgewotICAgICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktO
T1dOID0gMCwKLSAgICAgICAgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fTk9ORSA9IDEsCi0gICAg
ICAgIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlOID0gMiwKLSAgICAgICAgU1ZHX1BS
RVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU4gPSAzLAotICAgICAgICBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUFYWU1JTiA9IDQsCi0gICAgICAgIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
SU5ZTUlEID0gNSwKLSAgICAgICAgU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQgPSA2
LAotICAgICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRCA9IDcsCi0gICAgICAg
IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYID0gOCwKLSAgICAgICAgU1ZHX1BSRVNF
UlZFQVNQRUNUUkFUSU9fWE1JRFlNQVggPSA5LAotICAgICAgICBTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUFYWU1BWCA9IDEwCi0gICAgfTsKLQotICAgIGVudW0gU1ZHTWVldE9yU2xpY2VUeXBl
IHsKLSAgICAgICAgU1ZHX01FRVRPUlNMSUNFX1VOS05PV04gPSAwLAotICAgICAgICBTVkdfTUVF
VE9SU0xJQ0VfTUVFVCA9IDEsCi0gICAgICAgIFNWR19NRUVUT1JTTElDRV9TTElDRSA9IDIKLSAg
ICB9OwotCi0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbygpOwotCi0gICAgRXhjZXB0aW9uT3I8
dm9pZD4gc2V0QWxpZ24odW5zaWduZWQgc2hvcnQpOwotICAgIHVuc2lnbmVkIHNob3J0IGFsaWdu
KCkgY29uc3QgeyByZXR1cm4gbV9hbGlnbjsgfQotCi0gICAgRXhjZXB0aW9uT3I8dm9pZD4gc2V0
TWVldE9yU2xpY2UodW5zaWduZWQgc2hvcnQpOwotICAgIHVuc2lnbmVkIHNob3J0IG1lZXRPclNs
aWNlKCkgY29uc3QgeyByZXR1cm4gbV9tZWV0T3JTbGljZTsgfQotCi0gICAgdm9pZCB0cmFuc2Zv
cm1SZWN0KEZsb2F0UmVjdCYgZGVzdFJlY3QsIEZsb2F0UmVjdCYgc3JjUmVjdCk7Ci0KLSAgICBB
ZmZpbmVUcmFuc2Zvcm0gZ2V0Q1RNKGZsb2F0IGxvZ2ljYWxYLCBmbG9hdCBsb2dpY2FsWSwgZmxv
YXQgbG9naWNhbFdpZHRoLCBmbG9hdCBsb2dpY2FsSGVpZ2h0LCBmbG9hdCBwaHlzaWNhbFdpZHRo
LCBmbG9hdCBwaHlzaWNhbEhlaWdodCkgY29uc3Q7Ci0KLSAgICB2b2lkIHBhcnNlKGNvbnN0IFN0
cmluZyYpOwotICAgIGJvb2wgcGFyc2UoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVD
aGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpOwotCi0gICAgU3RyaW5nIHZhbHVlQXNTdHJpbmcoKSBj
b25zdDsKKyAgICBzdGF0aWMgUmVmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+IGNyZWF0ZShTVkdB
bmltYXRlZFByb3BlcnR5KiBhbmltYXRlZFByb3BlcnR5LCBTVkdQcm9wZXJ0eVJvbGUgcm9sZSwg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiB2YWx1ZSkKKyAgICB7CisgICAgICAgIEFTU0VS
VChhbmltYXRlZFByb3BlcnR5KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyhhbmltYXRlZFByb3BlcnR5LCByb2xlLCB2YWx1ZSkpOworICAgIH0K
KworICAgIHN0YXRpYyBSZWY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gY3JlYXRlKGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgaW5pdGlhbFZhbHVlID0geyB9KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyhpbml0aWFs
VmFsdWUpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgUmVmPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+
IGNyZWF0ZShjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUqIGluaXRpYWxWYWx1ZSkK
KyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW8oaW5pdGlhbFZhbHVlKSk7CisgICAgfQorCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3Rh
dGljIEV4Y2VwdGlvbk9yPFJlZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvPj4gY3JlYXRlKEV4Y2Vw
dGlvbk9yPFQ+JiYgaW5pdGlhbFZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKGluaXRpYWxWYWx1
ZS5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiBpbml0aWFsVmFsdWUucmVsZWFz
ZUV4Y2VwdGlvbigpOworICAgICAgICByZXR1cm4gY3JlYXRlKGluaXRpYWxWYWx1ZS5yZWxlYXNl
UmV0dXJuVmFsdWUoKSk7CisgICAgfQorCisgICAgdW5zaWduZWQgc2hvcnQgYWxpZ24oKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJlbmNlKCkuYWxpZ24oKTsKKyAgICB9CisK
KyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRBbGlnbihmbG9hdCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIGlmIChpc1JlYWRPbmx5KCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9f
TU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSIH07CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBwcm9w
ZXJ0eVJlZmVyZW5jZSgpLnNldEFsaWduKHZhbHVlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNF
eGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgY29tbWl0
Q2hhbmdlKCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgdW5zaWduZWQg
c2hvcnQgbWVldE9yU2xpY2UoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHByb3BlcnR5UmVmZXJl
bmNlKCkubWVldE9yU2xpY2UoKTsKKyAgICB9CisKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRN
ZWV0T3JTbGljZShmbG9hdCB2YWx1ZSkKKyAgICB7CisgICAgICAgIGlmIChpc1JlYWRPbmx5KCkp
CisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURf
RVJSIH07CisKKyAgICAgICAgYXV0byByZXN1bHQgPSBwcm9wZXJ0eVJlZmVyZW5jZSgpLnNldE1l
ZXRPclNsaWNlKHZhbHVlKTsKKyAgICAgICAgaWYgKHJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisKKyAgICAgICAgY29tbWl0Q2hhbmdlKCk7CisgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgfQogCiBwcml2YXRlOgotICAgIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9UeXBlIG1fYWxpZ247Ci0gICAgU1ZHTWVldE9yU2xpY2VUeXBlIG1fbWVldE9yU2xp
Y2U7Ci0KLSAgICBib29sIHBhcnNlSW50ZXJuYWwoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNv
bnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpOwotfTsKLQotdGVtcGxhdGU8PiBzdHJ1Y3Qg
U1ZHUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gewotICAgIHN0YXRpYyBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8oKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbyYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0K
KyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKFNWR0FuaW1hdGVkUHJvcGVydHkqIGFuaW1hdGVk
UHJvcGVydHksIFNWR1Byb3BlcnR5Um9sZSByb2xlLCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWUmIHZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVhck9mZjxTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWU+KGFuaW1hdGVkUHJvcGVydHksIHJvbGUsIHZhbHVlKQorICAgIHsKKyAgICB9
CisKKyAgICBleHBsaWNpdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKGNvbnN0IFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZSYgaW5pdGlhbFZhbHVlKQorICAgICAgICA6IFNWR1Byb3BlcnR5VGVh
ck9mZjxTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU+KGluaXRpYWxWYWx1ZSkKKyAgICB7Cisg
ICAgfQorCisgICAgZXhwbGljaXQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyhjb25zdCBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWUqIGluaXRpYWxWYWx1ZSkKKyAgICAgICAgOiBTVkdQcm9wZXJ0
eVRlYXJPZmY8U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlPihpbml0aWFsVmFsdWUpCisgICAg
eworICAgIH0KIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgKX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
XwpEZWxldGVkOiBzdm46ZW9sLXN0eWxlCiMjIC0xICswLDAgIyMKLW5hdGl2ZQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2Vy
dmVBc3BlY3RSYXRpby5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1By
ZXNlcnZlQXNwZWN0UmF0aW8uaWRsCShyZXZpc2lvbiAyMDg1NzUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpby5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTIzLDcg
KzIzLDkgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAogICovCiAKLWludGVyZmFjZSBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvIHsKK1sKKyAgICBDb25zdGFudHNTY29wZT1TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUKK10gaW50ZXJmYWNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8gewogICAgIC8vIEFsaWdu
bWVudCBUeXBlcwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1VOS05PV04gPSAwOwogICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNWR19QUkVTRVJWRUFT
UEVDVFJBVElPX05PTkUgPSAxOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZl
QXNwZWN0UmF0aW9WYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZS5jcHAJKHJldmlzaW9uIDIwODU3NSkJKGZyb20gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uY3BwOjIwODU3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0wLDAgKzEsMzc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1
LCAyMDA4IE5pa29sYXMgWmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgorICogQ29weXJp
Z2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IFJvYiBCdWlzIDxidWlzQGtkZS5vcmc+Cisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgRGlyayBTY2h1bHplIDxrcml0QHdlYmtpdC5vcmc+CisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0
IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAo
YXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBp
cyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0
IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkg
b2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v
cmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMg
bGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICog
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCisKKyNp
bmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKKyNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCisj
aW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K1NWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8oKQorICAgIDog
bV9hbGlnbihTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRCkKKyAgICAsIG1fbWVldE9y
U2xpY2UoU1ZHX01FRVRPUlNMSUNFX01FRVQpCit7Cit9CisKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OnNldEFsaWduKHVuc2lnbmVkIHNob3J0IGFsaWduKQorewor
ICAgIGlmIChhbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOIHx8IGFsaWdu
ID4gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNQVgpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBOT1RfU1VQUE9SVEVEX0VSUiB9OworCisgICAgbV9hbGlnbiA9IHN0YXRpY19jYXN0
PFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9UeXBlPihhbGlnbik7CisgICAgcmV0dXJuIHsgfTsKK30K
KworRXhjZXB0aW9uT3I8dm9pZD4gU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6c2V0TWVldE9yU2xp
Y2UodW5zaWduZWQgc2hvcnQgbWVldE9yU2xpY2UpCit7CisgICAgaWYgKG1lZXRPclNsaWNlID09
IFNWR19NRUVUT1JTTElDRV9VTktOT1dOIHx8IG1lZXRPclNsaWNlID4gU1ZHX01FRVRPUlNMSUNF
X1NMSUNFKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NVUFBPUlRFRF9FUlIgfTsK
KworICAgIG1fbWVldE9yU2xpY2UgPSBzdGF0aWNfY2FzdDxTVkdNZWV0T3JTbGljZVR5cGU+KG1l
ZXRPclNsaWNlKTsKKyAgICByZXR1cm4geyB9OworfQorCit2b2lkIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW86OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCit7CisgICAgYXV0byB1cGNvbnZlcnRl
ZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENoYXJhY3RlcnMoKTsK
KyAgICBjb25zdCBVQ2hhciogYmVnaW4gPSB1cGNvbnZlcnRlZENoYXJhY3RlcnM7CisgICAgcGFy
c2VJbnRlcm5hbChiZWdpbiwgYmVnaW4gKyB2YWx1ZS5sZW5ndGgoKSwgdHJ1ZSk7Cit9CisKK2Jv
b2wgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2UoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0s
IGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpCit7CisgICAgcmV0dXJuIHBhcnNlSW50
ZXJuYWwoY3VyclBhcmFtLCBlbmQsIHZhbGlkYXRlKTsKK30KKworYm9vbCBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvOjpwYXJzZUludGVybmFsKGNvbnN0IFVDaGFyKiYgY3VyclBhcmFtLCBjb25zdCBV
Q2hhciogZW5kLCBib29sIHZhbGlkYXRlKQoreworICAgIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9U
eXBlIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ7CisgICAgU1ZHTWVl
dE9yU2xpY2VUeXBlIG1lZXRPclNsaWNlID0gU1ZHX01FRVRPUlNMSUNFX01FRVQ7CisKKyAgICBt
X2FsaWduID0gYWxpZ247CisgICAgbV9tZWV0T3JTbGljZSA9IG1lZXRPclNsaWNlOworCisgICAg
aWYgKCFza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyclBhcmFtLCBlbmQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBpZiAoKmN1cnJQYXJhbSA9PSAnZCcpIHsKKyAgICAgICAgaWYgKCFz
a2lwU3RyaW5nKGN1cnJQYXJhbSwgZW5kLCAiZGVmZXIiKSkgeworICAgICAgICAgICAgTE9HX0VS
Uk9SKCJTa2lwcGVkIHRvIHBhcnNlIGV4Y2VwdCBmb3IgKmRlZmVyKiB2YWx1ZS4iKTsKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZJWE1FOiBXZSBq
dXN0IGlnbm9yZSB0aGUgImRlZmVyIiBoZXJlLgorICAgICAgICBpZiAoY3VyclBhcmFtID09IGVu
ZCkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgIGlmICghc2tpcE9wdGlvbmFs
U1ZHU3BhY2VzKGN1cnJQYXJhbSwgZW5kKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKKyAgICBpZiAoKmN1cnJQYXJhbSA9PSAnbicpIHsKKyAgICAgICAgaWYgKCFza2lwU3Ry
aW5nKGN1cnJQYXJhbSwgZW5kLCAibm9uZSIpKSB7CisgICAgICAgICAgICBMT0dfRVJST1IoIlNr
aXBwZWQgdG8gcGFyc2UgZXhjZXB0IGZvciAqbm9uZSogdmFsdWUuIik7CisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19OT05FOworICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyclBhcmFtLCBl
bmQpOworICAgIH0gZWxzZSBpZiAoKmN1cnJQYXJhbSA9PSAneCcpIHsKKyAgICAgICAgaWYgKChl
bmQgLSBjdXJyUGFyYW0pIDwgOCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
aWYgKGN1cnJQYXJhbVsxXSAhPSAnTScgfHwgY3VyclBhcmFtWzRdICE9ICdZJyB8fCBjdXJyUGFy
YW1bNV0gIT0gJ00nKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICBpZiAoY3Vy
clBhcmFtWzJdID09ICdpJykgeworICAgICAgICAgICAgaWYgKGN1cnJQYXJhbVszXSA9PSAnbicp
IHsKKyAgICAgICAgICAgICAgICBpZiAoY3VyclBhcmFtWzZdID09ICdpJykgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoY3VyclBhcmFtWzddID09ICduJykKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGFsaWduID0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNSU47CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UgaWYgKGN1cnJQYXJhbVs3XSA9PSAnZCcpCisgICAgICAgICAgICAgICAg
ICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyUGFyYW1bNl0gPT0gJ2EnICYmIGN1cnJQ
YXJhbVs3XSA9PSAneCcpCisgICAgICAgICAgICAgICAgICAgIGFsaWduID0gU1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1JTllNQVg7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyUGFyYW1b
M10gPT0gJ2QnKSB7CisgICAgICAgICAgICAgICAgaWYgKGN1cnJQYXJhbVs2XSA9PSAnaScpIHsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJQYXJhbVs3XSA9PSAnbicpCisgICAgICAgICAg
ICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlOOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyUGFyYW1bN10gPT0gJ2QnKQorICAgICAg
ICAgICAgICAgICAgICAgICAgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1J
RDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyclBhcmFtWzZdID09ICdh
JyAmJiBjdXJyUGFyYW1bN10gPT0gJ3gnKQorICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOworICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfSBlbHNlCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGN1cnJQYXJhbVsy
XSA9PSAnYScgJiYgY3VyclBhcmFtWzNdID09ICd4JykgeworICAgICAgICAgICAgaWYgKGN1cnJQ
YXJhbVs2XSA9PSAnaScpIHsKKyAgICAgICAgICAgICAgICBpZiAoY3VyclBhcmFtWzddID09ICdu
JykKKyAgICAgICAgICAgICAgICAgICAgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUFYWU1JTjsKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChjdXJyUGFyYW1bN10gPT0gJ2QnKQor
ICAgICAgICAgICAgICAgICAgICBhbGlnbiA9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZ
TUlEOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICAgICAgfSBlbHNlIGlmIChjdXJyUGFyYW1bNl0gPT0gJ2EnICYmIGN1cnJQ
YXJhbVs3XSA9PSAneCcpCisgICAgICAgICAgICAgICAgYWxpZ24gPSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUFYWU1BWDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICBjdXJyUGFyYW0gKz0gODsKKyAgICAgICAgc2tpcE9wdGlvbmFsU1ZHU3BhY2VzKGN1cnJQ
YXJhbSwgZW5kKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYg
KGN1cnJQYXJhbSA8IGVuZCkgeworICAgICAgICBpZiAoKmN1cnJQYXJhbSA9PSAnbScpIHsKKyAg
ICAgICAgICAgIGlmICghc2tpcFN0cmluZyhjdXJyUGFyYW0sIGVuZCwgIm1lZXQiKSkgeworICAg
ICAgICAgICAgICAgIExPR19FUlJPUigiU2tpcHBlZCB0byBwYXJzZSBleGNlcHQgZm9yICptZWV0
KiBvciAqc2xpY2UqIHZhbHVlLiIpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIHNraXBPcHRpb25hbFNWR1NwYWNlcyhjdXJyUGFyYW0s
IGVuZCk7CisgICAgICAgIH0gZWxzZSBpZiAoKmN1cnJQYXJhbSA9PSAncycpIHsKKyAgICAgICAg
ICAgIGlmICghc2tpcFN0cmluZyhjdXJyUGFyYW0sIGVuZCwgInNsaWNlIikpIHsKKyAgICAgICAg
ICAgICAgICBMT0dfRVJST1IoIlNraXBwZWQgdG8gcGFyc2UgZXhjZXB0IGZvciAqbWVldCogb3Ig
KnNsaWNlKiB2YWx1ZS4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBza2lwT3B0aW9uYWxTVkdTcGFjZXMoY3VyclBhcmFtLCBlbmQp
OworICAgICAgICAgICAgaWYgKGFsaWduICE9IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUp
CisgICAgICAgICAgICAgICAgbWVldE9yU2xpY2UgPSBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0U7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZW5kICE9IGN1cnJQYXJhbSAmJiB2YWxpZGF0ZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9hbGlnbiA9IGFsaWduOworICAgIG1fbWVl
dE9yU2xpY2UgPSBtZWV0T3JTbGljZTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9ybVJlY3QoRmxvYXRSZWN0JiBkZXN0UmVjdCwg
RmxvYXRSZWN0JiBzcmNSZWN0KQoreworICAgIGlmIChtX2FsaWduID09IFNWR19QUkVTRVJWRUFT
UEVDVFJBVElPX05PTkUpCisgICAgICAgIHJldHVybjsKKworICAgIEZsb2F0U2l6ZSBpbWFnZVNp
emUgPSBzcmNSZWN0LnNpemUoKTsKKyAgICBmbG9hdCBvcmlnRGVzdFdpZHRoID0gZGVzdFJlY3Qu
d2lkdGgoKTsKKyAgICBmbG9hdCBvcmlnRGVzdEhlaWdodCA9IGRlc3RSZWN0LmhlaWdodCgpOwor
ICAgIHN3aXRjaCAobV9tZWV0T3JTbGljZSkgeworICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzo6U1ZHX01FRVRPUlNMSUNFX1VOS05PV046CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX01FRVRPUlNMSUNFX01FRVQ6IHsKKyAgICAgICAg
ZmxvYXQgd2lkdGhUb0hlaWdodE11bHRpcGxpZXIgPSBzcmNSZWN0LmhlaWdodCgpIC8gc3JjUmVj
dC53aWR0aCgpOworICAgICAgICBpZiAob3JpZ0Rlc3RIZWlnaHQgPiBvcmlnRGVzdFdpZHRoICog
d2lkdGhUb0hlaWdodE11bHRpcGxpZXIpIHsKKyAgICAgICAgICAgIGRlc3RSZWN0LnNldEhlaWdo
dChvcmlnRGVzdFdpZHRoICogd2lkdGhUb0hlaWdodE11bHRpcGxpZXIpOworICAgICAgICAgICAg
c3dpdGNoIChtX2FsaWduKSB7CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEOgorICAgICAgICAgICAgY2FzZSBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoK
KyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQ
RUNUUkFUSU9fWE1BWFlNSUQ6CisgICAgICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShkZXN0UmVj
dC55KCkgKyBvcmlnRGVzdEhlaWdodCAvIDIgLSBkZXN0UmVjdC5oZWlnaHQoKSAvIDIpOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDoKKyAgICAgICAgICAgIGNhc2Ug
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6
CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFT
UEVDVFJBVElPX1hNQVhZTUFYOgorICAgICAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoZGVzdFJl
Y3QueSgpICsgb3JpZ0Rlc3RIZWlnaHQgLSBkZXN0UmVjdC5oZWlnaHQoKSk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChvcmlnRGVzdFdpZHRoID4g
b3JpZ0Rlc3RIZWlnaHQgLyB3aWR0aFRvSGVpZ2h0TXVsdGlwbGllcikgeworICAgICAgICAgICAg
ZGVzdFJlY3Quc2V0V2lkdGgob3JpZ0Rlc3RIZWlnaHQgLyB3aWR0aFRvSGVpZ2h0TXVsdGlwbGll
cik7CisgICAgICAgICAgICBzd2l0Y2ggKG1fYWxpZ24pIHsKKyAgICAgICAgICAgIGNhc2UgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSU46Cisg
ICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSURZTUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
OjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWDoKKyAgICAgICAgICAgICAgICBkZXN0
UmVjdC5zZXRYKGRlc3RSZWN0LngoKSArIG9yaWdEZXN0V2lkdGggLyAyIC0gZGVzdFJlY3Qud2lk
dGgoKSAvIDIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoKKyAg
ICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNU
UkFUSU9fWE1BWFlNSUQ6CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86
OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgorICAgICAgICAgICAgICAgIGRlc3RS
ZWN0LnNldFgoZGVzdFJlY3QueCgpICsgb3JpZ0Rlc3RXaWR0aCAtIGRlc3RSZWN0LndpZHRoKCkp
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsK
KyAgICB9CisgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfTUVFVE9SU0xJQ0Vf
U0xJQ0U6IHsKKyAgICAgICAgZmxvYXQgd2lkdGhUb0hlaWdodE11bHRpcGxpZXIgPSBzcmNSZWN0
LmhlaWdodCgpIC8gc3JjUmVjdC53aWR0aCgpOworICAgICAgICAvLyBpZiB0aGUgZGVzdGluYXRp
b24gaGVpZ2h0IGlzIGxlc3MgdGhhbiB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZSB3ZSdsbCBiZSBk
cmF3aW5nCisgICAgICAgIGlmIChvcmlnRGVzdEhlaWdodCA8IG9yaWdEZXN0V2lkdGggKiB3aWR0
aFRvSGVpZ2h0TXVsdGlwbGllcikgeworICAgICAgICAgICAgZmxvYXQgZGVzdFRvU3JjTXVsdGlw
bGllciA9IHNyY1JlY3Qud2lkdGgoKSAvIGRlc3RSZWN0LndpZHRoKCk7CisgICAgICAgICAgICBz
cmNSZWN0LnNldEhlaWdodChkZXN0UmVjdC5oZWlnaHQoKSAqIGRlc3RUb1NyY011bHRpcGxpZXIp
OworICAgICAgICAgICAgc3dpdGNoIChtX2FsaWduKSB7CisgICAgICAgICAgICBjYXNlIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEOgorICAg
ICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUlEWU1JRDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6CisgICAgICAgICAgICAgICAgc3JjUmVj
dC5zZXRZKHNyY1JlY3QueSgpICsgaW1hZ2VTaXplLmhlaWdodCgpIC8gMiAtIHNyY1JlY3QuaGVp
Z2h0KCkgLyAyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVg6Cisg
ICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNSURZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
OjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWDoKKyAgICAgICAgICAgICAgICBzcmNS
ZWN0LnNldFkoc3JjUmVjdC55KCkgKyBpbWFnZVNpemUuaGVpZ2h0KCkgLSBzcmNSZWN0LmhlaWdo
dCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8g
aWYgdGhlIGRlc3RpbmF0aW9uIHdpZHRoIGlzIGxlc3MgdGhhbiB0aGUgd2lkdGggb2YgdGhlIGlt
YWdlIHdlJ2xsIGJlIGRyYXdpbmcKKyAgICAgICAgaWYgKG9yaWdEZXN0V2lkdGggPCBvcmlnRGVz
dEhlaWdodCAvIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVyKSB7CisgICAgICAgICAgICBmbG9hdCBk
ZXN0VG9TcmNNdWx0aXBsaWVyID0gc3JjUmVjdC5oZWlnaHQoKSAvIGRlc3RSZWN0LmhlaWdodCgp
OworICAgICAgICAgICAgc3JjUmVjdC5zZXRXaWR0aChkZXN0UmVjdC53aWR0aCgpICogZGVzdFRv
U3JjTXVsdGlwbGllcik7CisgICAgICAgICAgICBzd2l0Y2ggKG1fYWxpZ24pIHsKKyAgICAgICAg
ICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1JRFlNSU46CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWDoKKyAgICAgICAg
ICAgICAgICBzcmNSZWN0LnNldFgoc3JjUmVjdC54KCkgKyBpbWFnZVNpemUud2lkdGgoKSAvIDIg
LSBzcmNSZWN0LndpZHRoKCkgLyAyKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1BWFlNSU46CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1BWDoKKyAgICAgICAg
ICAgICAgICBzcmNSZWN0LnNldFgoc3JjUmVjdC54KCkgKyBpbWFnZVNpemUud2lkdGgoKSAtIHNy
Y1JlY3Qud2lkdGgoKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9Cisg
ICAgICAgIGJyZWFrOworICAgIH0KKyAgICB9Cit9CisKK0FmZmluZVRyYW5zZm9ybSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOjpnZXRDVE0oZmxvYXQgbG9naWNhbFgsIGZsb2F0IGxvZ2ljYWxZLCBm
bG9hdCBsb2dpY2FsV2lkdGgsIGZsb2F0IGxvZ2ljYWxIZWlnaHQsIGZsb2F0IHBoeXNpY2FsV2lk
dGgsIGZsb2F0IHBoeXNpY2FsSGVpZ2h0KSBjb25zdAoreworICAgIEFmZmluZVRyYW5zZm9ybSB0
cmFuc2Zvcm07CisgICAgaWYgKCFsb2dpY2FsV2lkdGggfHwgIWxvZ2ljYWxIZWlnaHQgfHwgIXBo
eXNpY2FsV2lkdGggfHwgIXBoeXNpY2FsSGVpZ2h0KSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4gdHJhbnNmb3JtOworICAgIH0KKworICAgIGlmIChtX2Fs
aWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV04pCisgICAgICAgIHJldHVybiB0
cmFuc2Zvcm07CisKKyAgICBkb3VibGUgZXh0ZW5kZWRMb2dpY2FsWCA9IGxvZ2ljYWxYOworICAg
IGRvdWJsZSBleHRlbmRlZExvZ2ljYWxZID0gbG9naWNhbFk7CisgICAgZG91YmxlIGV4dGVuZGVk
TG9naWNhbFdpZHRoID0gbG9naWNhbFdpZHRoOworICAgIGRvdWJsZSBleHRlbmRlZExvZ2ljYWxI
ZWlnaHQgPSBsb2dpY2FsSGVpZ2h0OworICAgIGRvdWJsZSBleHRlbmRlZFBoeXNpY2FsV2lkdGgg
PSBwaHlzaWNhbFdpZHRoOworICAgIGRvdWJsZSBleHRlbmRlZFBoeXNpY2FsSGVpZ2h0ID0gcGh5
c2ljYWxIZWlnaHQ7CisgICAgZG91YmxlIGxvZ2ljYWxSYXRpbyA9IGV4dGVuZGVkTG9naWNhbFdp
ZHRoIC8gZXh0ZW5kZWRMb2dpY2FsSGVpZ2h0OworICAgIGRvdWJsZSBwaHlzaWNhbFJhdGlvID0g
ZXh0ZW5kZWRQaHlzaWNhbFdpZHRoIC8gZXh0ZW5kZWRQaHlzaWNhbEhlaWdodDsKKworICAgIGlm
IChtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkUpIHsKKyAgICAgICAgdHJh
bnNmb3JtLnNjYWxlTm9uVW5pZm9ybShleHRlbmRlZFBoeXNpY2FsV2lkdGggLyBleHRlbmRlZExv
Z2ljYWxXaWR0aCwgZXh0ZW5kZWRQaHlzaWNhbEhlaWdodCAvIGV4dGVuZGVkTG9naWNhbEhlaWdo
dCk7CisgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9naWNhbFgsIC1leHRl
bmRlZExvZ2ljYWxZKTsKKyAgICAgICAgcmV0dXJuIHRyYW5zZm9ybTsKKyAgICB9CisKKyAgICBp
ZiAoKGxvZ2ljYWxSYXRpbyA8IHBoeXNpY2FsUmF0aW8gJiYgKG1fbWVldE9yU2xpY2UgPT0gU1ZH
X01FRVRPUlNMSUNFX01FRVQpKSB8fCAobG9naWNhbFJhdGlvID49IHBoeXNpY2FsUmF0aW8gJiYg
KG1fbWVldE9yU2xpY2UgPT0gU1ZHX01FRVRPUlNMSUNFX1NMSUNFKSkpIHsKKyAgICAgICAgdHJh
bnNmb3JtLnNjYWxlTm9uVW5pZm9ybShleHRlbmRlZFBoeXNpY2FsSGVpZ2h0IC8gZXh0ZW5kZWRM
b2dpY2FsSGVpZ2h0LCBleHRlbmRlZFBoeXNpY2FsSGVpZ2h0IC8gZXh0ZW5kZWRMb2dpY2FsSGVp
Z2h0KTsKKworICAgICAgICBpZiAobV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19Y
TUlOWU1JTiB8fCBtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUlEIHx8
IG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllNQVgpCisgICAgICAgICAg
ICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1leHRlbmRlZExvZ2ljYWxYLCAtZXh0ZW5kZWRMb2dpY2Fs
WSk7CisgICAgICAgIGVsc2UgaWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1JRFlNSU4gfHwgbV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRCB8
fCBtX2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYKQorICAgICAgICAg
ICAgdHJhbnNmb3JtLnRyYW5zbGF0ZSgtZXh0ZW5kZWRMb2dpY2FsWCAtIChleHRlbmRlZExvZ2lj
YWxXaWR0aCAtIGV4dGVuZGVkUGh5c2ljYWxXaWR0aCAqIGV4dGVuZGVkTG9naWNhbEhlaWdodCAv
IGV4dGVuZGVkUGh5c2ljYWxIZWlnaHQpIC8gMiwgLWV4dGVuZGVkTG9naWNhbFkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKC1leHRlbmRlZExvZ2ljYWxY
IC0gKGV4dGVuZGVkTG9naWNhbFdpZHRoIC0gZXh0ZW5kZWRQaHlzaWNhbFdpZHRoICogZXh0ZW5k
ZWRMb2dpY2FsSGVpZ2h0IC8gZXh0ZW5kZWRQaHlzaWNhbEhlaWdodCksIC1leHRlbmRlZExvZ2lj
YWxZKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cmFuc2Zvcm07CisgICAgfQorCisgICAg
dHJhbnNmb3JtLnNjYWxlTm9uVW5pZm9ybShleHRlbmRlZFBoeXNpY2FsV2lkdGggLyBleHRlbmRl
ZExvZ2ljYWxXaWR0aCwgZXh0ZW5kZWRQaHlzaWNhbFdpZHRoIC8gZXh0ZW5kZWRMb2dpY2FsV2lk
dGgpOworCisgICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JTllN
SU4gfHwgbV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTiB8fCBtX2Fs
aWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOKQorICAgICAgICB0cmFuc2Zv
cm0udHJhbnNsYXRlKC1leHRlbmRlZExvZ2ljYWxYLCAtZXh0ZW5kZWRMb2dpY2FsWSk7CisgICAg
ZWxzZSBpZiAobV9hbGlnbiA9PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1JRCB8fCBt
X2FsaWduID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEIHx8IG1fYWxpZ24gPT0g
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQpCisgICAgICAgIHRyYW5zZm9ybS50cmFu
c2xhdGUoLWV4dGVuZGVkTG9naWNhbFgsIC1leHRlbmRlZExvZ2ljYWxZIC0gKGV4dGVuZGVkTG9n
aWNhbEhlaWdodCAtIGV4dGVuZGVkUGh5c2ljYWxIZWlnaHQgKiBleHRlbmRlZExvZ2ljYWxXaWR0
aCAvIGV4dGVuZGVkUGh5c2ljYWxXaWR0aCkgLyAyKTsKKyAgICBlbHNlCisgICAgICAgIHRyYW5z
Zm9ybS50cmFuc2xhdGUoLWV4dGVuZGVkTG9naWNhbFgsIC1leHRlbmRlZExvZ2ljYWxZIC0gKGV4
dGVuZGVkTG9naWNhbEhlaWdodCAtIGV4dGVuZGVkUGh5c2ljYWxIZWlnaHQgKiBleHRlbmRlZExv
Z2ljYWxXaWR0aCAvIGV4dGVuZGVkUGh5c2ljYWxXaWR0aCkpOworCisgICAgcmV0dXJuIHRyYW5z
Zm9ybTsKK30KKworU3RyaW5nIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnZhbHVlQXNTdHJpbmco
KSBjb25zdAoreworICAgIFN0cmluZyBhbGlnblR5cGU7CisKKyAgICBzd2l0Y2ggKG1fYWxpZ24p
IHsKKyAgICBjYXNlIFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX05PTkU6CisgICAgICAgIGFsaWdu
VHlwZSA9ICJub25lIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUlOWU1JTjoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNaW5ZTWluIjsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JTjoKKyAg
ICAgICAgYWxpZ25UeXBlID0gInhNaWRZTWluIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
VkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoKKyAgICAgICAgYWxpZ25UeXBlID0gInhN
YXhZTWluIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJ
T19YTUlOWU1JRDoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNaW5ZTWlkIjsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKKyAgICAgICAg
YWxpZ25UeXBlID0gInhNaWRZTWlkIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNYXhZTWlk
IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlO
WU1BWDoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNaW5ZTWF4IjsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1BWDoKKyAgICAgICAgYWxpZ25U
eXBlID0gInhNaWRZTWF4IjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUFYWU1BWDoKKyAgICAgICAgYWxpZ25UeXBlID0gInhNYXhZTWF4IjsKKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19VTktOT1dOOgor
ICAgICAgICBhbGlnblR5cGUgPSAidW5rbm93biI7CisgICAgICAgIGJyZWFrOworICAgIH07CisK
KyAgICBzd2l0Y2ggKG1fbWVldE9yU2xpY2UpIHsKKyAgICBkZWZhdWx0OgorICAgIGNhc2UgU1ZH
X01FRVRPUlNMSUNFX1VOS05PV046CisgICAgICAgIHJldHVybiBhbGlnblR5cGU7CisgICAgY2Fz
ZSBTVkdfTUVFVE9SU0xJQ0VfTUVFVDoKKyAgICAgICAgcmV0dXJuIGFsaWduVHlwZSArICIgbWVl
dCI7CisgICAgY2FzZSBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0U6CisgICAgICAgIHJldHVybiBhbGln
blR5cGUgKyAiIHNsaWNlIjsKKyAgICB9Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuY3BwCShyZXZpc2lvbiAyMDg1
NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAsNyArMjAsNyBAQAogICovCiAKICNpbmNsdWRlICJjb25m
aWcuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvLmgiCisjaW5jbHVkZSAiU1ZH
UHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgiCiAKICNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0u
aCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlLmgiCkBAIC0zMCwxMyArMzAsMTMgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvKCkKK1NWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlKCkKICAgICA6IG1fYWxpZ24oU1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1J
RFlNSUQpCiAgICAgLCBtX21lZXRPclNsaWNlKFNWR19NRUVUT1JTTElDRV9NRUVUKQogewogfQog
Ci1FeGNlcHRpb25Pcjx2b2lkPiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpzZXRBbGlnbih1bnNp
Z25lZCBzaG9ydCBhbGlnbikKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR1ByZXNlcnZlQXNwZWN0UmF0
aW9WYWx1ZTo6c2V0QWxpZ24odW5zaWduZWQgc2hvcnQgYWxpZ24pCiB7CiAgICAgaWYgKGFsaWdu
ID09IFNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1VOS05PV04gfHwgYWxpZ24gPiBTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19YTUFYWU1BWCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IE5PVF9T
VVBQT1JURURfRVJSIH07CkBAIC00NSw3ICs0NSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8KICAgICByZXR1cm4geyB9OwogfQogCi1FeGNlcHRpb25Pcjx2b2lk
PiBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpzZXRNZWV0T3JTbGljZSh1bnNpZ25lZCBzaG9ydCBt
ZWV0T3JTbGljZSkKK0V4Y2VwdGlvbk9yPHZvaWQ+IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZTo6c2V0TWVldE9yU2xpY2UodW5zaWduZWQgc2hvcnQgbWVldE9yU2xpY2UpCiB7CiAgICAgaWYg
KG1lZXRPclNsaWNlID09IFNWR19NRUVUT1JTTElDRV9VTktOT1dOIHx8IG1lZXRPclNsaWNlID4g
U1ZHX01FRVRPUlNMSUNFX1NMSUNFKQogICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgTk9UX1NV
UFBPUlRFRF9FUlIgfTsKQEAgLTU0LDE5ICs1NCwxOSBAQCBFeGNlcHRpb25Pcjx2b2lkPiBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvCiAgICAgcmV0dXJuIHsgfTsKIH0KIAotdm9pZCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpwYXJzZShjb25zdCBTdHJpbmcmIHZhbHVlKQordm9pZCBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvVmFsdWU6OnBhcnNlKGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgYXV0
byB1cGNvbnZlcnRlZENoYXJhY3RlcnMgPSBTdHJpbmdWaWV3KHZhbHVlKS51cGNvbnZlcnRlZENo
YXJhY3RlcnMoKTsKICAgICBjb25zdCBVQ2hhciogYmVnaW4gPSB1cGNvbnZlcnRlZENoYXJhY3Rl
cnM7CiAgICAgcGFyc2VJbnRlcm5hbChiZWdpbiwgYmVnaW4gKyB2YWx1ZS5sZW5ndGgoKSwgdHJ1
ZSk7CiB9CiAKLWJvb2wgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6cGFyc2UoY29uc3QgVUNoYXIq
JiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpCitib29sIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6cGFyc2UoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNv
bnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpCiB7CiAgICAgcmV0dXJuIHBhcnNlSW50ZXJu
YWwoY3VyclBhcmFtLCBlbmQsIHZhbGlkYXRlKTsKIH0KIAotYm9vbCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvOjpwYXJzZUludGVybmFsKGNvbnN0IFVDaGFyKiYgY3VyclBhcmFtLCBjb25zdCBVQ2hh
ciogZW5kLCBib29sIHZhbGlkYXRlKQorYm9vbCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6
OnBhcnNlSW50ZXJuYWwoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0sIGNvbnN0IFVDaGFyKiBlbmQs
IGJvb2wgdmFsaWRhdGUpCiB7CiAgICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1R5cGUgYWxpZ24g
PSBTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDsKICAgICBTVkdNZWV0T3JTbGljZVR5
cGUgbWVldE9yU2xpY2UgPSBTVkdfTUVFVE9SU0xJQ0VfTUVFVDsKQEAgLTE3Niw3ICsxNzYsNyBA
QCBib29sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnBhcnNlSW50ZXJuCiAgICAgcmV0dXJuIHRy
dWU7CiB9CiAKLXZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6dHJhbnNmb3JtUmVjdChGbG9h
dFJlY3QmIGRlc3RSZWN0LCBGbG9hdFJlY3QmIHNyY1JlY3QpCit2b2lkIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZTo6dHJhbnNmb3JtUmVjdChGbG9hdFJlY3QmIGRlc3RSZWN0LCBGbG9hdFJl
Y3QmIHNyY1JlY3QpCiB7CiAgICAgaWYgKG1fYWxpZ24gPT0gU1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fTk9ORSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTg1LDIxICsxODUsMjEgQEAgdm9pZCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvOjp0cmFuc2Zvcm1SZQogICAgIGZsb2F0IG9yaWdEZXN0V2lkdGgg
PSBkZXN0UmVjdC53aWR0aCgpOwogICAgIGZsb2F0IG9yaWdEZXN0SGVpZ2h0ID0gZGVzdFJlY3Qu
aGVpZ2h0KCk7CiAgICAgc3dpdGNoIChtX21lZXRPclNsaWNlKSB7Ci0gICAgY2FzZSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfTUVFVE9SU0xJQ0VfVU5LTk9XTjoKKyAgICBjYXNlIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX01FRVRPUlNMSUNFX1VOS05PV046CiAgICAgICAg
IGJyZWFrOwotICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX01FRVRPUlNMSUNF
X01FRVQ6IHsKKyAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX01FRVRP
UlNMSUNFX01FRVQ6IHsKICAgICAgICAgZmxvYXQgd2lkdGhUb0hlaWdodE11bHRpcGxpZXIgPSBz
cmNSZWN0LmhlaWdodCgpIC8gc3JjUmVjdC53aWR0aCgpOwogICAgICAgICBpZiAob3JpZ0Rlc3RI
ZWlnaHQgPiBvcmlnRGVzdFdpZHRoICogd2lkdGhUb0hlaWdodE11bHRpcGxpZXIpIHsKICAgICAg
ICAgICAgIGRlc3RSZWN0LnNldEhlaWdodChvcmlnRGVzdFdpZHRoICogd2lkdGhUb0hlaWdodE11
bHRpcGxpZXIpOwogICAgICAgICAgICAgc3dpdGNoIChtX2FsaWduKSB7Ci0gICAgICAgICAgICBj
YXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5Z
TUlEOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VS
VkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6CisgICAgICAgICAgICBj
YXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1JTllNSUQ6CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6
U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ6CisgICAgICAgICAgICBjYXNlIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6
CiAgICAgICAgICAgICAgICAgZGVzdFJlY3Quc2V0WShkZXN0UmVjdC55KCkgKyBvcmlnRGVzdEhl
aWdodCAvIDIgLSBkZXN0UmVjdC5oZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVB
U1BFQ1RSQVRJT19YTUlOWU1BWDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6Ci0gICAgICAgICAgICBjYXNl
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFY
OgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVT
RVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgorICAgICAg
ICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVD
VFJBVElPX1hNQVhZTUFYOgogICAgICAgICAgICAgICAgIGRlc3RSZWN0LnNldFkoZGVzdFJlY3Qu
eSgpICsgb3JpZ0Rlc3RIZWlnaHQgLSBkZXN0UmVjdC5oZWlnaHQoKSk7CiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgpAQCAtMjA5LDE0ICsyMDksMTQgQEAgdm9p
ZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjp0cmFuc2Zvcm1SZQogICAgICAgICBpZiAob3JpZ0Rl
c3RXaWR0aCA+IG9yaWdEZXN0SGVpZ2h0IC8gd2lkdGhUb0hlaWdodE11bHRpcGxpZXIpIHsKICAg
ICAgICAgICAgIGRlc3RSZWN0LnNldFdpZHRoKG9yaWdEZXN0SGVpZ2h0IC8gd2lkdGhUb0hlaWdo
dE11bHRpcGxpZXIpOwogICAgICAgICAgICAgc3dpdGNoIChtX2FsaWduKSB7Ci0gICAgICAgICAg
ICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
SURZTUlOOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6CisgICAgICAgICAg
ICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFU
SU9fWE1JRFlNSU46CisgICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ6CisgICAgICAgICAgICBjYXNlIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZTo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlN
QVg6CiAgICAgICAgICAgICAgICAgZGVzdFJlY3Quc2V0WChkZXN0UmVjdC54KCkgKyBvcmlnRGVz
dFdpZHRoIC8gMiAtIGRlc3RSZWN0LndpZHRoKCkgLyAyKTsKICAgICAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZF
QVNQRUNUUkFUSU9fWE1BWFlNSU46Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlEOgotICAgICAgICAgICAgY2Fz
ZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1B
WDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKKyAgICAg
ICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUFYWU1BWDoKICAgICAgICAgICAgICAgICBkZXN0UmVjdC5zZXRYKGRlc3RSZWN0
LngoKSArIG9yaWdEZXN0V2lkdGggLSBkZXN0UmVjdC53aWR0aCgpKTsKICAgICAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0yMjUsMjEgKzIyNSwyMSBAQCB2b2lk
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OnRyYW5zZm9ybVJlCiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CiAgICAgfQotICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX01FRVRP
UlNMSUNFX1NMSUNFOiB7CisgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNW
R19NRUVUT1JTTElDRV9TTElDRTogewogICAgICAgICBmbG9hdCB3aWR0aFRvSGVpZ2h0TXVsdGlw
bGllciA9IHNyY1JlY3QuaGVpZ2h0KCkgLyBzcmNSZWN0LndpZHRoKCk7CiAgICAgICAgIC8vIGlm
IHRoZSBkZXN0aW5hdGlvbiBoZWlnaHQgaXMgbGVzcyB0aGFuIHRoZSBoZWlnaHQgb2YgdGhlIGlt
YWdlIHdlJ2xsIGJlIGRyYXdpbmcKICAgICAgICAgaWYgKG9yaWdEZXN0SGVpZ2h0IDwgb3JpZ0Rl
c3RXaWR0aCAqIHdpZHRoVG9IZWlnaHRNdWx0aXBsaWVyKSB7CiAgICAgICAgICAgICBmbG9hdCBk
ZXN0VG9TcmNNdWx0aXBsaWVyID0gc3JjUmVjdC53aWR0aCgpIC8gZGVzdFJlY3Qud2lkdGgoKTsK
ICAgICAgICAgICAgIHNyY1JlY3Quc2V0SGVpZ2h0KGRlc3RSZWN0LmhlaWdodCgpICogZGVzdFRv
U3JjTXVsdGlwbGllcik7CiAgICAgICAgICAgICBzd2l0Y2ggKG1fYWxpZ24pIHsKLSAgICAgICAg
ICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9f
WE1JTllNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JRDoKKyAgICAgICAg
ICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RS
QVRJT19YTUlOWU1JRDoKKyAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1Zh
bHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUlEWU1JRDoKKyAgICAgICAgICAgIGNhc2Ug
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFY
WU1JRDoKICAgICAgICAgICAgICAgICBzcmNSZWN0LnNldFkoc3JjUmVjdC55KCkgKyBpbWFnZVNp
emUuaGVpZ2h0KCkgLyAyIC0gc3JjUmVjdC5oZWlnaHQoKSAvIDIpOwogICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJF
U0VSVkVBU1BFQ1RSQVRJT19YTUlOWU1BWDoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNQVg6Ci0gICAgICAgICAg
ICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hN
QVhZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNW
R19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSU5ZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVz
ZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgor
ICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNQVhZTUFYOgogICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0WShzcmNS
ZWN0LnkoKSArIGltYWdlU2l6ZS5oZWlnaHQoKSAtIHNyY1JlY3QuaGVpZ2h0KCkpOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTI1MSwxNCArMjUxLDE0
IEBAIHZvaWQgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbzo6dHJhbnNmb3JtUmUKICAgICAgICAgICAg
IGZsb2F0IGRlc3RUb1NyY011bHRpcGxpZXIgPSBzcmNSZWN0LmhlaWdodCgpIC8gZGVzdFJlY3Qu
aGVpZ2h0KCk7CiAgICAgICAgICAgICBzcmNSZWN0LnNldFdpZHRoKGRlc3RSZWN0LndpZHRoKCkg
KiBkZXN0VG9TcmNNdWx0aXBsaWVyKTsKICAgICAgICAgICAgIHN3aXRjaCAobV9hbGlnbikgewot
ICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BF
Q1RSQVRJT19YTUlEWU1JTjoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJlc2VydmVBc3BlY3RSYXRp
bzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1JRFlNSUQ6Ci0gICAgICAgICAgICBjYXNlIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUFYOgor
ICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJW
RUFTUEVDVFJBVElPX1hNSURZTUlOOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNSURZTUlEOgorICAgICAgICAg
ICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1hNSURZTUFYOgogICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0WChzcmNSZWN0LngoKSAr
IGltYWdlU2l6ZS53aWR0aCgpIC8gMiAtIHNyY1JlY3Qud2lkdGgoKSAvIDIpOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjpT
VkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19YTUFYWU1JTjoKLSAgICAgICAgICAgIGNhc2UgU1ZHUHJl
c2VydmVBc3BlY3RSYXRpbzo6U1ZHX1BSRVNFUlZFQVNQRUNUUkFUSU9fWE1BWFlNSUQ6Ci0gICAg
ICAgICAgICBjYXNlIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OlNWR19QUkVTRVJWRUFTUEVDVFJB
VElPX1hNQVhZTUFYOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFs
dWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUlOOgorICAgICAgICAgICAgY2FzZSBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19QUkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZ
TUlEOgorICAgICAgICAgICAgY2FzZSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWU6OlNWR19Q
UkVTRVJWRUFTUEVDVFJBVElPX1hNQVhZTUFYOgogICAgICAgICAgICAgICAgIHNyY1JlY3Quc2V0
WChzcmNSZWN0LngoKSArIGltYWdlU2l6ZS53aWR0aCgpIC0gc3JjUmVjdC53aWR0aCgpKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CkBAIC0yNzAsNyArMjcw
LDcgQEAgdm9pZCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvOjp0cmFuc2Zvcm1SZQogICAgIH0KIH0K
IAotQWZmaW5lVHJhbnNmb3JtIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW86OmdldENUTShmbG9hdCBs
b2dpY2FsWCwgZmxvYXQgbG9naWNhbFksIGZsb2F0IGxvZ2ljYWxXaWR0aCwgZmxvYXQgbG9naWNh
bEhlaWdodCwgZmxvYXQgcGh5c2ljYWxXaWR0aCwgZmxvYXQgcGh5c2ljYWxIZWlnaHQpIGNvbnN0
CitBZmZpbmVUcmFuc2Zvcm0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlOjpnZXRDVE0oZmxv
YXQgbG9naWNhbFgsIGZsb2F0IGxvZ2ljYWxZLCBmbG9hdCBsb2dpY2FsV2lkdGgsIGZsb2F0IGxv
Z2ljYWxIZWlnaHQsIGZsb2F0IHBoeXNpY2FsV2lkdGgsIGZsb2F0IHBoeXNpY2FsSGVpZ2h0KSBj
b25zdAogewogICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgaWYgKCFsb2dpY2Fs
V2lkdGggfHwgIWxvZ2ljYWxIZWlnaHQgfHwgIXBoeXNpY2FsV2lkdGggfHwgIXBoeXNpY2FsSGVp
Z2h0KSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgQWZmaW5lVHJhbnNmb3JtIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW86OgogICAgIHJldHVybiB0cmFuc2Zvcm07CiB9CiAKLVN0cmluZyBTVkdQcmVzZXJ2
ZUFzcGVjdFJhdGlvOjp2YWx1ZUFzU3RyaW5nKCkgY29uc3QKK1N0cmluZyBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvVmFsdWU6OnZhbHVlQXNTdHJpbmcoKSBjb25zdAogewogICAgIFN0cmluZyBhbGln
blR5cGU7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3Bl
Y3RSYXRpb1ZhbHVlLmgJKHJldmlzaW9uIDIwODU3NSkJKGZyb20gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaDoyMDg1NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgJKHdvcmtpbmcgY29weSkKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlLmgJKHJldmlz
aW9uIDIwODU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQcmVzZXJ2ZUFzcGVjdFJhdGlv
VmFsdWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiBjbGFzcyBBZmZpbmVUcmFuc2Zvcm07CiBjbGFzcyBGbG9hdFJlY3Q7CiAKLWNsYXNzIFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8geworY2xhc3MgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBlbnVtIFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW9UeXBlIHsKQEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgICAg
ICBTVkdfTUVFVE9SU0xJQ0VfU0xJQ0UgPSAyCiAgICAgfTsKIAotICAgIFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW8oKTsKKyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUoKTsKIAogICAgIEV4
Y2VwdGlvbk9yPHZvaWQ+IHNldEFsaWduKHVuc2lnbmVkIHNob3J0KTsKICAgICB1bnNpZ25lZCBz
aG9ydCBhbGlnbigpIGNvbnN0IHsgcmV0dXJuIG1fYWxpZ247IH0KQEAgLTc1LDkgKzc1LDkgQEAg
cHJpdmF0ZToKICAgICBib29sIHBhcnNlSW50ZXJuYWwoY29uc3QgVUNoYXIqJiBjdXJyUGFyYW0s
IGNvbnN0IFVDaGFyKiBlbmQsIGJvb2wgdmFsaWRhdGUpOwogfTsKIAotdGVtcGxhdGU8PiBzdHJ1
Y3QgU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVBc3BlY3RSYXRpbz4gewotICAgIHN0YXRp
YyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvIGluaXRpYWxWYWx1ZSgpIHsgcmV0dXJuIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8oKTsgfQotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU1ZH
UHJlc2VydmVBc3BlY3RSYXRpbyYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7
IH0KK3RlbXBsYXRlPD4gc3RydWN0IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZT4geworICAgIHN0YXRpYyBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUgaW5p
dGlhbFZhbHVlKCkgeyByZXR1cm4gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlKCk7IH0KKyAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1
ZSYgdHlwZSkgeyByZXR1cm4gdHlwZS52YWx1ZUFzU3RyaW5nKCk7IH0KIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3U3BlYy5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkocmV2aXNp
b24gMjA4NTc1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTE3LDcgKzExNyw3IEBAIFN0cmluZyBTVkdWaWV3U3BlYzo6dmlld0JveFN0
cmluZygpIGNvbnMKIAogU3RyaW5nIFNWR1ZpZXdTcGVjOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvU3Ry
aW5nKCkgY29uc3QKIHsKLSAgICByZXR1cm4gU1ZHUHJvcGVydHlUcmFpdHM8U1ZHUHJlc2VydmVB
c3BlY3RSYXRpbz46OnRvU3RyaW5nKG1fcHJlc2VydmVBc3BlY3RSYXRpbyk7CisgICAgcmV0dXJu
IFNWR1Byb3BlcnR5VHJhaXRzPFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT46OnRvU3RyaW5n
KG1fcHJlc2VydmVBc3BlY3RSYXRpbyk7CiB9CiAKIFNWR0VsZW1lbnQqIFNWR1ZpZXdTcGVjOjp2
aWV3VGFyZ2V0KCkgY29uc3QKQEAgLTE2Myw3ICsxNjMsNyBAQCBSZWY8U1ZHQW5pbWF0ZWRQcm9w
ZXJ0eT4gU1ZHVmlld1NwZWM6OmxvCiB7CiAgICAgQVNTRVJUKG93bmVyVHlwZSk7CiAgICAgQVNT
RVJUKG93bmVyVHlwZS0+bV9jb250ZXh0RWxlbWVudCk7Ci0gICAgcmV0dXJuIFNWR0FuaW1hdGVk
UHJvcGVydHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdFbGVtZW50LCBTVkdBbmltYXRlZFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8+KG93bmVyVHlwZS0+bV9j
b250ZXh0RWxlbWVudCwgcHJlc2VydmVBc3BlY3RSYXRpb1Byb3BlcnR5SW5mbygpLCBvd25lclR5
cGUtPm1fcHJlc2VydmVBc3BlY3RSYXRpbyk7CisgICAgcmV0dXJuIFNWR0FuaW1hdGVkUHJvcGVy
dHk6Omxvb2t1cE9yQ3JlYXRlV3JhcHBlcjxTVkdFbGVtZW50LCBTVkdBbmltYXRlZFByZXNlcnZl
QXNwZWN0UmF0aW8sIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZT4ob3duZXJUeXBlLT5tX2Nv
bnRleHRFbGVtZW50LCBwcmVzZXJ2ZUFzcGVjdFJhdGlvUHJvcGVydHlJbmZvKCksIG93bmVyVHlw
ZS0+bV9wcmVzZXJ2ZUFzcGVjdFJhdGlvKTsKIH0KIAogUmVmPFNWR0FuaW1hdGVkUHJvcGVydHk+
IFNWR1ZpZXdTcGVjOjpsb29rdXBPckNyZWF0ZVRyYW5zZm9ybVdyYXBwZXIoU1ZHVmlld1NwZWMq
IG93bmVyVHlwZSkKQEAgLTE3OCw3ICsxNzgsNyBAQCB2b2lkIFNWR1ZpZXdTcGVjOjpyZXNldCgp
CiAgICAgbV96b29tQW5kUGFuID0gU1ZHWm9vbUFuZFBhbk1hZ25pZnk7CiAgICAgbV90cmFuc2Zv
cm0uY2xlYXIoKTsKICAgICBtX3ZpZXdCb3ggPSBGbG9hdFJlY3QoKTsKLSAgICBtX3ByZXNlcnZl
QXNwZWN0UmF0aW8gPSBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvKCk7CisgICAgbV9wcmVzZXJ2ZUFz
cGVjdFJhdGlvID0gU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlKCk7CiAgICAgbV92aWV3VGFy
Z2V0U3RyaW5nID0gZW1wdHlTdHJpbmcoKTsKIH0KIApAQCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wg
U1ZHVmlld1NwZWM6OnBhcnNlVmlld1NwZWMoY29uc3QgU3QKICAgICAgICAgICAgIGlmIChjdXJy
Vmlld1NwZWMgPj0gZW5kIHx8ICpjdXJyVmlld1NwZWMgIT0gJygnKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIGN1cnJWaWV3U3BlYysrOwotICAgICAgICAgICAg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBwcmVzZXJ2ZUFzcGVjdFJhdGlvOworICAgICAgICAgICAg
U1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIHByZXNlcnZlQXNwZWN0UmF0aW87CiAgICAgICAg
ICAgICBpZiAoIXByZXNlcnZlQXNwZWN0UmF0aW8ucGFyc2UoY3VyclZpZXdTcGVjLCBlbmQsIGZh
bHNlKSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBzZXRQcmVz
ZXJ2ZUFzcGVjdFJhdGlvQmFzZVZhbHVlKHByZXNlcnZlQXNwZWN0UmF0aW8pOwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdTcGVjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZpZXdTcGVjLmgJKHJldmlzaW9uIDIwODU3NSkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3U3BlYy5oCSh3b3JraW5nIGNvcHkpCkBAIC02NCw4ICs2NCw4IEBAIHB1Ymxp
YzoKIAogICAgIC8vIEN1c3RvbSBhbmltYXRlZCAncHJlc2VydmVBc3BlY3RSYXRpbycgcHJvcGVy
dHkuCiAgICAgUmVmUHRyPFNWR0FuaW1hdGVkUHJlc2VydmVBc3BlY3RSYXRpbz4gcHJlc2VydmVB
c3BlY3RSYXRpb0FuaW1hdGVkKCk7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYgcHJlc2Vy
dmVBc3BlY3RSYXRpbygpIHsgcmV0dXJuIG1fcHJlc2VydmVBc3BlY3RSYXRpbzsgfQotICAgIHZv
aWQgc2V0UHJlc2VydmVBc3BlY3RSYXRpb0Jhc2VWYWx1ZShjb25zdCBTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSB7IG1fcHJlc2VydmVBc3BlY3RSYXRpbyA9IHBy
ZXNlcnZlQXNwZWN0UmF0aW87IH0KKyAgICBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHBy
ZXNlcnZlQXNwZWN0UmF0aW8oKSB7IHJldHVybiBtX3ByZXNlcnZlQXNwZWN0UmF0aW87IH0KKyAg
ICB2b2lkIHNldFByZXNlcnZlQXNwZWN0UmF0aW9CYXNlVmFsdWUoY29uc3QgU1ZHUHJlc2VydmVB
c3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKSB7IG1fcHJlc2VydmVBc3BlY3RS
YXRpbyA9IHByZXNlcnZlQXNwZWN0UmF0aW87IH0KIAogcHJpdmF0ZToKICAgICBleHBsaWNpdCBT
VkdWaWV3U3BlYyhTVkdFbGVtZW50Jik7CkBAIC04Niw3ICs4Niw3IEBAIHByaXZhdGU6CiAgICAg
U1ZHWm9vbUFuZFBhblR5cGUgbV96b29tQW5kUGFuIHsgU1ZHWm9vbUFuZFBhbk1hZ25pZnkgfTsK
ICAgICBTVkdUcmFuc2Zvcm1MaXN0IG1fdHJhbnNmb3JtOwogICAgIEZsb2F0UmVjdCBtX3ZpZXdC
b3g7Ci0gICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyBtX3ByZXNlcnZlQXNwZWN0UmF0aW87Cisg
ICAgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlIG1fcHJlc2VydmVBc3BlY3RSYXRpbzsKICAg
ICBTdHJpbmcgbV92aWV3VGFyZ2V0U3RyaW5nOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL1NWR0ltYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCShyZXZpc2lvbiAyMDg1NzUpCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTksNyAr
MzU5LDcgQEAgdm9pZCBTVkdJbWFnZTo6Y29tcHV0ZUludHJpbnNpY0RpbWVuc2lvbgogCiAgICAg
aW50cmluc2ljV2lkdGggPSByb290RWxlbWVudC0+aW50cmluc2ljV2lkdGgoKTsKICAgICBpbnRy
aW5zaWNIZWlnaHQgPSByb290RWxlbWVudC0+aW50cmluc2ljSGVpZ2h0KCk7Ci0gICAgaWYgKHJv
b3RFbGVtZW50LT5wcmVzZXJ2ZUFzcGVjdFJhdGlvKCkuYWxpZ24oKSA9PSBTVkdQcmVzZXJ2ZUFz
cGVjdFJhdGlvOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQorICAgIGlmIChyb290RWxl
bWVudC0+cHJlc2VydmVBc3BlY3RSYXRpbygpLmFsaWduKCkgPT0gU1ZHUHJlc2VydmVBc3BlY3RS
YXRpb1ZhbHVlOjpTVkdfUFJFU0VSVkVBU1BFQ1RSQVRJT19OT05FKQogICAgICAgICByZXR1cm47
CiAKICAgICBpbnRyaW5zaWNSYXRpbyA9IHJvb3RFbGVtZW50LT52aWV3Qm94KCkuc2l6ZSgpOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJ
bWFnZS5jcHAJKHJldmlzaW9uIDIwODU3NSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOSwxNCArMjksMTMg
QEAKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVHJlZUFzVGV4
dC5oIgogI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKLSNpbmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVj
dFJhdGlvLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyaW5nQ29udGV4dC5oIgogI2luY2x1ZGUgIlNW
R1VSSVJlZmVyZW5jZS5oIgogI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1GRUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBSZWZQdHI8SW1hZ2U+
IGltYWdlLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlv
KQorRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZpbHRlciwgUmVmUHRyPEltYWdlPiBpbWFnZSwg
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQog
ICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1faW1hZ2UoaW1hZ2UpCiAgICAgLCBt
X2RvY3VtZW50KG51bGxwdHIpCkBAIC00NCw3ICs0Myw3IEBAIEZFSW1hZ2U6OkZFSW1hZ2UoRmls
dGVyJiBmaWx0ZXIsIFJlZlB0cjwKIHsKIH0KIAotRkVJbWFnZTo6RkVJbWFnZShGaWx0ZXImIGZp
bHRlciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1By
ZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNwZWN0UmF0aW8pCitGRUltYWdlOjpGRUltYWdl
KEZpbHRlciYgZmlsdGVyLCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgaHJlZiwg
Y29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQog
ICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlcikKICAgICAsIG1fZG9jdW1lbnQoJmRvY3VtZW50KQog
ICAgICwgbV9ocmVmKGhyZWYpCkBAIC01MiwxMiArNTEsMTIgQEAgRkVJbWFnZTo6RkVJbWFnZShG
aWx0ZXImIGZpbHRlciwgRG9jdW1lbgogewogfQogCi1SZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3Jl
YXRlV2l0aEltYWdlKEZpbHRlciYgZmlsdGVyLCBSZWZQdHI8SW1hZ2U+IGltYWdlLCBjb25zdCBT
VkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJiBwcmVzZXJ2ZUFzcGVjdFJhdGlvKQorUmVmPEZFSW1hZ2U+
IEZFSW1hZ2U6OmNyZWF0ZVdpdGhJbWFnZShGaWx0ZXImIGZpbHRlciwgUmVmUHRyPEltYWdlPiBp
bWFnZSwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVlJiBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQogewogICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZFSW1hZ2UoZmlsdGVyLCBpbWFnZSwg
cHJlc2VydmVBc3BlY3RSYXRpbykpOwogfQogCi1SZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRl
V2l0aElSSVJlZmVyZW5jZShGaWx0ZXImIGZpbHRlciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25z
dCBTdHJpbmcmIGhyZWYsIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8mIHByZXNlcnZlQXNw
ZWN0UmF0aW8pCitSZWY8RkVJbWFnZT4gRkVJbWFnZTo6Y3JlYXRlV2l0aElSSVJlZmVyZW5jZShG
aWx0ZXImIGZpbHRlciwgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGhyZWYsIGNv
bnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKIHsK
ICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRUltYWdlKGZpbHRlciwgZG9jdW1lbnQsIGhyZWYs
IHByZXNlcnZlQXNwZWN0UmF0aW8pKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9ncmFw
aGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmgJKHJldmlzaW9uIDIwODU3NSkKKysrIFNv
dXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaAkod29ya2luZyBj
b3B5KQpAQCAtMjQsNyArMjQsNyBAQAogI2RlZmluZSBTVkdGRUltYWdlX2gKIAogI2luY2x1ZGUg
IkZpbHRlckVmZmVjdC5oIgotI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKKyNp
bmNsdWRlICJTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUuaCIKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0zNCw4ICszNCw4IEBAIGNsYXNzIFJlbmRlckVsZW1lbnQ7CiAKIGNsYXNzIEZF
SW1hZ2UgZmluYWwgOiBwdWJsaWMgRmlsdGVyRWZmZWN0IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPEZFSW1hZ2U+IGNyZWF0ZVdpdGhJbWFnZShGaWx0ZXImLCBSZWZQdHI8SW1hZ2U+LCBjb25z
dCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7Ci0gICAgc3RhdGljIFJlZjxGRUltYWdlPiBjcmVh
dGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRlciYsIERvY3VtZW50JiwgY29uc3QgU3RyaW5nJiwgY29u
c3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbyYpOworICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3Jl
YXRlV2l0aEltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNw
ZWN0UmF0aW9WYWx1ZSYpOworICAgIHN0YXRpYyBSZWY8RkVJbWFnZT4gY3JlYXRlV2l0aElSSVJl
ZmVyZW5jZShGaWx0ZXImLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KSBmaW5hbDsKICAgICB2b2lkIGR1bXAoKSBmaW5hbDsKQEAgLTQ4LDggKzQ4LDggQEAgcHVibGlj
OgogICAgIAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5GRUltYWdlKCkgeyB9Ci0gICAgRkVJbWFn
ZShGaWx0ZXImLCBSZWZQdHI8SW1hZ2U+LCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvJik7
Ci0gICAgRkVJbWFnZShGaWx0ZXImLCBEb2N1bWVudCYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW8mKTsKKyAgICBGRUltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFn
ZT4sIGNvbnN0IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOworICAgIEZFSW1hZ2UoRmls
dGVyJiwgRG9jdW1lbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJh
dGlvVmFsdWUmKTsKICAgICBSZW5kZXJFbGVtZW50KiByZWZlcmVuY2VkUmVuZGVyZXIoKSBjb25z
dDsKIAogICAgIFJlZlB0cjxJbWFnZT4gbV9pbWFnZTsKQEAgLTU3LDcgKzU3LDcgQEAgcHJpdmF0
ZToKICAgICAvLyBtX2RvY3VtZW50IHdpbGwgbmV2ZXIgYmUgYSBkYW5nbGluZyByZWZlcmVuY2Uu
IFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTkyNDMKICAgICBE
b2N1bWVudCogbV9kb2N1bWVudDsKICAgICBTdHJpbmcgbV9ocmVmOwotICAgIFNWR1ByZXNlcnZl
QXNwZWN0UmF0aW8gbV9wcmVzZXJ2ZUFzcGVjdFJhdGlvOworICAgIFNWR1ByZXNlcnZlQXNwZWN0
UmF0aW9WYWx1ZSBtX3ByZXNlcnZlQXNwZWN0UmF0aW87CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>